-
Notifications
You must be signed in to change notification settings - Fork 0
Feature: sync VHS tape Sleep durations from timing.json (Whisper) #11
Copy link
Copy link
Open
Description
Problem
VHS demos require Sleep values that match TTS audio length. Today this is manual trial-and-error; docgen compose enforces a max freeze ratio when video is shorter than audio.
Proposal
Add a command (e.g. docgen sync-vhs or docgen tape-sync) that:
- Reads
animations/timing.jsonproduced bydocgen timestamps(Whisper segments on eachaudio/*.mp3). - Parses each
terminal/*.tapeforType/Enter/Sleepblocks after the firstShow(preamble unchanged). - Partitions the narrated time span into equal wall-clock windows (one per block) and sets each
Sleeptowindow_duration - estimated_typing_time(typing estimate fromTypepayload length × configurable ms/char, capped).
Prior art
Course Builder implements this as a standalone script you can lift or vendor:
https://github.com/jmjava/course-builder/blob/main/docs/demos/scripts/sync_vhs_sleep_from_timing.py
Acceptance criteria
- New subcommand documented in README
- Works with existing
timing.json+.tapelayout;--dry-runand--segment(stem) filters - Optional hook from
generate-all/rebuild-after-audioaftertimestampswhen config flag set
Notes
This does per-block alignment to the audio timeline, not word-level karaoke. Manim remains the path for frame-accurate visuals.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels