Build lyric videos end to end: timed-lyrics alignment, beat mapping for pacing, karaoke subtitle generation, phone-first typography, and distributor-ready exports. Use when making a lyric video, syncing lyrics to audio, or choosing export specs for a music video.
./install.sh lyric-video-productionname: "lyric_video_production" description: "Build lyric videos end to end: timed-lyrics alignment, beat mapping for pacing, karaoke subtitle generation, phone-first typography, and distributor-ready exports. Use when making a lyric video, syncing lyrics to audio, or choosing export specs for a music video."
Turn a song plus its lyrics into a finished lyric video: word-level timing, beat-synced pacing, readable kinetic typography, and export files that meet distributor specs. The output is a render-ready subtitle package (or burned-in video) plus placement-specific masters.
word_timestamps=True), then align the known lyrics against the transcript. Simple reliable approach: group Whisper word times into lines at natural pauses, then match each lyric line to the overlapping segment and shift times onto it. Tip from practice: transcribe speech/vocal segments separately starting ~0.15 s before the first sound, because Whisper stretches first words across leading silence.timed_lyrics.json: {"lines":[{"text": "...", "words": [{"w": "...", "start": 1.0, "end": 1.45}, ...]}, ...]}. Spot-check verse 1, the chorus, and the bridge against the audio before continuing. A sync error caught here costs seconds; caught at render it costs an hour.python3 bin/lyric_beats.py song.mp3 --json It reports BPM and beat timestamps (numpy + ffmpeg only, no librosa needed). Use beats as sync points: lyric line entries, emphasis pulses, and visual cuts land on beats, never between them. On rubato or multi-tempo songs, verify the grid by ear against the chorus; the tracker is an aid, not the truth.python3 bin/lyric_ass.py timed_lyrics.json lyrics.ass then burn in with ffmpeg: ffmpeg -i bg.mp4 -vf "ass=lyrics.ass" -c:a copy out.mp4. The \k karaoke tags sweep the highlight word by word. Override style with --style "FontSize=72,Alignment=2" when the default does not fit.references/export-specs.md. One 1080p or 4K 16:9 master, one native 9:16 vertical master, named by placement. +faststart on every MP4. Re-check platform UI overlays on the vertical master.timed_lyrics.json in the documented schema, timings verified by spot-check.lyrics.ass) or a motion build driven by the same data.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.