Combine Audio From List (ASA)
Meld a Pile of Audio Clips Into One Timeline — Subtitle-Synced or Not
- audio_batch
- combined_audio
Combine Audio From List (ASA) is the payoff node of this pack - the thing that turns a queue of separate clips into one finished audio track. Feed it a LIST of AUDIO objects (from Make Audio Batch or any other list source), and it concatenates them into a single clip, with an optional silence gap between each. That's the basic mode, and it's genuinely useful for stitching TTS lines into a narration.
But the headline feature is the second mode: timestamp alignment. Flip use_timestamps on, point it at a subtitle file, and each audio clip in your list is placed on the timeline at the moment its corresponding subtitle says it should occur, with silence padded automatically. This is how you re-dub a video: generate new dialogue per line, then have the combiner drop each line at the exact timestamp the original subtitle used. The result lines up with the picture with zero manual placement.
How it works
Both modes start by flattening the list (it tolerates nested lists) and verifying every clip shares one sample rate - mismatch raises an error. Plain mode just concatenates, inserting a gap_duration block of silence between clips if set.
Timestamp mode parses the subtitle file - srt, ass, ssa, vtt, lrc, and sub are all handled - to get each line's start/end times. It then walks the list of clips against that list of intervals, padding silence up to each start time before dropping the clip in, and tracking the running "current time" off each subtitle's end. The audio clips are matched to subtitle entries by position: clip 0 goes with subtitle line 0, clip 1 with line 1, and so on.
The inputs you'll actually set
- audio_batch - the
LISTof AUDIO objects. Required. - gap_duration - seconds of silence between clips,
0–10, default0. Only applies in plain mode. - use_timestamps -
falsefor plain concatenation,truefor subtitle alignment. Defaultfalse. - srt_file - optional; the subtitle file path. Feed it Subtitle File Loader's
filepathoutput. Only used whenuse_timestampsis on.
The single output, combined_audio, is a normal AUDIO clip you can save or preview.
Installing it
Ships in whmc76/ComfyUI-AudioSuiteAdvanced (display "AudioSuiteAdvanced"). ComfyUI Manager → search "AudioSuiteAdvanced", or:
cd ComfyUI/custom_nodes
git clone https://github.com/whmc76/ComfyUI-AudioSuiteAdvanced
cd ComfyUI-AudioSuiteAdvanced
pip install -r requirements.txt
Restart ComfyUI. No model downloads for this node.
Where people get burned
The positional matching is the thing to wrap your head around: the combiner assumes the order of your clips matches the order of the subtitles. If you generate TTS lines in a different order than the script, or skip a line, everything after that point lands on the wrong timestamps. Generate your lines in script order.
Format caveats are real too. The code is open about its approximations: LRC treats each timestamp as a 1-second slot, and .sub assumes 25 fps frame numbers. For anything serious, use srt - it's the only format where the timestamps are true start/end pairs.
And the ever-present pack rule: all clips in the batch must share a sample rate, or the node raises. If your TTS output is 22.05 kHz and your reference audio is 44.1 kHz, normalize upstream first - the aligner can't fix a rate mismatch, and it's the #1 error you'll hit the first time you try this workflow.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_batch | LIST | — | |
| gap_duration | FLOAT | 0.000–10 | — |
| use_timestamps | BOOLEAN | false | — |
| srt_fileopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| combined_audio | AUDIO | — |