Manual Lyrics Extractor (SRT Advanced - stable-ts)
Turn audio into word-timed lyrics your video builder can actually use
- audio
- all_lyrics_combined
The difference between a music video that feels synced and one that feels random is timing - and timing starts with lyrics that have timestamps. Whisper alone gives you segment-level timestamps that drift off the beat, which is useless for scene changes at 4-second granularity. VRGDG Manual Lyrics Extractor (SRT Advanced) is the pack's transcription node, and it's built on stable-ts: a Whisper fork that produces genuinely word-level timestamps and can align to a reference lyric sheet you already have. Feed it audio, get back combined, timed lyrics the builder can cut scenes against.
How it works
The node takes an audio input (any audio the pack's loaders produce), runs it through Whisper - model_name defaults to large-v3, the heavyweight - and produces a timed transcript. The srt_path input writes the result out as an SRT file if you give it a path, which is how you'd hand the timing to an external editor. But the real output is all_lyrics_combined, a single STRING with everything joined together, ready to feed the builder's lyric/timing stage.
The controls that actually matter for music:
reference_lyrics+strict_reference_text- paste the real lyrics and the aligner will snap the transcription to them. This is the killer feature for music work: Whisper's hallucinated chorus repeats stop being a problem when it's pinned to the actual words. Strict mode demands the match; turn it off when your lyrics sheet is approximate.fill_aggressiveness(1–5) - how hard it fills gaps between detected words when aligning. Higher fills more aggressively across instrumental stretches.preserve_nonvocal_segments- keep instrumental/intro segments as timed placeholders instead of dropping them. That matters because an intro with no lyrics is exactly where these pipelines break.alignment_min_words- the minimum word count to attempt alignment on a segment.scene_duration_seconds/fps- the scene grid the transcript gets sliced to; 4s at 25fps is the default.language- pick your language;autoworks but naming it is more reliable.
Install
Part of the VRGameDevGirl pack: ComfyUI Manager → search vrgamedev (or add https://github.com/vrgamegirl19/comfyui-vrgamedevgirl), restart, hard-refresh. Manual: git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl into custom_nodes, then pip install -r requirements.txt. On Windows portable install Cython and scikit-build-core first - this pack's compiled deps are the reason - and prefer Python 3.12.
Troubleshooting
First run will download the Whisper model (large-v3 is a couple of GB) - it's not hung, it's fetching. If the transcript comes back in the wrong language, stop relying on auto and set language. If the timing slides off the beat, the fix is almost always reference_lyrics: pasting accurate lyrics plus strict_reference_text is what pulls word timestamps onto the music. And an intro or long instrumental with no vocals is the classic failure point people hit with the v9-era builder - preserve_nonvocal_segments keeps those sections as timed gaps instead of letting the aligner invent words over silence. If large-v3 is too slow on your CPU, model_name accepts smaller Whisper variants like base or small, though you'll trade a bit of alignment quality.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| scene_duration_seconds | FLOAT | 4.001–60 | — |
| fps | INT | 251–60 | — |
| srt_path | STRING | — | |
| reference_lyrics | STRING | — | |
| strict_reference_text | BOOLEAN | true | — |
| fill_aggressiveness | INT | 11–5 | — |
| preserve_nonvocal_segments | BOOLEAN | true | — |
| alignment_min_words | INT | 21–8 | — |
| model_name | STRING | large-v3 | — |
| language | COMBO | english | 113 options: auto, english, chinese, german, spanish, russian, +107 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| all_lyrics_combined | STRING | — |