Fighting Game · Guides & deep dives

Voice-Over Lip-Sync Per Locale

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.

2sections1 minread

On this page

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.