Prepare a short incident alert for speech, verify units and service pronunciation, and block stale or unreviewed audio.
Project: release a spoken operational alert with reviewed values
Set the alert task
An operator must hear that gateway-west latency reached 47 milliseconds and that the rollback wait is 82 minutes. The displayed alert retains exact identifiers and values. The spoken script expands units, uses approved service pronunciation and preserves the two different measurements. Include an older 47-minute rollback rule to expose stale audio. Speech text normalization determines how each typed value is read.
Build a review fixture
Store source event and runbook passage IDs, source revisions, locale, typed values, protected terms, lexicon revision and generated audio version. Add cases with an unknown abbreviation, a changed threshold, a mixed-language sentence and a caption mismatch. Reviewers listen without seeing a presumed correct transcript, then compare what they heard with the source record. A synthetic audio preview is not a substitute for an actual listening check in the target environment.
Check dependencies
Only approved normalization and pronunciation entries may enter critical audio. When the runbook threshold or lexicon changes, invalidate the old artifact and regenerate. Preserve the audio and script under their versions for audit, but do not serve a stale version. Lexicon review governs domain terms; numeric evidence checks verify the source value before it is spoken.
Gate the release
Compare spoken values with source values, confirm service identity, check caption alignment and collect listener comprehension results by locale. Block release if any critical value or protected term is unreviewed. The code below verifies the artifact manifest, not the wave form; final acceptance still requires listening to the generated audio and testing it on the intended device.
Implementation
def audio_release_state(artifact, active_source, active_lexicon):
pending = []
if artifact["source_revision"] != active_source:
pending.append("source-revision")
if artifact["lexicon_revision"] != active_lexicon:
pending.append("lexicon-revision")
if not artifact["values_reviewed"]:
pending.append("value-review")
if not artifact["listening_reviewed"]:
pending.append("listening-review")
return {"state": "hold" if pending else "ready",
"pending": pending}
audio = {"source_revision": "runbook-r8", "lexicon_revision": "lex-r8",
"values_reviewed": True, "listening_reviewed": False}
assert audio_release_state(audio, "runbook-r8", "lex-r8") == {
"state": "hold", "pending": ["listening-review"]}
audio["listening_reviewed"] = True
assert audio_release_state(audio, "runbook-r8", "lex-r8")["state"] == "ready"
Performance and operating cost
This fixed-field manifest check is O(1) time and space. Speech synthesis, audio storage and human listening cost depend on duration, locales and revisions. A ready manifest only records completed checks; it cannot prove the audio sounded correct unless the listening result was collected and tied to this exact artifact version.
Common Mistakes
- Reading “ms” as an unreviewed abbreviation.
- Serving audio from an old rollback threshold.
- Accepting a correct transcript without listening to the audio.
- Changing the service name in speech while leaving the caption unchanged.
