Nodes/ComfyUI-AudioSuiteAdvanced/Audio Concatenate (ASA)
ComfyUI Node

Audio Concatenate (ASA)

Stick Two Audio Clips Together — With a Breather in Between

By whmc76·Created about a year ago·Updated 15 days ago· 29
Audio Concatenate (ASA)
  • audio1
  • audio2
  • AUDIO
directionright
gap_duration0.00

Audio Concatenate (ASA) is the node you reach for when you have two AUDIO clips and you want them to become one, in a specific order, with an optional pause between them. It's the glue step of the pack's whole TTS workflow: you generate a line of dialogue, generate the next line, and this node turns the two of them into a single continuous take. No API calls, no key, no model download - it's pure torch tensor math on clips you already have.

If that sounds almost too simple, you're right, and that's the point. The fancier sibling in this pack, Combine Audio From List, joins a whole batch and can even align clips to subtitle timestamps. This one is the two-clip quick join: intro into the main track, one narrator line into one character line, a closing sting onto the end of a voiceover.

How it works

Both inputs are the standard ComfyUI AUDIO dict (waveform tensor plus sample_rate). The node concatenates them along the time axis with torch.cat. Set direction to right and you get audio1 first, then audio2; set it to left and audio2 leads. If gap_duration is more than 0, a block of pure silence (zero samples) is generated and dropped in between - handy so the listener gets a beat to breathe, or so two TTS takes don't butt heads.

Two tolerant behaviors worth knowing: if one of the inputs is None, it just returns the other one. And it raises a clear error if the two clips have different sample rates - which is the pack's universal rule, more on that below.

The inputs that matter

  • audio1 / audio2 - the two clips. That's it, that's the job.
  • direction - right (audio1, then audio2) or left (audio2, then audio1). Default right.
  • gap_duration - seconds of silence between them, 0 to 10, stepped in 0.01s. Default 0.

The single output is AUDIO, which you can wire straight into Save Audio, Preview Audio, or any other node that eats audio.

Installing it

The pack is whmc76/ComfyUI-AudioSuiteAdvanced (display name "AudioSuiteAdvanced"). Easiest via ComfyUI Manager: search "AudioSuiteAdvanced" and install. Manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/whmc76/ComfyUI-AudioSuiteAdvanced
cd ComfyUI-AudioSuiteAdvanced
pip install -r requirements.txt

Then restart ComfyUI. The requirements are the standard audio stack - pydub, librosa, torchaudio, numpy, moviepy, scipy, soundfile, faster-whisper - which you probably already have if you run any other audio pack.

Where people get burned

The one real trap: both clips must share a sample rate. If clip A is 44.1 kHz and clip B is 48 kHz, the node throws instead of silently making garbage - good behavior, but it means you need to resample upstream before wiring them in. That "all AUDIO nodes need matching sample rates" note is the first line of the pack README's compatibility section for a reason.

Second: don't build a long chain of these. For three or more clips, you're better off with MakeAudioBatch → Combine Audio From List, which does the same concatenation in one pass and doesn't force you into a binary tree of nodes. This node is the right tool for a simple two-piece join and the wrong one for assembling a 40-line audiobook.

CategoryAudioSuiteAdvanced

Inputs (4)

NameTypeDefaultDescription
audio1AUDIO
audio2AUDIO
directionCOMBOright2 options: right, left
gap_durationFLOAT0.000–10

Outputs (1)

NameTypeDescription
AUDIOAUDIO