audio-separation-nodes-comfyui
Separate audio track into stems (vocals, bass, drums, other). Along with tools to recombine, tempo match, slice/crop audio.
Nodes (7)
Mix two audio tracks by add, subtract, mean, multiply, or divide
Trim audio to a start and end time
Detect the BPM of an audio clip
Split any track into vocals, drums, bass, and everything else
Time-stretch or compress audio by a rate
Sync two tracks to the same BPM automatically
Swap a video's audio track for a new one

https://github.com/user-attachments/assets/c5cf20de-a17f-438d-81ac-0c392af669cf
Nodes
| Node | Description | |------|-------------| | Audio Separation | Separate audio into four stems (bass, drums, other, vocals) using Hybrid Demucs. | | Audio Combine | Combine two audio tracks by overlaying their waveforms (add, mean, subtract, multiply, divide). | | Audio Crop | Crop (trim) audio to a specific start and end time. | | Audio Tempo Match | Match the tempo of two audio tracks by time-stretching both to their average BPM. | | Audio Speed Shift | Time-stretch or time-compress audio by a given rate. | | Audio Get Tempo | Get the tempo (BPM) of audio using onset detection. | | Audio Video Combine | Replace the audio of a VIDEO input with a new audio track. |
Examples
Separating Voices in a Video
<details>
<summary> Show </summary>
[!NOTE]
In order to load videos into the LoadAudio Node, change this line in your Comfy install to include the video's extension (e.g.,
.mp4)
https://github.com/user-attachments/assets/c5af418e-7137-4c36-b86e-3352cf558ea8
</details>Replacing BGM with StableAudio-Generated BGM
<details>
<summary> Show </summary>
[!NOTE]
In order to load videos into the LoadAudio Node, change this line in your Comfy install to include the video's extension (e.g.,
.mp4)
You can use this to replace copyrighted BGM in a video with new BGM. You can set the denoise low, so that the new BGM is still stimilar to the original.
https://github.com/user-attachments/assets/a7d5656b-5f8b-439a-936f-6ebb6a0d538a
</details>Remixing Songs with StableAudio
<details>
<summary> Show </summary>
- workflow json
- example output (audio file) with embedded workflow
- example output (audio file) with embedded workflow
Separating Song Vocals
<details>
<summary> Show </summary>
https://github.com/user-attachments/assets/c5cf20de-a17f-438d-81ac-0c392af669cf
</details>Extracting Instrumentals from Songs
<details>
<summary> Show </summary>
</details>
Stem Mapping
The Audio Separation node uses Hybrid Demucs to split audio into four stems:
| Output | Contains | |--------|----------| | Bass | Bass guitar, sub-bass, low-frequency instruments | | Drums | Drums, percussion, hi-hats | | Other | Everything else — guitars, keyboards, synths, strings, etc. | | Vocals | Singing, speech, vocal harmonies |
Looking for a specific instrument like guitar? Guitar is included in the Other stem. To isolate guitar, separate first, then use the Audio Combine node to subtract unwanted elements or further process the "Other" output.
Requirements
librosa>=0.10.2,<1
torchaudio>=2.3.0
numpy
moviepy
Installation
- If you run ComfyUI inside of a virtual environment, make sure it is activated
git clonethis repository inComfyUI/custom_nodesfoldercdinto the cloned repositorypip install -r requirements.txt
Troubleshooting
<details> <summary><b>BadZipFile / "failed finding central directory"</b></summary>This error means the Hybrid Demucs model checkpoint was corrupted during download. Delete the cached file and restart ComfyUI to trigger a fresh download:
# Default location (Linux/macOS)
rm ~/.cache/torch/hub/checkpoints/*.th
# Windows
del %USERPROFILE%\.cache\torch\hub\checkpoints\*.th
See #21.
</details> <details> <summary><b>ConnectionResetError on Windows</b></summary>Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
ConnectionResetError: [WinError 10054]
This is harmless Windows asyncio noise — it does not affect audio separation results.
The error comes from Python's ProactorEventLoop closing connections and can be
safely ignored. See #9.