ComfyUI Extension: audio-separation-nodes-comfyui
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Separate audio track into stems (vocals, bass, drums, other). Along with tools to recombine, tempo match, slice/crop audio.
Looking for a different extension?
Custom Nodes (7)
README

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.
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.