Localization operations · a working checklist

Videogame dubbing QC: the seven-layer checklist

A dub comes back from the studio with hundreds — sometimes thousands — of takes. Here's everything that can be wrong with them, layer by layer, and which layers a machine now checks better than a person with headphones.

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.

QC table with per-take status chips, the script line versus what the take actually says, and loudness metrics
All seven layers in one screen: names, durations, loudness and — line by line — whether the take says its script line. The QC table on the system's built-in demo project; takes and script lines are sample material.
Text review panel with word-level differences and approve, edit and re-record decisions per line
The human half of layer 5: word-level differences pre-flagged, with approve / edit / re-record decisions — the operator starts from the problem list, not the haystack.

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.

Drowning in takes?

Tell us what your delivery QC looks like today. Within 24 hours we'll tell you whether it's automatable and whether the math is likely to work.

Show us the problem →