---
name: "video_localization_dubbing"
description: "Plans and executes video dubbing and voice replacement: adapts scripts for lip sync, casts voices, runs recording-to-picture sessions, and mixes the dub master to broadcast loudness specs (EBU R128, ATSC A/85, Netflix). Triggers when the user needs a video dubbed into another language, a voice track replaced, or a dubbed mix checked for delivery."
---

# Video Localization Dubbing

## Purpose

Turn a finished video into a finished dub: a script that fits the actors' mouths, voice performances recorded to picture, and a mix that passes the destination's loudness spec. The output is a deliverable dubbed master plus a QC report, not a description of dubbing.

## Workflow

**1. Confirm the delivery target first.** Dubbing specs follow the platform: broadcasters follow EBU R128 (-23 LUFS) in Europe or ATSC A/85 (-24 LKFS) in the US; Netflix streamers mix to a -27 LUFS dialogue-gated target. Ask where the video will play before touching the script. See `references/loudness_delivery.md` for the full table.

**2. Translate, then adapt.** A literal translation almost never fits the mouths. After translation, adapt each line for the three synchronies (Chaume's typology, `references/script_adaptation.md`):
- **Isochrony** — the translated line must take the same time as the original, fitting between the actor's mouth opening and closing. This is the first thing viewers notice when it breaks.
- **Lip synchrony** — where the mouth is visible (close-ups), match bilabials (p, b, m), labiodentals (f, v), and open vowels (a, e, o). Exact phonemes are not required; visibly similar sounds are enough. Lip sync outranks literal meaning in close-ups.
- **Kinetic synchrony** — the line must not contradict the actor's gestures.

Adaptation tools: word-order changes, substitution with synonyms, reduction/amplification, adding or dropping words. When the original actor is multilingual, cast them if possible; it solves lip sync for free.

**3. Build the dubbing script.** One row per line: timecode in/out, character, original line, adapted line, and adaptation notes (what was sacrificed and why). Longer material belongs in a trackable sheet, not chat. If the project uses prompting software (VoiceQ, Mosaic, ADR Master 2), export in that tool's format or Netflix's TTAL.

**4. Cast voices.** Match voice age and range to the on-screen actor, not just the language. Record a short audition per principal against picture, not audio-only. Get approval on casting before full recording; re-recording a full part is the expensive mistake.

**5. Record to picture.** Sessions run in an ADR-style setup: actor watches picture, hears the guide track, and records after three cue beeps (the classic 3-2-1 cadence). Work in short loops, one cue at a time, keeping a select plus two alternate takes per line. The director cues pace and tone; the recordist logs take numbers per cue code. See `references/recording_session.md`.

**6. Edit, mix, and loudness-check.** Edit the selected takes, lay the dubbed dialogue over the fully-filled M&E (music and effects) track, and mix. Then run `bin/dub_loudness_check.py` against the delivery target; it measures with ffmpeg's loudnorm and gives a pass/fail verdict with the exact fix. Fix failures by adjusting the mix, not by arguing with the meter. Deliver stems (dialogue, music, effects) plus the final master, with files named to the platform's convention.

## Output Contract

A finished dub job delivers:
1. **Dubbing script** — adapted lines with timecodes and adaptation notes.
2. **Recorded dialogue** — per-character tracks, labeled with take numbers.
3. **Dub master** — mixed audio (and final video) at the delivery target's loudness.
4. **QC report** — output of `dub_loudness_check.py`: measured integrated loudness, true peak, LRA, and pass/fail per spec.

## Operating Rules

- Never claim a number you did not verify. Loudness targets in this skill come from EBU R128-2020, ATSC A/85, and Netflix's published mix specs; sources are in `~/workspace/skill-production/scratch/video-localization-dubbing-sources.md`. If a client names a different target, use theirs but write it down with its source.
- One master per loudness target. Do not ship the same file to two destinations with different specs.
- The M&E track must be fully filled (no holes, no stray original-language dialogue) before dubbing starts. Check this first; discovering it mid-session burns a recording day.
- Keep the original production dialogue isolated on its own track. It is the timing reference for every adapted line and the guide for the recording session.
- No AI-voice replacement presented as a human performance without disclosure. If the user wants synthetic voices, say so in the QC report.
- Keep SKILL.md tight. The detail lives in `references/`; read only the file the current phase needs.
