PR-4 of ADR-0181. The acceptance-gate lane that decides whether audio_core_v1's
gate may open. Deterministic synthesis-spec fixtures (no .wav blobs) with
predicted parses, so the gates grade parser semantics as well as determinism.
evals/audio_sensorium/:
- synth.py deterministic fixture synthesis (PCG64 + float32-at-boundary)
- fixtures.json 5 specs: silence, rising-pitch question, falling statement,
noise burst, speech-then-pause
- generate_expected.py reproducible pin generator (uv run -m ...)
- expected_ir.jsonl frozen canonical_sha256 + ir_sha256 + event_type_counts
- expected_projection.json frozen projection_sha256 + reference versor
tests/test_audio_eval_gates.py (12): the gate table per fixture —
shape/dtype, versor_condition<1e-6, within-run replay, canonical-checksum
stability (hard int/cast-stable pin), IR-replay + frozen ir_sha256, semantic
event_type_counts (parser-accuracy gate), and cross-platform versor stability
within atol=1e-6 of the reference (float-safe per eval plan); plus trace
hygiene and gate-closure refusal.
Verified semantics: rise→prosody.rise, fall→prosody.fall, silence→pause.long+
turn.boundary, noise→nonspeech.noise, speech_then_pause→all three.
Cross-platform note: int/quantized-derived hashes are pinned hard; the float
versor is compared within tolerance rather than hash-pinned, since cos/sin/
geometric_product can differ by a ULP across arches. This is the eval-plan's
"equal within declared numeric tolerance" reading — keeps CI stable.
All audio 44 + arch-invariants 40 + smoke 67 green. No core mutation.
20 lines
990 B
JSON
20 lines
990 B
JSON
{
|
|
"sample_rate": 24000,
|
|
"comment": "Deterministic synthesis specs. Each fixture is designed with a predictable parse so the gate grades parser semantics, not just determinism (ADR-0181 PR-4).",
|
|
"fixtures": [
|
|
{"id": "silence_500ms", "kind": "silence", "ms": 500,
|
|
"expect": "long pause + turn boundary, no speech"},
|
|
{"id": "rise_question", "kind": "tone", "ms": 300, "hz": 150, "sweep": 90, "amp": 0.5,
|
|
"expect": "voiced speech + rising final contour"},
|
|
{"id": "fall_statement", "kind": "tone", "ms": 300, "hz": 230, "sweep": -90, "amp": 0.5,
|
|
"expect": "voiced speech + falling final contour"},
|
|
{"id": "noise_burst", "kind": "noise", "ms": 300, "seed": 7, "amp": 0.3,
|
|
"expect": "non-speech broadband noise"},
|
|
{"id": "speech_then_pause", "kind": "concat",
|
|
"parts": [
|
|
{"kind": "tone", "ms": 300, "hz": 150, "amp": 0.5},
|
|
{"kind": "silence", "ms": 400}
|
|
],
|
|
"expect": "voiced speech then long pause + turn boundary"}
|
|
]
|
|
}
|