# Voice-Over Lip-Sync Per Locale

This document defines voice-over lip-sync per locale for
`TODOS.phase-72.72.11.2.9`. The pipeline uses each language's VO integration row
and recording metadata to generate phoneme data aligned to localized voice
duration for accurate lip sync.

The tracked contract is
`V2/ue/Content/Localization/V2/VoiceOverLipSyncPerLocale_V2_Contract.json`. The
deterministic output lives at
`V2/ue/Content/Localization/V2/VoiceOver/LipSync/VoiceOverLipSyncPerLocale_V2.json`,
and the summary report lives at
`V2/ue/Content/Localization/V2/VoiceOver/LipSync/VoiceOverLipSyncPerLocaleReport_V2.json`.

## Generation

`V2/ue/Tools/generate-v2-voice-over-lip-sync-per-locale.py` reads
`VoiceOverIntegrationPipeline_V2.json` and
`VoiceOverRecordingScriptExport_V2.json`. When a localized source WAV and
metadata sidecar exist, it derives a locale-specific phoneme profile,
distributes phoneme cues across the recorded duration, maps phonemes to visemes,
and emits a monotonic phoneme timeline for the dialogue line.

The current repository has no committed localized source WAV files, so the
tracked output records twelve waiting rows and zero generated phoneme cues. The
checker creates temporary WAV and metadata files to prove the generator emits
phoneme timelines when each language's VO is present.

## Validation

`V2/ue/Tools/check-v2-voice-over-lip-sync-per-locale.py` validates the contract,
deterministic output, report, CI and Horde wiring, missing-audio detection, full
temporary-audio phoneme generation, monotonic cue timing, viseme mapping, and
the phase-72 checklist.
