SRT To Audio
The all-in-one that turns subtitles into a synced voice track
- model_key
- voice_clone_prompt
- audio
- adjusted_srt
This is the "do it all in one node" version of VoiceBridge's dubbing pipeline. Give it an SRT, a loaded Qwen3-TTS model, and a voice clone prompt, and it reads every subtitle, synthesizes each sentence in the cloned voice, lines all the audio up with the original subtitle timing, and hands you a single merged audio track plus a corrected SRT. One node, one queue, done.
How it works
Under the hood it's the same engine the decoupled pipeline uses, but batched and self-contained:
- Parse the SRT into subtitle entries.
- For each batch of entries (default
batch_size10), generate that sentence's audio with the cloned voice via Qwen3-TTS. - Fix the timing mismatches. This is the interesting part - synthesized speech rarely lands exactly inside the subtitle's slot. The node measures each clip against its subtitle window and applies three corrections in order: if the audio is shorter than the subtitle, it tightens the subtitle's end time to match; if it's longer than the available window (the gap before the next subtitle), it speeds the audio up; if it's still too long, it cascades - pushing subsequent subtitles later to make room. It's a pragmatic "make it fit" algorithm, and it's why the output includes an
adjusted_srt. - Merge everything into one ComfyUI
AUDIOand return the retimed SRT.
The inputs that matter
model_key- fromVoiceBridge TTS Loader(must be loaded first; this is the cache lookup by key).srt_string- the subtitles, fromVoiceBridge Load SRT,Generate SRT, or a paste.voice_clone_prompt- fromVoice Clone Prompt. Without it there's no voice identity; it's required.language-autoor one of 31 languages. For translation you'll typically set the target language here.tempo_limit(default 1.5, range 1.0–5.0) - the maximum speed-up factor the node will apply when audio overflows its slot. Lower = more conservative timing, higher = faster speech but risk of sounding rushed.mini_gap_ms(default 100, range 0–10,000) - the minimum gap it preserves between consecutive subtitles.batch_size(default 10) - how many sentences per TTS batch. Lower it if you're hitting memory limits on long SRTs.
Installing it
Part of the comfyui_voicebridge pack. ComfyUI Manager search "VoiceBridge", or:
cd ComfyUI/custom_nodes
git clone https://github.com/YanTianlong-01/comfyui_voicebridge.git
cd comfyui_voicebridge
pip install -r requirements.txt
Restart ComfyUI; expect the Qwen3-TTS weights to auto-download on first load.
When NOT to use it
The README now explicitly steers you toward the decoupled path - Load SRT → SRT Splitter → any TTS → Audio List Merger by SRT - for anything that isn't Qwen3-TTS. SRT To Audio is the bundled, opinionated, one-stop option, and it's the right call when you want the pack's own voice and don't care about swapping engines. But if you've spent a weekend training a VoxCPM voice or you just prefer Fish Audio's output, this node's model-key requirement locks you out - that's what VoiceBridge Audio List Merger by SRT is for. One more note: on failure it returns a silent audio track rather than throwing, so if your output is mysteriously quiet, check the [VoiceBridge] console logs - a silent result often means something upstream silently broke.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model_key | MODEL_KEY | — | |
| srt_string | STRING | — | |
| voice_clone_prompt | VOICE_CLONE_PROMPT | — | |
| languageopt | COMBO | auto | 31 options: auto, Chinese, English, Cantonese, Arabic, German, +25 |
| tempo_limitopt | FLOAT | 1.51–5 | Maximum speed-up factor for audio that exceeds subtitle duration |
| mini_gap_msopt | INT | 1000–10000 | Minimum gap between subtitles in milliseconds |
| batch_sizeopt | INT | 101–1000 | Number of subtitles to process in each batch |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| adjusted_srt | STRING | — |