BlueMagpie-TTS-Demo / tests /test_release_pins.py
Codex
Bind release evidence to verified text variants
ca45ff1
Raw History Blame
60.1 kB
import ast
import hashlib
from pathlib import Path
from types import SimpleNamespace
import numpy as np
from production import (
GenerationChunkSpec,
count_speech_units,
fade_variable_internal_edges,
join_audio_chunks_variable,
match_chunk_rms,
punctuation_pause_seconds,
)
from quality_runtime import LocalIndependentGateEvidence
ROOT = Path(__file__).resolve().parents[1]
FROZEN_SPEAKER_ANCHORS = {
"aaf1a0878e37875382bb0e5c8a3a2ba43be67297": {
"speaker_id": "female_voice",
"speaker_index": 1,
"ui_label": "內建語者 B",
"dtype": "float32",
"shape": (192,),
"sha256": (
"e33e4cb6a741d4d1237aa4ff557f1e663d0a6427dccda1f51e83bc149d4188ca"
),
}
}
def _string_constants(path: Path) -> dict[str, str]:
tree = ast.parse(path.read_text(encoding="utf-8"))
values: dict[str, str] = {}
for node in tree.body:
if not isinstance(node, ast.Assign) or len(node.targets) != 1:
continue
target = node.targets[0]
if isinstance(target, ast.Name) and isinstance(node.value, ast.Constant):
if isinstance(node.value.value, str):
values[target.id] = node.value.value
return values
def _literal_constants(path: Path) -> dict[str, object]:
tree = ast.parse(path.read_text(encoding="utf-8"))
values: dict[str, object] = {}
for node in tree.body:
if not isinstance(node, ast.Assign) or len(node.targets) != 1:
continue
target = node.targets[0]
if not isinstance(target, ast.Name):
continue
try:
values[target.id] = ast.literal_eval(node.value)
except (TypeError, ValueError):
continue
return values
def _isolated_assemble_trajectory_audio():
"""Execute only the production assembly function without loading the model."""
app_path = ROOT / "app.py"
tree = ast.parse(app_path.read_text(encoding="utf-8"))
function = next(
node
for node in tree.body
if isinstance(node, ast.FunctionDef)
and node.name == "_assemble_trajectory_audio"
)
module = ast.Module(
body=[
ast.ImportFrom(
module="__future__",
names=[ast.alias(name="annotations")],
level=0,
),
function,
],
type_ignores=[],
)
ast.fix_missing_locations(module)
constants = _literal_constants(app_path)
namespace = {
"np": np,
"GenerationChunkSpec": GenerationChunkSpec,
"SR": 1_000,
"CHUNK_RMS_MATCH_DB": constants["CHUNK_RMS_MATCH_DB"],
"SEMANTIC_CHUNK_MIN_SILENCE_MS": constants[
"SEMANTIC_CHUNK_MIN_SILENCE_MS"
],
"NETWORK_REQUEST_SEMANTIC_CHUNK_MIN_SILENCE_MS": constants[
"NETWORK_REQUEST_SEMANTIC_CHUNK_MIN_SILENCE_MS"
],
"NETWORK_INTERNAL_SILENCE_MS": constants["NETWORK_INTERNAL_SILENCE_MS"],
"NETWORK_INTERNAL_FADE_MS": constants["NETWORK_INTERNAL_FADE_MS"],
"CHUNK_EDGE_FADE_MS": constants["CHUNK_EDGE_FADE_MS"],
"CROSSFADE_MS": constants["CROSSFADE_MS"],
"match_chunk_rms": match_chunk_rms,
"punctuation_pause_seconds": punctuation_pause_seconds,
"fade_variable_internal_edges": fade_variable_internal_edges,
"join_audio_chunks_variable": join_audio_chunks_variable,
"apply_loudness_floor": lambda waveform, **_kwargs: waveform,
"_apply_speed": lambda waveform, _speed: waveform,
"count_speech_units": count_speech_units,
"finish_audio": lambda waveform, _sample_rate, **_kwargs: waveform,
}
exec(compile(module, str(app_path), "exec"), namespace)
return namespace["_assemble_trajectory_audio"]
def _isolated_load_speakers(*, metadata: dict, speaker_ids: tuple[str, ...]):
"""Execute only ``_load_speakers`` without importing the GPU application."""
app_path = ROOT / "app.py"
tree = ast.parse(app_path.read_text(encoding="utf-8"))
function = next(
node
for node in tree.body
if isinstance(node, ast.FunctionDef) and node.name == "_load_speakers"
)
module = ast.Module(
body=[
ast.ImportFrom(
module="__future__",
names=[ast.alias(name="annotations")],
level=0,
),
function,
],
type_ignores=[],
)
ast.fix_missing_locations(module)
load_calls = []
centroids = tuple(f"test-centroid-{index}" for index in range(len(speaker_ids)))
def fake_load(path, **kwargs):
load_calls.append((path, kwargs))
return {"speaker_ids": speaker_ids, "centroids": centroids}
namespace = {
"MODEL_DIR": "/pinned/model",
"METADATA": metadata,
"os": SimpleNamespace(
path=SimpleNamespace(
join=lambda *parts: "/".join(part.strip("/") for part in parts),
exists=lambda _path: True,
)
),
"torch": SimpleNamespace(load=fake_load),
}
exec(compile(module, app_path, "exec"), namespace)
result = namespace["_load_speakers"]()
return result, load_calls
def test_missing_metadata_speaker_id_selects_frozen_female_voice_as_builtin_b():
constants = _string_constants(ROOT / "app.py")
contract = FROZEN_SPEAKER_ANCHORS[constants["MODEL_REVISION"]]
speaker_ids = ("hung_yi_lee", contract["speaker_id"])
(labels, default_label), load_calls = _isolated_load_speakers(
metadata={},
speaker_ids=speaker_ids,
)
assert contract == {
"speaker_id": "female_voice",
"speaker_index": 1,
"ui_label": "內建語者 B",
"dtype": "float32",
"shape": (192,),
"sha256": (
"e33e4cb6a741d4d1237aa4ff557f1e663d0a6427dccda1f51e83bc149d4188ca"
),
}
assert speaker_ids[contract["speaker_index"]] == contract["speaker_id"]
assert tuple(labels) == ("內建語者 A", contract["ui_label"])
assert labels[contract["ui_label"]] == "test-centroid-1"
assert default_label == contract["ui_label"]
assert load_calls == [
(
"pinned/model/checkpoints/speaker_centroids.pt",
{"map_location": "cpu", "weights_only": True},
)
]
def test_remote_model_and_speaker_encoder_are_revision_pinned():
app_path = ROOT / "app.py"
source = app_path.read_text(encoding="utf-8")
constants = _string_constants(app_path)
assert constants["MODEL_REVISION"] == "aaf1a0878e37875382bb0e5c8a3a2ba43be67297"
assert constants["ECAPA_REVISION"] == "0f99f2d0ebe89ac095bcc5903c4dd8f72b367286"
assert "snapshot_download(REPO_ID, revision=MODEL_REVISION)" in source
assert "snapshot_download(ECAPA_REPO_ID, revision=ECAPA_REVISION)" in source
assert "source=ECAPA_DIR" in source
assert 'overrides={"pretrained_path": ECAPA_DIR}' in source
def test_tts_runtime_is_vendored_from_the_frozen_commit():
requirements = (ROOT / "requirements.txt").read_text(encoding="utf-8").splitlines()
provenance = (ROOT / "bluemagpie" / "UPSTREAM_RUNTIME.md").read_text(
encoding="utf-8"
)
assert not any("BlueMagpie-TTS.git" in line for line in requirements)
assert "ce384c8cc54efea1aaba7b9f1d7ded6c1c99aa9a" in provenance
assert (ROOT / "bluemagpie" / "LICENSE.upstream").is_file()
assert (ROOT / "bluemagpie" / "_vendor" / "voxcpm" / "LICENSE").is_file()
pinned_hashes = {
"model.py": "91810524212b34f727880154d90653fab4ae1b75eb3471b86cafd92c75514fef",
"loading.py": "e3407544e9bc888018fe5771edc01d954469e2af548b566873e0ef7f2afe6dca",
"_vendor/voxcpm/model/utils.py": (
"cea16e1ab57f15129a7f5dec13c428bd14a771221abcf17dd0a90b3d65e763a2"
),
}
for relative_path, expected_hash in pinned_hashes.items():
payload = (ROOT / "bluemagpie" / relative_path).read_bytes()
assert hashlib.sha256(payload).hexdigest() == expected_hash
def test_barbet_runtime_dependency_is_commit_pinned():
requirements = (ROOT / "requirements.txt").read_text(encoding="utf-8").splitlines()
barbet_lines = [line for line in requirements if "OpenFormosa/Barbet.git" in line]
assert barbet_lines == [
"git+https://github.com/OpenFormosa/Barbet.git@"
"6fcd7ce4aa37f2250a3242995bef0fbc3b026ba8"
]
def test_quality_asr_is_revision_pinned():
quality_path = ROOT / "quality_runtime.py"
quality_source = quality_path.read_text(encoding="utf-8")
constants = _string_constants(quality_path)
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
assert constants["WHISPER_MODEL_ID"] == "openai/whisper-large-v3-turbo"
assert constants["WHISPER_REVISION"] == "41f01f3fe87f28c78e2fbf8b568835947dd65ed9"
assert constants["VERIFICATION_WHISPER_MODEL_ID"] == "openai/whisper-large-v3"
assert (
constants["VERIFICATION_WHISPER_REVISION"]
== "06f233fe06e710322aca913c1bc4249a0d71fce1"
)
assert constants["WHISPER_ATTENTION_IMPLEMENTATION"] == "eager"
assert "WHISPER_RETURN_ATTENTION_MASK = True" in quality_source
assert "snapshot_download(WHISPER_MODEL_ID, revision=WHISPER_REVISION)" in app_source
assert "snapshot_download(\n VERIFICATION_WHISPER_MODEL_ID," in app_source
assert "revision=VERIFICATION_WHISPER_REVISION" in app_source
assert "load_pinned_verification_whisper_runtime" in quality_source
assert "transcribe_verification_whisper" in quality_source
def test_quality_runtime_dependencies_are_version_pinned():
requirements = set(
(ROOT / "requirements.txt").read_text(encoding="utf-8").splitlines()
)
assert "huggingface_hub==0.36.0" in requirements
assert "opencc-python-reimplemented==0.1.7" in requirements
assert "pypinyin==0.55.0" in requirements
assert "transformers==4.57.6" in requirements
assert "accelerate==1.12.0" in requirements
assert "einops==0.8.2" in requirements
assert "pydantic==2.11.10" in requirements
assert "numpy==2.3.5" in requirements
assert "scipy==1.17.1" in requirements
assert "numexpr==2.14.1" in requirements
assert "bottleneck==1.6.0" in requirements
assert "tqdm==4.68.2" in requirements
assert "safetensors==0.8.0" in requirements
assert "librosa==0.11.0" in requirements
assert "soundfile==0.14.0" in requirements
assert "speechbrain==1.0.3" in requirements
def test_readme_describes_coverage_refill_and_sequence_transition_scores():
readme = (ROOT / "README.md").read_text(encoding="utf-8")
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
assert "exactly one same-seed whole trajectory" in readme
assert "single-chunk refills for zero/low-coverage rows only" in readme
assert "`(coverage, refill attempts, chunk index)`" in readme
assert "32 generated TTS chunks、800 generated speech units" in readme
assert "不使用 reference-style distribution score" in readme
assert "median-F0 軟成本" in readme
assert "5.2 CJK / 4.6 ASCII" in readme
assert "4.6 CJK / 4.0 ASCII" in readme
assert "URL/email-bearing chunks 8 units" in readme
assert "Email 第一輪必須在 `小老鼠`" in readme
assert "第一輪 DP 不得跨越這兩類" in readme
assert "grammar boundary" in readme
assert "所有最佳 edit alignment" in readme
assert "boundary-only local rejects" in readme
assert "drop 不超過 0.15" in readme
assert "整段仍必須通過 similarity 0.105 與 boundary drop 0.095" in readme
assert "zero/low-coverage 單 chunk refill" in app_source
assert "speaker/RMS/F0 ragged DP" in app_source
assert "1→5→10→15→20" not in app_source
def test_app_wires_row_local_candidate_ordinal_to_generation_policy_and_logs_it():
source = (ROOT / "app.py").read_text(encoding="utf-8")
assert source.count("policy: GenerationPolicy") == 2
assert "generation_context.chunk_candidate_ordinals" in source
assert "policy=generation_policy_for_candidate_offset(candidate_ordinal)" in source
assert "generation_context.seed != seed" in source
assert 'f"name={policy.name}' in source
assert "chunk_policies={selected_policies}" in source
assert '"min_len": min_len' in source
assert '"[BlueMagpie] generation attempt "' in source
assert "scheduled_cfg={scheduled_cfg:.2f}" in source
assert "effective_cfg={effective_cfg:.2f}" in source
assert "network_floor_applied={network_floor_applied}" in source
assert "short_floor_applied={short_floor_applied}" in source
def test_app_rejects_ambiguous_iri_before_frontend_normalization():
source = (ROOT / "app.py").read_text(encoding="utf-8")
synthesize_start = source.index("def _synthesize(")
raw_text = source.index("raw_text = str(text)", synthesize_start)
iri_guard = source.index(
"if network_identifier_has_ambiguous_iri(raw_text):",
synthesize_start,
)
normalization = source.index(
'text = normalize_spoken_forms(raw_text, locale="zh-TW")',
synthesize_start,
)
assert synthesize_start < raw_text < iri_guard < normalization
assert "非 ASCII IRI 必須先轉成 ASCII/percent-encoded" in (
ROOT / "README.md"
).read_text(encoding="utf-8")
def test_app_does_not_add_an_artificial_onset_split():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert synthesize_source is not None
assert "split_text_for_tts(" in synthesize_source
assert "split_leading_clause(" not in synthesize_source
assert "ONSET_CLAUSE_SEARCH_CHARS = 0" in source
def test_app_applies_fixed_mixed_cfg_schedule_after_global_quality_floor():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert synthesize_source is not None
assert "DEFAULT_CFG = 3.0" in source
assert "QUALITY_CFG_MIN" not in source
assert "MIXED_CFG_PRIMARY = 3.0" in source
assert "MIXED_CFG_ALTERNATE = 2.0" in source
assert (
'MIXED_CFG_SCHEDULE = "row_ordinal_zero_and_even_primary_odd_alternate"'
in source
)
assert "network_request = contains_network_identifier(raw_text)" in synthesize_source
assert "cfg_value != MIXED_CFG_PRIMARY" in synthesize_source
assert "request_cfg = MIXED_CFG_PRIMARY" in synthesize_source
assert "cfg=candidate_cfg(candidate_ordinal)" in synthesize_source
assert "candidate_ordinals = generation_context.chunk_candidate_ordinals" in (
synthesize_source
)
assert "chunk_candidate_ordinals=candidate_ordinals" in synthesize_source
assert "generation_cfg_for_candidate_offset(" in synthesize_source
assert "chunk_cfgs={selected_cfgs}" in synthesize_source
assert "attempted_schedule_cfgs={attempted_schedule_cfgs}" in synthesize_source
assert "network_cfg_floor={NETWORK_TEXT_CFG_MIN:.2f}" in synthesize_source
assert "mixed_cfg_primary={MIXED_CFG_PRIMARY:.2f}" in synthesize_source
assert "np.isfinite(cfg_value)" in synthesize_source
assert "1.0 <= cfg_value <= 4.0" in synthesize_source
assert 'label="CFG (已驗證固定值)"' in source
def test_app_and_quality_runtime_pin_the_same_mixed_cfg_contract():
app_constants = _literal_constants(ROOT / "app.py")
quality_constants = _literal_constants(ROOT / "quality_runtime.py")
assert app_constants["MIXED_CFG_SCHEDULE"] == quality_constants[
"MIXED_CFG_SCHEDULE"
]
assert app_constants["MIXED_CFG_PRIMARY"] == quality_constants[
"MIXED_CFG_PRIMARY"
]
assert app_constants["MIXED_CFG_ALTERNATE"] == quality_constants[
"MIXED_CFG_ALTERNATE"
]
assert app_constants["SHORT_TEXT_CFG_UNITS"] == quality_constants[
"MIXED_CFG_SHORT_TEXT_MAX_UNITS"
]
assert app_constants["SHORT_TEXT_CFG_MIN"] == quality_constants[
"MIXED_CFG_SHORT_TEXT_MIN"
]
assert app_constants["NETWORK_TEXT_CFG_MIN"] == quality_constants[
"MIXED_CFG_NETWORK_MIN"
]
def test_app_rejects_silent_text_and_coalesces_before_runtime_budgeting():
source = (ROOT / "app.py").read_text(encoding="utf-8")
production_source = (ROOT / "production.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assemble_source = ast.get_source_segment(
source,
functions["_assemble_trajectory_audio"],
)
assert synthesize_source is not None
assert assemble_source is not None
assert "if count_speech_units(text) <= 0" in synthesize_source
assert "coalesce_text_chunks(" in synthesize_source
assert "chunk_specs = plan_generation_chunks(" in synthesize_source
assert "chunks = tuple(spec.text for spec in chunk_specs)" in synthesize_source
assert "max_chunks=QUALITY_MAX_GENERATED_CHUNKS" in synthesize_source
assert "pre_faded_edges=True" in assemble_source
assert "NETWORK_GENERATION_MIN_UNITS = 8" in source
assert "NETWORK_GENERATION_TARGET_UNITS = 32" in source
assert "NETWORK_GENERATION_MAX_UNITS = 36" in source
assert "network_min_units=NETWORK_GENERATION_MIN_UNITS" in synthesize_source
assert "NETWORK_INTERNAL_FADE_MS = 5.0" in source
assert "NETWORK_INTERNAL_SILENCE_MS = 400.0" in source
assert "SEMANTIC_CHUNK_MIN_SILENCE_MS = 250.0" in source
assert "NETWORK_REQUEST_SEMANTIC_CHUNK_MIN_SILENCE_MS = 350.0" in source
assert 'chunk_specs[index].boundary_after == "network_internal"' in (
assemble_source
)
assert "NETWORK_INTERNAL_SILENCE_MS / 1000.0" in assemble_source
assert "punctuation_pause_seconds(chunk)" in assemble_source
assert "semantic_min_silence_ms / 1000.0" in assemble_source
assert "pauses.append(int(round(pause_seconds * SR)))" in assemble_source
assert "join_audio_chunks_variable(" in assemble_source
assert "network_conditioned=network_flags" in synthesize_source
assert "network_conditioned=network_flag" in synthesize_source
assert "mandatory_cut_offsets" in production_source
assert "any(start < cut < end for cut in active_mandatory_cuts)" in (
production_source
)
assert "plan = solve(mandatory_cuts - short_identifier_cuts)" in (
production_source
)
assert "_protected_ranges_are_exact_in_all_optimal_alignments(" in (
production_source
)
def test_network_endpoint_headroom_is_isolated_from_public_unit_contracts():
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
production_source = (ROOT / "production.py").read_text(encoding="utf-8")
app_tree = ast.parse(app_source)
production_tree = ast.parse(production_source)
app_functions = {
node.name: node
for node in app_tree.body
if isinstance(node, ast.FunctionDef)
}
production_functions = {
node.name: node
for node in production_tree.body
if isinstance(node, ast.FunctionDef)
}
generate_source = ast.get_source_segment(
app_source,
app_functions["_generate_chunk"],
)
public_counter_source = ast.get_source_segment(
production_source,
production_functions["count_speech_units"],
)
network_counter_source = ast.get_source_segment(
production_source,
production_functions["count_network_endpoint_duration_units"],
)
assert generate_source is not None
assert public_counter_source is not None
assert network_counter_source is not None
assert "count_network_endpoint_duration_units(text)" in generate_source
assert "if network_conditioned" in generate_source
assert "duration_units=endpoint_duration_units" in generate_source
assert "min_len = 2" in generate_source
assert '"max_len": hard_stop_steps' in generate_source
assert "expected_steps=expected_steps" in generate_source
assert "hard_stop_steps=hard_stop_steps" in generate_source
assert "duration_counter=" in generate_source
assert "divisor = 2 if token.isdigit() else 4" in public_counter_source
assert "math.ceil(ascii_run_length / 2)" in network_counter_source
assert production_source.count(
"count_network_endpoint_duration_units("
) == 1
def test_network_local_dual_asr_capability_is_range_bound_for_initial_and_refill():
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
quality_source = (ROOT / "quality_runtime.py").read_text(encoding="utf-8")
app_tree = ast.parse(app_source)
quality_tree = ast.parse(quality_source)
app_functions = {
node.name: node
for node in app_tree.body
if isinstance(node, ast.FunctionDef)
}
quality_functions = {
node.name: node
for node in quality_tree.body
if isinstance(node, ast.FunctionDef)
}
helper_source = ast.get_source_segment(
app_source,
app_functions["_verify_network_local_asr_intersection"],
)
initial_source = ast.get_source_segment(
app_source,
app_functions["_qualify_candidate_trajectory_audio"],
)
refill_source = ast.get_source_segment(
app_source,
app_functions["_verify_refill_candidate_trajectory_audio"],
)
intersection_source = ast.get_source_segment(
quality_source,
quality_functions["intersect_local_semantic_verification"],
)
assert all(
source is not None
for source in (
helper_source,
initial_source,
refill_source,
intersection_source,
)
)
assert "proof_rows[index] for index in selected_indices" in helper_source
assert "transcriber=transcribe_verification_whisper" in helper_source
assert "semantic_only=True" in helper_source
assert "network_fragment_proofs=independent_proof_rows" in helper_source
assert "intersect_local_semantic_verification(" in helper_source
assert "[BlueMagpie] network local independent " in helper_source
assert "proof_count=" in helper_source
assert "transcript_text" not in helper_source
for caller_source in (initial_source, refill_source):
turbo_index = caller_source.index(
"local_verification = _verify_trajectory_audio("
)
intersection_index = caller_source.index(
"_verify_network_local_asr_intersection("
)
assert turbo_index < intersection_index
assert "proof_rows = _network_fragment_proof_rows(" in caller_source
assert "network_fragment_proofs=proof_rows" in caller_source
assert "proof_rows," in caller_source[intersection_index:]
assert "candidate_seed=" in caller_source[intersection_index:]
assert "semantic_reasons = [\"semantic_gate\"]" in intersection_source
assert "\"network_protected_span_mismatch\"" in intersection_source
assert "chunk_artifacts=primary_verification.chunk_artifacts" in (
intersection_source
)
assert "CASCADE_EVIDENCE_SCHEMA_VERSION = 5" in quality_source
assert '"chunk_text_variants"' in quality_source
assert "local_candidate_has_coverage_eligibility(" in helper_source
assert "independent_local_results=" in initial_source
assert "independent_local_results=" in refill_source
assert '"independent_local_evidence_complete"' in quality_source
assert '"independent_local_results"' in quality_source
def test_network_local_dual_asr_runtime_reuses_exact_proof_rows_and_logs_no_text(
capsys,
):
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
function = next(
node
for node in tree.body
if (
isinstance(node, ast.FunctionDef)
and node.name == "_verify_network_local_asr_intersection"
)
)
module = ast.Module(
body=[
ast.ImportFrom(
module="__future__",
names=[ast.alias(name="annotations")],
level=0,
),
function,
],
type_ignores=[],
)
ast.fix_missing_locations(module)
calls = []
proof = object()
skipped_proof = object()
proof_rows = ((), (proof,), (skipped_proof,))
primary_results = (object(), object(), object())
turbo = SimpleNamespace(candidate_results=primary_results)
independent_result = SimpleNamespace(
passed=True,
rejection_reasons=(),
comparison=SimpleNamespace(
cer=0.0,
prefix_cer=0.0,
suffix_cer=0.0,
extra_tail_units=0,
),
)
independent = SimpleNamespace(candidate_results=(independent_result,))
verification_transcriber = object()
def fake_verify(*args, **kwargs):
calls.append(("verify", args, kwargs))
return independent
def fake_intersect(*args):
calls.append(("intersect", args))
return "combined"
namespace = {
"_verify_trajectory_audio": fake_verify,
"QUALITY_FINAL_ASR_MAX_NEW_TOKENS": 440,
"SEQUENCE_FALLBACK_MAX_LOCAL_BOUNDARY_SPEAKER_DROP": 0.15,
"transcribe_verification_whisper": verification_transcriber,
"intersect_local_semantic_verification": fake_intersect,
"local_candidate_has_coverage_eligibility": (
lambda result, **_kwargs: result is primary_results[1]
),
"LocalIndependentGateEvidence": LocalIndependentGateEvidence,
"candidate_gate_evidence": lambda result: ("bounded", result),
}
exec(compile(module, "<isolated-network-local>", "exec"), namespace)
result = namespace["_verify_network_local_asr_intersection"](
turbo,
("ordinary-audio", "network-audio", "ordinary-audio-2"),
("PRIVATE_ORDINARY_A", "PRIVATE_NETWORK_TEXT", "PRIVATE_ORDINARY_B"),
"anchor",
proof_rows,
candidate_seed=123,
)
assert result[0] == "combined"
verify_call = calls[0]
assert verify_call[0] == "verify"
assert verify_call[1][:4] == (
("network-audio",),
("PRIVATE_NETWORK_TEXT",),
"anchor",
1.0,
)
assert verify_call[1][4] == 440
assert verify_call[2]["transcriber"] is verification_transcriber
assert verify_call[2]["semantic_only"] is True
selected_proofs = verify_call[2]["network_fragment_proofs"]
assert selected_proofs == ((proof,),)
assert selected_proofs[0] is proof_rows[1]
assert calls[1] == (
"intersect",
(turbo, independent, (1,)),
)
evidence = result[1]
assert evidence[0] == LocalIndependentGateEvidence(False, None, 0, None)
assert evidence[1].attempted is True
assert evidence[1].passed is True
assert evidence[1].proof_count == 1
assert evidence[1].result == ("bounded", independent_result)
assert evidence[2] == LocalIndependentGateEvidence(False, None, 1, None)
log = capsys.readouterr().out
assert "seed=123 local_chunk_index=1 proof_count=1 passed=True" in log
assert "PRIVATE_" not in log
def test_app_emits_one_canonical_content_free_evidence_line_per_terminal_outcome():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
qualifier_source = ast.get_source_segment(
source,
functions["_qualify_candidate_trajectory_audio"],
)
assert synthesize_source is not None
assert qualifier_source is not None
assert synthesize_source.count("format_cascade_evidence_log(") == 3
assert synthesize_source.count(
"generated_chunk_limit=QUALITY_MAX_GENERATED_CHUNKS"
) == 3
assert synthesize_source.count(
"generated_text_unit_limit=QUALITY_MAX_GENERATED_TEXT_UNITS"
) == 3
assert "generation_evidence_factory=candidate_generation_evidence" in (
synthesize_source
)
assert 'outcome="no_qualified_candidate"' in synthesize_source
assert 'outcome="final_output_rejected"' in synthesize_source
assert 'outcome="returned"' in synthesize_source
assert "error.diagnostics" in synthesize_source
assert "cascade.diagnostics" in synthesize_source
assert "final_output=final_evidence" in synthesize_source
assert "CandidateVerification(" in qualifier_source
assert "independent_local_results=independent_local_results" in (
qualifier_source
)
assert "joined_evidence = trajectory_gate_evidence(joined_verification)" in (
qualifier_source
)
assert "joined_output=joined_evidence" in qualifier_source
assert (
"independent_output=trajectory_gate_evidence(independent_verification)"
in qualifier_source
)
assert "independent_final_output=independent_final_evidence" in synthesize_source
def test_app_limits_boundary_relaxation_to_final_verified_sequence_fallback():
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
quality_source = (ROOT / "quality_runtime.py").read_text(encoding="utf-8")
assert "SEQUENCE_FALLBACK_MAX_LOCAL_BOUNDARY_SPEAKER_DROP = 0.15" in quality_source
assert "result.rejection_reasons != (\"boundary_speaker_drop\",)" in quality_source
assert "sequence fallback boundary relaxation requires a final verifier" in quality_source
assert "sequence_fallback_max_local_boundary_speaker_drop=(" in app_source
assert "SEQUENCE_FALLBACK_MAX_LOCAL_BOUNDARY_SPEAKER_DROP" in app_source
assert "QUALITY_RELEASE_MAX_BOUNDARY_SPEAKER_DROP = 0.095" in app_source
def test_internal_synthesize_accepts_only_a_keyword_seed_while_ui_stays_unchanged():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef))
}
synthesize = functions["_synthesize"]
assert "request_seed" not in [argument.arg for argument in synthesize.args.args]
assert [argument.arg for argument in synthesize.args.kwonlyargs][-1] == "request_seed"
assert isinstance(synthesize.args.kw_defaults[-1], ast.Constant)
assert synthesize.args.kw_defaults[-1].value is None
assert "request_seed = resolve_request_seed(request_seed, secrets.randbelow)" in source
assert "run_coverage_adaptive_cascade(\n chunks,\n request_seed," in source
for wrapper_name in ("tts_speaker", "tts_reference", "tts_longform"):
wrapper = functions[wrapper_name]
arguments = wrapper.args.args + wrapper.args.kwonlyargs
assert "request_seed" not in [argument.arg for argument in arguments]
def test_app_reverifies_the_post_join_speed_adjusted_whole_waveform():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
assemble_source = ast.get_source_segment(
source,
functions["_assemble_trajectory_audio"],
)
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert assemble_source is not None
assert synthesize_source is not None
speed_index = assemble_source.index(
"waveform = _apply_speed(waveform, playback_speed)"
)
finish_index = assemble_source.index(
"return finish_audio(waveform, SR, fade_ms=finish_fade_ms)"
)
assert speed_index < finish_index
assert (
'finish_fade_ms = 0.0 if count_speech_units("".join(chunks)) <= 6 else 5.0'
in assemble_source
)
assert "else 60.0" not in assemble_source
production_source = (ROOT / "production.py").read_text(encoding="utf-8")
assert "trailing_silence_ms: float = 180.0" in production_source
assemble_index = synthesize_source.index(
"waveform = _assemble_trajectory_audio("
)
verify_index = synthesize_source.index("final_verification = _verify_trajectory_audio(")
require_index = synthesize_source.index(
"require_verified_final_output(final_verification)"
)
return_index = synthesize_source.index("return SR, waveform")
assert assemble_index < verify_index < require_index < return_index
assert "(text,)" in synthesize_source[verify_index:require_index]
assert " 1.0," in synthesize_source[verify_index:require_index]
assert "QUALITY_FINAL_ASR_MAX_NEW_TOKENS" in synthesize_source[
verify_index:require_index
]
assert "release_speaker_gate=True" in synthesize_source[
verify_index:require_index
]
assert "short_audio_seconds=(" in source
assert "RELEASE_SPEAKER_TRIGGER_SECONDS" in source
def test_chunk_generation_closed_loop_rerenders_final_audio_from_raw_once():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
generate_source = ast.get_source_segment(source, functions["_generate_chunk"])
apply_speed_source = ast.get_source_segment(source, functions["_apply_speed"])
assert generate_source is not None
assert apply_speed_source is not None
total_pace_index = generate_source.index("pace_speed = target_pace_speed(")
active_measure_index = generate_source.index(
"active_voiced_duration_seconds(audio, SR)"
)
active_pace_index = generate_source.index(
"active_speed = active_pace_correction_speed("
)
combined_speed_index = generate_source.index(
"combined_speed = min(pace_speed, active_speed)"
)
initial_stretch_index = generate_source.index("corrected = _apply_speed(")
corrected_measure_index = generate_source.index(
"corrected_active_duration = active_voiced_duration_seconds("
)
rerender_speed_index = generate_source.index(
"rerender_speed = active_pace_correction_speed("
)
final_speed_index = generate_source.index(
"final_speed = combined_speed * rerender_speed"
)
final_stretch_index = generate_source.index("final_audio = _apply_speed(")
assert (
total_pace_index
< active_measure_index
< active_pace_index
< combined_speed_index
< initial_stretch_index
< corrected_measure_index
< rerender_speed_index
< final_speed_index
< final_stretch_index
)
assert generate_source.count("_apply_speed(") == 3
assert "waveform = _apply_speed(audio, pace_speed)" not in generate_source
assert "ACTIVE_PACE_TARGET_CPS = 4.00" in source
assert "CLOSED_LOOP_ACTIVE_PACE_TARGET_CPS = 3.95" in source
assert "target_cps=ACTIVE_PACE_TARGET_CPS" in generate_source
assert "target_cps=CLOSED_LOOP_ACTIVE_PACE_TARGET_CPS" in generate_source
assert "prior_speed=1.0" in generate_source
assert "prior_speed=combined_speed" in generate_source
assert "min_total_speed=MIN_PACE_SPEED" in generate_source
assert "final_speed = combined_speed * rerender_speed" in generate_source
assert "fallback_speed = final_speed * fallback_residual" in generate_source
assert "_apply_speed(\n corrected" not in generate_source
assert "_apply_speed(\n audio,\n final_speed" in generate_source
assert "_apply_speed(\n audio,\n fallback_speed" in generate_source
assert "PACE_STRETCH_N_FFT = 1536" in source
assert "PACE_STRETCH_HOP_LENGTH = 384" in source
assert "NETWORK_PACE_STRETCH_N_FFT = 2048" in source
assert "NETWORK_PACE_STRETCH_HOP_LENGTH = 512" in source
assert "network_conditioned=network_conditioned" in generate_source
assert "if network_conditioned" in apply_speed_source
assert "n_fft=n_fft" in apply_speed_source
assert "hop_length=hop_length" in apply_speed_source
def test_public_tts_wrappers_serialize_pcm16_after_float_verification():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert synthesize_source is not None
assert "pcm16_audio_output" not in synthesize_source
assert "return SR, waveform" in synthesize_source
for wrapper_name in ("tts_speaker", "tts_reference", "tts_longform"):
wrapper_source = ast.get_source_segment(source, functions[wrapper_name])
assert wrapper_source is not None
assert "return pcm16_audio_output(" in wrapper_source
assert "*_synthesize(" in wrapper_source
def test_space_applies_pinned_squim_to_local_joined_and_final_audio():
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
app_tree = ast.parse(app_source)
app_functions = {
node.name: node
for node in app_tree.body
if isinstance(node, ast.FunctionDef)
}
verify_source = ast.get_source_segment(
app_source,
app_functions["_verify_trajectory_audio"],
)
runtime_source = (ROOT / "quality_runtime.py").read_text(encoding="utf-8")
assert verify_source is not None
assert 'QUALITY_MIN_SQUIM_STOI = 0.60' in app_source
assert 'QUALITY_MIN_SQUIM_PESQ = 1.12' in app_source
assert 'QUALITY_PREFERRED_MIN_SQUIM_STOI = 0.72' in app_source
assert 'QUALITY_PREFERRED_MIN_SQUIM_PESQ = 1.20' in app_source
assert 'QUALITY_PREFERRED_MIN_SPEAKER_SIMILARITY = 0.25' in app_source
assert 'QUALITY_PREFERRED_MAX_BOUNDARY_SPEAKER_DROP = 0.05' in app_source
assert "if not semantic_only and transcript:" in verify_source
score_index = verify_source.index("squim_objective_evidence_from_audio(")
observation_index = verify_source.index("CandidateObservation(", score_index)
gate_index = verify_source.index("squim_gate_enabled=not semantic_only")
assert score_index < observation_index < gate_index
assert "except ValueError:" in verify_source[score_index:observation_index]
assert "except RuntimeError:" not in verify_source[score_index:observation_index]
assert (
'"2c54586fea83fb5eb5394d710038ee89f55cab7011a5bf730bebed4c8777e828"'
in runtime_source
)
hash_index = runtime_source.index("digest = str(hasher(weight_path)).casefold()")
state_index = runtime_source.index(
'state_dict = loader(weight_path, map_location="cpu", weights_only=True)'
)
assert hash_index < state_index
assert "device=torch.device(\"cpu\")" in runtime_source
synthesize_source = ast.get_source_segment(
app_source,
app_functions["_synthesize"],
)
assert synthesize_source is not None
for argument in (
"preferred_min_speaker_similarity=",
"preferred_max_boundary_speaker_drop=",
"preferred_min_squim_stoi=QUALITY_PREFERRED_MIN_SQUIM_STOI",
"preferred_min_squim_pesq=QUALITY_PREFERRED_MIN_SQUIM_PESQ",
"QUALITY_PREFERRED_SQUIM_MIN_DURATION_SECONDS",
):
assert argument in synthesize_source
assert "QUALITY_PREFERRED_SQUIM_MIN_DURATION_SECONDS = 1.50" in app_source
def test_whole_candidate_qualification_uses_the_exact_return_assembler_after_local_pass():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
qualify_source = ast.get_source_segment(
source,
functions["_qualify_candidate_trajectory_audio"],
)
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert qualify_source is not None
assert synthesize_source is not None
local_index = qualify_source.index("local_verification = _verify_trajectory_audio(")
local_fail_index = qualify_source.index("if not local_verification.passed:")
assemble_index = qualify_source.index("waveform = _assemble_trajectory_audio(")
joined_index = qualify_source.index("joined_verification = _verify_trajectory_audio(")
assert local_index < local_fail_index < assemble_index < joined_index
assert "QUALITY_FINAL_ASR_MAX_NEW_TOKENS" in qualify_source[joined_index:]
assert "release_speaker_gate=True" in qualify_source[joined_index:]
assert "qualify_trajectory_with_joined_output(" in qualify_source[joined_index:]
assert "waveform = _assemble_trajectory_audio(" in synthesize_source
assert "cascade.trajectory" in synthesize_source
assert "chunk_specs" in synthesize_source
assert "require_verified_final_output(final_verification)" in synthesize_source
def test_space_hard_intersects_dual_asr_on_whole_and_proven_network_locals():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
verify_source = ast.get_source_segment(source, functions["_verify_trajectory_audio"])
independent_source = ast.get_source_segment(
source,
functions["_verify_independent_whole_audio"],
)
qualify_source = ast.get_source_segment(
source,
functions["_qualify_candidate_trajectory_audio"],
)
sequence_source = ast.get_source_segment(
source,
functions["_verify_sequence_trajectory_audio"],
)
refill_source = ast.get_source_segment(
source,
functions["_verify_refill_candidate_trajectory_audio"],
)
network_local_source = ast.get_source_segment(
source,
functions["_verify_network_local_asr_intersection"],
)
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert all(
segment is not None
for segment in (
verify_source,
independent_source,
qualify_source,
sequence_source,
refill_source,
network_local_source,
synthesize_source,
)
)
assert "transcriber=transcribe_whisper" in verify_source
assert "speaker_gate_enabled=not semantic_only" in verify_source
assert "transcriber=transcribe_verification_whisper" in independent_source
assert "semantic_only=True" in independent_source
assert "cache.verify(" in independent_source
assert "VERIFICATION_ASR_PROFILE" in independent_source
assert "local_verification = _verify_trajectory_audio(" in refill_source
assert "_verify_independent_whole_audio" not in refill_source
assert "transcriber=transcribe_verification_whisper" in network_local_source
assert "semantic_only=True" in network_local_source
assert "network_fragment_proofs=independent_proof_rows" in network_local_source
assert "intersect_local_semantic_verification(" in network_local_source
local_index = qualify_source.index("local_verification = _verify_trajectory_audio(")
local_fail_index = qualify_source.index("if not local_verification.passed:")
assemble_index = qualify_source.index("waveform = _assemble_trajectory_audio(")
turbo_joined_index = qualify_source.index("joined_verification = _verify_trajectory_audio(")
turbo_fail_index = qualify_source.index("if not qualified.passed:")
independent_index = qualify_source.index("_verify_independent_whole_audio(")
dual_index = qualify_source.index(
"dual_qualified = qualify_trajectory_with_joined_output("
)
assert (
local_index
< local_fail_index
< assemble_index
< turbo_joined_index
< turbo_fail_index
< independent_index
< dual_index
)
sequence_assemble = sequence_source.index("_assemble_trajectory_audio(")
sequence_large_v3 = sequence_source.index(
"assembled_verification = _verify_trajectory_audio("
)
sequence_large_v3_transcriber = sequence_source.index(
"transcriber=transcribe_verification_whisper"
)
sequence_independent = sequence_source.index(
"independent_verification = _verify_independent_whole_audio("
)
sequence_intersection = sequence_source.index(
"intersected = qualify_trajectory_with_joined_output("
)
assert (
sequence_assemble
< sequence_large_v3
< sequence_large_v3_transcriber
< sequence_independent
< sequence_intersection
)
cache_create = synthesize_source.index(
"independent_cache = WholeWaveformVerificationCache()"
)
cascade_index = synthesize_source.index(
"cascade = run_coverage_adaptive_cascade("
)
final_assemble = synthesize_source.index(
"waveform = _assemble_trajectory_audio("
)
final_turbo = synthesize_source.index("final_verification = _verify_trajectory_audio(")
final_turbo_require = synthesize_source.index(
"require_verified_final_output(final_verification)"
)
final_independent = synthesize_source.index(
"independent_final_verification = _verify_independent_whole_audio("
)
final_independent_require = synthesize_source.index(
"require_verified_final_output(independent_final_verification)"
)
return_index = synthesize_source.index("return SR, waveform")
assert (
cache_create
< cascade_index
< final_assemble
< final_turbo
< final_turbo_require
< final_independent
< final_independent_require
< return_index
)
assert synthesize_source.count("independent_cache,") >= 3
assert "except (RuntimeError, ValueError) as error:" in synthesize_source
def test_network_fragment_relaxation_is_range_bound_and_local_only():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
verify_source = ast.get_source_segment(source, functions["_verify_trajectory_audio"])
proof_source = ast.get_source_segment(
source,
functions["_network_fragment_proof_rows"],
)
qualify_source = ast.get_source_segment(
source,
functions["_qualify_candidate_trajectory_audio"],
)
refill_source = ast.get_source_segment(
source,
functions["_verify_refill_candidate_trajectory_audio"],
)
independent_source = ast.get_source_segment(
source,
functions["_verify_independent_whole_audio"],
)
sequence_source = ast.get_source_segment(
source,
functions["_verify_sequence_trajectory_audio"],
)
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert all(
segment is not None
for segment in (
verify_source,
proof_source,
qualify_source,
refill_source,
independent_source,
sequence_source,
synthesize_source,
)
)
assert "canonicalize_asr_network_fragments(" in verify_source
assert "if fragment_evidence.passed" in verify_source
assert "network-conditioned chunk lacks exact fragment proof" in proof_source
assert "proof.span_index for proof in proofs" in proof_source
assert "proof.full_spoken_proof for proof in proofs" in proof_source
local_index = qualify_source.index("local_verification = _verify_trajectory_audio(")
joined_index = qualify_source.index("joined_verification = _verify_trajectory_audio(")
assert "network_fragment_proofs=" in qualify_source[local_index:joined_index]
assert "network_fragment_proofs=" not in qualify_source[joined_index:]
assert "network_fragment_proofs=" in refill_source
assert "network_fragment_proofs=" not in independent_source
assert "network_fragment_proofs=" not in sequence_source
final_index = synthesize_source.index("final_verification = _verify_trajectory_audio(")
assert "network_fragment_proofs=" not in synthesize_source[final_index:]
assert "generation_context_by_seed" in synthesize_source
assert "generation_chunk_specs(seed, candidate_chunks)" in synthesize_source
def test_local_endpoint_relaxation_is_role_bound_and_whole_gates_stay_exact():
source = (ROOT / "app.py").read_text(encoding="utf-8")
tree = ast.parse(source)
functions = {
node.name: node
for node in tree.body
if isinstance(node, ast.FunctionDef)
}
verify_source = ast.get_source_segment(source, functions["_verify_trajectory_audio"])
role_source = ast.get_source_segment(source, functions["_local_endpoint_role_rows"])
qualify_source = ast.get_source_segment(
source,
functions["_qualify_candidate_trajectory_audio"],
)
refill_source = ast.get_source_segment(
source,
functions["_verify_refill_candidate_trajectory_audio"],
)
sequence_source = ast.get_source_segment(
source,
functions["_verify_sequence_trajectory_audio"],
)
synthesize_source = ast.get_source_segment(source, functions["_synthesize"])
assert all(
segment is not None
for segment in (
verify_source,
role_source,
qualify_source,
refill_source,
sequence_source,
synthesize_source,
)
)
assert "spec.source_start == 0" in role_source
assert 'spec.boundary_after == "none"' in role_source
assert "spec.text != chunk" in role_source
assert "local_candidate_pool = not semantic_only and not release_speaker_gate" in (
verify_source
)
assert "max_prefix_cer=(1.0 / 6.0 if local_candidate_pool else 0.0)" in (
verify_source
)
assert "max_suffix_cer=(1.0 / 6.0 if local_candidate_pool else 0.0)" in (
verify_source
)
assert "max_prefix_deletions=(0 if local_candidate_pool else None)" in (
verify_source
)
assert "max_suffix_deletions=(0 if local_candidate_pool else None)" in (
verify_source
)
assert "candidate_gate_kwargs_by_index=indexed_gate_kwargs" in verify_source
local_index = qualify_source.index("local_verification = _verify_trajectory_audio(")
joined_index = qualify_source.index("joined_verification = _verify_trajectory_audio(")
assert "local_endpoint_roles=" in qualify_source[local_index:joined_index]
assert "local_endpoint_roles=" not in qualify_source[joined_index:]
assert "local_endpoint_roles=" in refill_source
assert "local_endpoint_roles=" not in sequence_source
final_index = synthesize_source.index("final_verification = _verify_trajectory_audio(")
assert "local_endpoint_roles=" not in synthesize_source[final_index:]
assert "generation_chunk_specs(seed, candidate_chunks)" in synthesize_source
def test_naturalized_url_provenance_is_revalidated_without_policy_override():
production_source = (ROOT / "production.py").read_text(encoding="utf-8")
app_source = (ROOT / "app.py").read_text(encoding="utf-8")
readme = (ROOT / "README.md").read_text(encoding="utf-8")
production_tree = ast.parse(production_source)
app_tree = ast.parse(app_source)
production_functions = {
node.name: node
for node in production_tree.body
if isinstance(node, ast.FunctionDef)
}
app_functions = {
node.name: node
for node in app_tree.body
if isinstance(node, ast.FunctionDef)
}
inverse_source = ast.get_source_segment(
production_source,
production_functions["inverse_network_url_rendering"],
)
planner_source = ast.get_source_segment(
production_source,
production_functions["plan_generation_chunks"],
)
local_source = ast.get_source_segment(
production_source,
production_functions["canonicalize_asr_network_fragments"],
)
runtime_source = ast.get_source_segment(
app_source,
app_functions["_network_fragment_proof_rows"],
)
generate_source = ast.get_source_segment(
app_source,
app_functions["_generate_chunk"],
)
assert all(
segment is not None
for segment in (
inverse_source,
planner_source,
local_source,
runtime_source,
generate_source,
)
)
assert "proof != expected" in inverse_source
assert "_naturalized_url_proof_from_spoken(full_proof)" in planner_source
assert "_naturalized_url_proof_from_spoken(full_proof)" in local_source
assert "proof.raw_identifier or proof.url_rendering_proof is not None" in (
planner_source
)
assert "proof.raw_identifier or proof.url_rendering_proof is not None" in (
local_source
)
assert "contains_naturalized_url_spoken_form(" in runtime_source
assert "proof.url_rendering_proof != fresh_rendering" in runtime_source
assert "proof.raw_identifier or proof.url_rendering_proof is not None" in (
runtime_source
)
assert "generation_cps = (" in generate_source
assert "policy.ascii_cps" in generate_source
assert "COMPLETION_HEADROOM_GENERATION_POLICY" not in generate_source
assert "不可切 component" in readme
assert "Email contract" in readme
def test_space_wires_bounded_k_best_paths_to_exact_assembled_whole_gate():
source = (ROOT / "app.py").read_text(encoding="utf-8")
assert "sequence_final_verifier=lambda sequence_result, candidate_chunks:" in source
assert "_verify_sequence_trajectory_audio(" in source
assert "QUALITY_MAX_SEQUENCE_PATHS = 3" in source
assert "max_sequence_paths=QUALITY_MAX_SEQUENCE_PATHS" in source
assert "waveform = _assemble_trajectory_audio(" in source
assert "QUALITY_FINAL_ASR_MAX_NEW_TOKENS" in source
assert "sequence_rank={cascade.sequence_path_rank}" in source
assert "sequence_paths_checked={cascade.sequence_paths_checked}" in source
assert "cer={comparison.cer:.6f}" in source
assert "prefix_cer={comparison.prefix_cer:.6f}" in source
assert "suffix_cer={comparison.suffix_cer:.6f}" in source
assert "tail_units={comparison.extra_tail_units}" in source
def test_space_locks_validated_nfe_and_bounds_total_generation_work():
source = (ROOT / "app.py").read_text(encoding="utf-8")
quality_source = (ROOT / "quality_runtime.py").read_text(encoding="utf-8")
readme = (ROOT / "README.md").read_text(encoding="utf-8")
assert "QUALITY_MAX_GENERATED_CHUNKS = 32" in source
assert "QUALITY_MAX_GENERATED_TEXT_UNITS = 800" in source
assert "EMAIL_MAIL_FALLBACK_CANDIDATE_ORDINALS = frozenset((2, 5, 6))" in source
assert "NETWORK_REQUEST_ORDINARY_MAX_UNITS = 36" in source
assert "ordinary_max_units=NETWORK_REQUEST_ORDINARY_MAX_UNITS" in source
assert "PACE_ONLY_FALLBACK_MIN_SPEED = 0.76" in source
assert "PACE_ONLY_FALLBACK_MIN_UNITS = 30" in source
assert "if observed_cps > QUALITY_MAX_PACE_CPS:" in source
assert "final_audio = _apply_speed(" in source
assert "fallback_speed = final_speed * fallback_residual" in source
assert "max_generated_chunks=QUALITY_MAX_GENERATED_CHUNKS" in source
assert "max_generated_text_units=QUALITY_MAX_GENERATED_TEXT_UNITS" in source
assert "candidate_generation_text_transform=(" in source
assert "_verify_refill_candidate_trajectory_audio(" in source
assert "def run_coverage_adaptive_cascade(" in quality_source
assert "proposed_generation_chunks = generation_chunks(" in quality_source
assert "generated_chunks += 1" in quality_source
assert "generated_units += refill_units" in quality_source
assert "select_culprit_diverse_candidate_sequences(" in quality_source
assert "requested_steps != DEFAULT_STEPS" in source
assert "interactive=False" in source
assert "NFE steps(已驗證固定值)" in source
assert "最多 3 條 culprit-diverse 完整路徑" in readme
assert "不再為了取得某一段替代候選而重生整篇" in readme
assert "boundary-only relaxation" in readme
def test_pace_only_fallback_guard_starts_at_30_ordinary_units_not_29():
app_path = ROOT / "app.py"
constants = _literal_constants(app_path)
tree = ast.parse(app_path.read_text(encoding="utf-8"))
generate_chunk = next(
node
for node in tree.body
if isinstance(node, ast.FunctionDef) and node.name == "_generate_chunk"
)
guarded_ifs = [
node
for node in ast.walk(generate_chunk)
if isinstance(node, ast.If)
and any(
isinstance(name, ast.Name)
and name.id == "PACE_ONLY_FALLBACK_MIN_UNITS"
for name in ast.walk(node.test)
)
]
assert constants["PACE_ONLY_FALLBACK_MIN_UNITS"] == 30
assert len(guarded_ifs) == 1
expression = ast.Expression(body=guarded_ifs[0].test)
ast.fix_missing_locations(expression)
guard = compile(expression, str(app_path), "eval")
def eligible(units, *, network_conditioned=False):
return eval(
guard,
{
"PACE_ONLY_FALLBACK_MIN_UNITS": constants[
"PACE_ONLY_FALLBACK_MIN_UNITS"
],
"count_speech_units": lambda _text: units,
"network_conditioned": network_conditioned,
"text": "測試",
},
)
assert eligible(29) is False
assert eligible(30) is True
assert eligible(30, network_conditioned=True) is False
def test_assembled_waveform_uses_250ms_ordinary_and_350ms_network_request_pause():
assemble = _isolated_assemble_trajectory_audio()
chunks = ("第一段,", "第二段")
trajectory = (
np.ones(100, dtype=np.float32),
np.ones(100, dtype=np.float32),
)
ordinary = assemble(trajectory, chunks, 1.0)
assert ordinary.shape == (450,)
np.testing.assert_array_equal(ordinary[100:350], np.zeros(250, dtype=np.float32))
first_end = len(chunks[0])
network_specs = (
GenerationChunkSpec(
text=chunks[0],
source_start=0,
source_end=first_end,
boundary_after="semantic",
),
GenerationChunkSpec(
text=chunks[1],
source_start=first_end,
source_end=first_end + len(chunks[1]),
network_span_indices=(0,),
boundary_after="none",
),
)
network_request = assemble(trajectory, chunks, 1.0, network_specs)
assert network_request.shape == (550,)
np.testing.assert_array_equal(
network_request[100:450],
np.zeros(350, dtype=np.float32),
)
def test_space_locks_waveform_only_bounded_whisper_segmentation():
source = (ROOT / "quality_runtime.py").read_text(encoding="utf-8")
readme = (ROOT / "README.md").read_text(encoding="utf-8")
assert "WHISPER_MAX_SEGMENT_SECONDS = 28.0" in source
assert "WHISPER_HARD_MAX_SEGMENT_SECONDS = 30.0" in source
assert "WHISPER_MIN_SEGMENT_SECONDS = 1.25" in source
assert "WHISPER_MIN_PAUSE_SECONDS = 0.25" in source
assert "WHISPER_MAX_VERIFICATION_SEGMENTS = 12" in source
assert "WHISPER_MAX_MICROBATCH_SEGMENTS = 6" in source
assert "target-dependent fallback" in readme
assert "每次驗證最多 12 段" in readme