This commit is contained in:
Andras Schmelczer 2026-06-28 11:59:44 +01:00
parent f1601257c7
commit c2070693fb
68 changed files with 2305 additions and 212 deletions

View file

@ -2,9 +2,9 @@
Reads two manifests inside ``output/<storyboard>/``:
* ``audio/index.json`` (synth output) per-cue WAV filename + measured
* ``audio/index.json`` (synth output): per-cue WAV filename + measured
duration. Generated BEFORE recording in one batched Qwen3-TTS call.
* ``narration.json`` (recorder output) per-cue ``videoTimeMs`` against
* ``narration.json`` (recorder output): per-cue ``videoTimeMs`` against
the trimmed video. Generated DURING recording.
Joins them by ``cueIndex`` (index in the cue list, 1:1 between manifests),
@ -115,7 +115,7 @@ def main() -> int:
}
)
# Refuse to mux overlapping cues amix would silently mash voices on top
# Refuse to mux overlapping cues: amix would silently mash voices on top
# of each other. Sort by start so the order matches what we'll actually
# play, then check that each cue ends before the next one starts.
ordered = sorted(items, key=lambda it: it["videoTimeMs"])