Join Audio
Splice a whole list of clips, silence gaps included
- audios
- audio
JoinAudio is ConcatAudio's bigger sibling. Where ConcatAudio stitches exactly two clips together, this one takes a whole list of AUDIO tracks and joins them all into a single track, with an optional silence gap inserted between each pair. It's the node you reach for when you're assembling something from many parts - a batch of generated sound effects, several narration takes, a chain of dialogue clips - and you want one file at the end. It lives in lebrosoft/ComfyUI-VideoChatWrapper, a small pack whose audio utilities are a genuinely useful general-purpose toolkit grafted onto a video-chat project.
How it works
The key thing to understand is that the audios input is a list input. In ComfyUI terms, the node is declared with INPUT_IS_LIST = True, so it accepts multiple AUDIO tracks wired in as a batch. Under the hood it takes whatever list arrives, checks it's not empty, and concatenates every waveform along the time axis.
The silent_interval input (in seconds, float) inserts a gap of silence between every consecutive pair - and only between them. The code appends a gap after each clip and then pops the trailing one, so there's no accidental silence tacked onto the end. If you set it to 0.5, you get a clean half-second breather between every segment.
The inputs that matter
audios- the list ofAUDIOtracks to join, in playback order.silent_interval- seconds of silence between each track. Default0, which gives you a butt-splice with no gap.
Output is a single audio track.
Where people get burned
Same two walls as ConcatAudio, just harder to dodge because you've got more inputs to keep consistent:
- Mismatched sample rates. The node refuses with
sample_rate must be the same.You cannot join a 44.1 kHz clip and a 48 kHz clip until you resample - that's what the pack's ResampleAudio node is for. - Mixed channel layouts. It insists all tracks are stereo or all mono, else:
All audio must be either stereo or monaural.ConvertAudioChannels sorts that out.
So the workflow shape is familiar to anyone who's used this pack: normalize everything first (resample + channel convert), then join. Do it once, wire up a clean template, and the batch assembling becomes trivial.
Installing it
Via ComfyUI Manager, search for ComfyUI-VideoChatWrapper, or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/lebrosoft/ComfyUI-VideoChatWrapper
Restart ComfyUI and you're done. The audio nodes need torchaudio (included with the portable install; pip install torchaudio if your environment lacks it), and the pack's requirements.txt only lists qwen_vl_utils, which is for the video-chat side - you won't be pulling down any model weights to splice audio.
A straight talk note: this is a low-profile pack with essentially no community footprint, so don't expect tutorials or issue threads to hold your hand. But the code is small, readable, and stable. For batch-joining audio in a graph, it's one of the simplest options that exists.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audios | AUDIO | — | |
| silent_interval | FLOAT | 0.000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |