๐ฅช Merge Audio
Layer voice over music and combine up to four tracks
- audio1
- audio2
- audio3
- audio4
- merged_audio
- merge_info
You generated a narration, you generated some ambience, and now you need them in one track. Merge Audio is the little mixing-desk node that does it - combine up to four audio sources into one, with a choice of how they blend. Layer a TTS voice over background music, stack a sound effect under dialogue, or crossfade between two clips. It's not a full DAW, but for finishing a ComfyUI audio graph without exporting to something else, it's exactly enough.
It handles the annoying plumbing too: mismatched sample rates get reconciled automatically, and it normalizes the result so you don't blow past 0 dB and clip.
How it works
You feed it audio and pick a merge_algorithm - the math it uses to combine the sources. The two you'll reach for most are overlay (natural layering - voice on top of music, both audible) and crossfade (smooth transition from one clip into the next). The others (mean, median, max, min, sum, weighted) are for specific jobs: mean for a balanced average, median to knock down outlier noise, weighted when you want to control the balance yourself. For most "voice + music" work, overlay is the answer.
The inputs and outputs that matter
audio1andaudio2- required, the two sources.audio3andaudio4are optional for stacking more.merge_algorithm- the blend mode.overlayfor layering,crossfadefor transitions,weightedfor a manual mix. This is the main decision.volume_balance(default 0.5) - the balance between sources. Slide it toward one input to make it louder in the mix - the lever for "voice too quiet under the music."normalize(on) - keeps the merged output from clipping. Leave it on unless you have a reason not to.
For transitions, crossfade_duration sets how long the blend lasts. There's also an optional pitch section - enable_pitch_control plus vocal_pitch_shift / instrumental_pitch_shift - for shifting a source up or down in semitones, and sample_rate (default auto) to force an output rate if you need a specific one.
Two outputs: merged_audio (AUDIO) โ your Save/Preview Audio node, and merge_info (text) describing what it did.
Installing it
Comes with the pack. ComfyUI Manager โ search "TTS Audio Suite" โ install โ restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/diodiogod/TTS-Audio-Suite.git
cd TTS-Audio-Suite
python install.py
No model download - it's plain audio DSP, so it's instant once the pack is installed.
Common issues & troubleshooting
The voice is buried under the music. That's volume_balance. Slide it toward the voice input so it sits on top. And make sure you're on overlay, not an averaging mode like mean that pulls everything toward a middle level.
The result sounds crushed or pumping. Normalization is preventing clipping, but if two loud sources sum hot, the normalize pass can squash things. Balance the inputs first (with volume_balance or by trimming a source upstream) rather than relying on normalize to fix a too-hot mix.
A hard cut where I wanted a smooth blend. Use crossfade as the algorithm and give crossfade_duration enough time (it defaults short) so the transition actually fades rather than jumping.
Sample-rate weirdness. It auto-reconciles rates by default, which is usually right. Only set sample_rate manually if a downstream node demands a specific rate - otherwise leave it on auto and let it match.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| audio1 | * | Primary audio input. Accepts AUDIO format. | |
| audio2 | * | Secondary audio input. Accepts AUDIO format. | |
| merge_algorithm | COMBO | mean | ๐๏ธ AUDIO MERGING ALGORITHMS Choose how to combine multiple audio sources: ๐ MATHEMATICAL ALGORITHMS: โข MEAN: โญ Average all inputs - smooth, balanced mix (recommended) โข MEDIAN: Reduces outliers and noise - cleaner output, less distortion โข MAX: Takes loudest signal at each point - preserves peaks, can be harsh โข MIN: Takes quietest signal at each point - gentle, subdued mix โข SUM: Simple addition - louder but may clip without normalization ๐ต CREATIVE ALGORITHMS: โข OVERLAY: Professional layering with gain compensation - natural mixing โข WEIGHTED: Custom balance using volume_balance slider - precise control โข CROSSFADE: Smooth transitions between sources - cinematic blending ๐ก USE CASES: ๐ค Voice + Music: MEAN or OVERLAY ๐ผ Multiple instruments: MEDIAN (reduces conflicts) ๐ Emphasize loudest: MAX ๐๏ธ Custom balance: WEIGHTED ๐ฌ Smooth transitions: CROSSFADE ๐ง Precise control: SUM + normalization |
| audio3opt | * | Optional third audio input | |
| audio4opt | * | Optional fourth audio input | |
| sample_rateopt | COMBO | auto | Output sample rate - Auto=use highest input rate, Higher=better quality but larger files |
| normalizeopt | BOOLEAN | true | Normalize output volume - ON=prevents distortion/clipping, OFF=preserves original levels |
| crossfade_durationopt | FLOAT | 0.100โ2 | Crossfade blend duration in seconds (for crossfade algorithm) - Low=quick transitions, High=smooth gradual blending |
| volume_balanceopt | FLOAT | 0.500โ1 | Volume balance between audio1 (0.0) and audio2 (1.0) - ONLY used by 'weighted' algorithm |
| vocal_pitch_shiftopt | FLOAT | 0.0-24โ24 | Change vocal pitch - Negative=deeper voice (like man), Positive=higher voice (like child), 12=twice as high |
| instrumental_pitch_shiftopt | FLOAT | 0.0-24โ24 | Change music pitch - Negative=deeper/slower sound, Positive=higher/faster sound, 12=twice as high |
| enable_pitch_controlopt | BOOLEAN | false | Enable pitch shifting - ON=allows separate pitch control for vocal/instrumental, OFF=no pitch changes |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| merged_audio | AUDIO | โ |
| merge_info | STRING | โ |