# Voice-Over Integration Pipeline

This document defines the voice-over integration pipeline for
`TODOS.phase-72.72.11.2.8`. The pipeline uses the recording script export to
match VO audio files to dialogue IDs, validate coverage, and detect missing
recordings before localized audio can be imported into Unreal.

The tracked contract is
`V2/ue/Content/Localization/V2/VoiceOverIntegrationPipeline_V2_Contract.json`.
The deterministic generated pipeline lives at
`V2/ue/Content/Localization/V2/VoiceOver/Integration/VoiceOverIntegrationPipeline_V2.json`,
and the coverage summary lives at
`V2/ue/Content/Localization/V2/VoiceOver/Integration/VoiceOverIntegrationCoverageReport_V2.json`.

## Matching Rules

`V2/ue/Tools/generate-v2-voice-over-integration-pipeline.py` reads
`VoiceOverRecordingScriptExport_V2.json` and `VoiceOverAssetManifest_V2.json`.
For each recording-script row it derives the expected source WAV path:

`V2/ue/Content/V2/Audio/Voice/{locale}/{voiceBank}/source_wav/{assetFileName}`

It also derives the metadata sidecar path:

`V2/ue/Content/V2/Audio/Voice/{locale}/{voiceBank}/metadata/{metadataFileName}`

Rows preserve the dialogue ID, localized line ID, locale, slate ID, voice cue,
subtitle timing ID, voice bank, expected WAV, expected metadata sidecar, match
status, and coverage status.

## Coverage And Missing Recordings

The current repository has recording scripts but no committed localized source
WAV recordings under `V2/ue/Content/V2/Audio/Voice`. The tracked
`VoiceOverIntegrationPipeline_V2.json` therefore reports twelve expected Asha
story-dialogue recordings, zero matched recordings, and twelve missing
recordings. That incomplete coverage is intentional evidence that missing
recordings are detected instead of silently treated as complete.

`V2/ue/Tools/check-v2-voice-over-integration-pipeline.py` validates the
contract, pipeline, coverage report, deterministic generation, CI and Horde
wiring, and the phase-72 checklist. It also creates a temporary audio root with
all expected WAV and metadata sidecar files to prove the matcher reaches
complete coverage, and a negative recording-script case to prove malformed rows
fail validation.
