Nodes/ComfyUI-AudioSuiteAdvanced/Combine Audio From List (ASA)
ComfyUI Node

Combine Audio From List (ASA)

Meld a Pile of Audio Clips Into One Timeline — Subtitle-Synced or Not

By whmc76·Created about a year ago·Updated 15 days ago· 29
Combine Audio From List (ASA)
  • audio_batch
  • combined_audio
gap_duration0.00
use_timestampsfalse
srt_file

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 LIST of AUDIO objects. Required.
  • gap_duration - seconds of silence between clips, 0–10, default 0. Only applies in plain mode.
  • use_timestamps - false for plain concatenation, true for subtitle alignment. Default false.
  • srt_file - optional; the subtitle file path. Feed it Subtitle File Loader's filepath output. Only used when use_timestamps is 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.

CategoryAudioSuiteAdvanced

Inputs (4)

NameTypeDefaultDescription
audio_batchLIST
gap_durationFLOAT0.000–10
use_timestampsBOOLEANfalse
srt_fileoptSTRING

Outputs (1)

NameTypeDescription
combined_audioAUDIO