We built an audio QC system for a localization operation, which meant writing down — exhaustively — everything that goes wrong in dubbed deliveries. This checklist is that list. Use it as-is with a spreadsheet and a patient operator, or read to the end for the honest math on when manual checking stops being possible.
Layer 1 — Names
Every localized file must pair with its original. What goes wrong: missing files, extra files nobody asked for, near-miss names (-004 delivered as -003), and language sub-extensions (.las, .esp, .bra) wrong or absent — which downstream tools read as "this file doesn't exist."
Machine layer. A cross-check also catches the orphan pairs a human skims past, and suggests the near-miss matches instead of just flagging them.
Layer 2 — Durations
A dubbed take that runs long breaks lip-sync and UI timing; one that runs short reads as cut off. The tolerance is rarely one number: cue sheets carry per-line vocabulary — a percentage, milliseconds, frames, or sync classes like LIP / ON / OFF / WILD, each with its own allowance.
Machine layer. The tolerance column can be parsed from the cue sheet itself, so every line is judged against its own allowance instead of a single blanket threshold.
Layer 3 — Levels
Specs arrive in two dialects: average/peak dB, or broadcast-style loudness — LUFS with true peak (EBU R128). Worse, they often arrive as prose: "around −12 to −18 dB." Decide the interpretation once, write it down, and measure every file against it — a delivery that's perfect except 6 dB hot is not perfect.
Machine layer. Loudness is pure measurement — the kind of check that runs at ~115× real time and never gets tired in file four hundred.
Layer 4 — Technical integrity
Sample-rate and channel-count mismatches against the original, clipped samples, head and tail silence beyond spec, and the classic silent killer: a mute file with a valid name and a plausible duration.
Machine layer. All of it is deterministic. None of it should consume human attention.
Layer 5 — Content
The layer almost nobody checks, because checking it used to mean listening to every take: does the file actually say its script line? The failure modes are real: crossed takes (this file contains another line's read), wrong-language deliveries landing in the wrong batch, and half-read lines that end mid-sentence.
Machine layer. This is the one that changed recently: on-device transcription can compare every take against its script line, word by word, in the line's own language — and match takes to lines by content when the script has no filename column. In the operation we built for, checking to this depth simply wasn't attempted before: a 9,000-take delivery would have taken two people about three weeks by hand, without reaching this precision.
Layer 6 — Structure
The client expects their folder tree back, mirrored, with their naming rules applied. Every hand-rebuilt tree is a fresh chance to lose files that survived all five layers above.
Machine layer. Assembly from rename rules with a plan you approve before it runs — then folder-by-folder verification of what was actually written.
Layer 7 — Paperwork
The As-Recorded script: the client's own Excel with the AsRec column reflecting what was actually said, differences visible. Skip it and every future change order starts from a script that lies.
Machine layer. Generated as a copy of the client's own file with only that column changed — differences in red, statuses color-coded.
The order matters
Run the layers cheapest-first: names before durations, durations before levels, everything before content. Each layer filters the next one's workload — there's no point measuring loudness on a file that's about to be rejected for a wrong name. And report reds first: a QC report that opens with four hundred rows of "OK" is hiding the six rows that matter.
When manual stops being honest
A careful operator with headphones can hold this bar for dozens of takes. At hundreds, layers get skipped silently — usually layer 5, the expensive one. At thousands, "we checked everything" becomes a polite fiction: the arithmetic (two people, three weeks, one 9,000-take delivery) doesn't survive contact with a release calendar. That's not an argument against operators — it's an argument for pointing them at the problem list instead of the haystack. The machine listens to everything; the human decides what to do about what it found.
The system we built for this — on-device, no per-file cost, client audio never leaving the machine — is written up in full in the ASSETS CONTROL case study. And if your own delivery pipeline runs on a spreadsheet and patience, you already know which guide to read next.