Nodes/DeepExtract/Vocal and Sound Separator
ComfyUI Node

Vocal and Sound Separator

Cut the vocals out of any track without leaving ComfyUI

By abdozmantar·Created 2 years ago·Updated 12 months ago· 48
Vocal and Sound Separator
  • input_sound
  • Vocals
  • Background

Want a karaoke version of a song, a clean vocal stem for a remix, or a way to strip a voiceover off a video's soundtrack? That's what this node does, and it's one of the few things in ComfyUI that touches audio at all. DeepExtract's Vocal and Sound Separator takes one mixed audio signal and hands you back two: the isolated vocals and everything else. It's a two-stem split, not a multitrack separator - but for most people's actual needs (drop the singer, keep the band) it's exactly the tool.

Don't let the name throw you. It's not a "remover" in the destructive sense; it's a separator. You get both stems out, and "removing" the vocals just means wiring the Background output downstream and ignoring the Vocals one. The one input, input_sound (an AUDIO wire), comes from any node that emits ComfyUI's audio dict - the built-in Load Audio node or VHS's loader both work. Out the other side you get Vocals and Background, both AUDIO, which you can save (Save Audio / VHS encode) or process further. That's the whole interface. No knobs, no model picker, nothing to mis-set.

Under the hood it's a port of the MDX-Net vocal model that's been doing the rounds in the facefusion/DeepFaceLab world: the setup downloads kim_vocal_2.onnx from the facefusion-assets release, then converts it to PyTorch via onnx2pytorch and runs it on your GPU (CPU if you have none). The audio gets chopped into STFT segments with a Hanning window, the model predicts the vocal spectrogram, and the background is literally the residual - mix - vocals. Interesting side note: despite onnxruntime being in requirements.txt, the code path never actually calls it. The weight is real, though, and the output gets tempo-stretched back to your original length so nothing drifts.

Now the part that will bite you. The README's install is git clone into custom_nodes/, then:

cd ComfyUI/custom_nodes
git clone https://github.com/abdozmantar/ComfyUI-DeepExtract
cd ComfyUI-DeepExtract
python setup.py   # or double-click setup.bat on Windows

That setup script does more than download the model. It force-installs torch/torchvision/torchaudio from the cu118 wheel index and onnxruntime-gpu from a Microsoft CUDA-11 index, plus it pins librosa==0.9.2 and soundfile==0.12.1. If you run it outside the exact Python environment ComfyUI uses, you're looking at a textbook dependency-hell scenario - the kind of thing that silently breaks your existing torch install. If you're already on CUDA 12.x and a modern torch, run it in ComfyUI's own venv and be ready to re-pin whatever it clobbers. The lighter path: skip setup.py, install the four lines in requirements.txt yourself, and let the node auto-download the model on first run.

Two more gotchas, both real. On Linux or macOS the setup script saves the model as kim_vocal_2.onnx while the node looks for Kim_Vocal_2.onnx - case matters, so the first run may quietly download the file a second time. And the output is hardcoded to 44.1 kHz regardless of what you fed in, so if your source is a 48 kHz video soundtrack, don't trust the sample rate on the other end.

One honest take: this pack gets very little community traffic, and the author has since shipped DeepExtractV2, a Demucs-based four-stem splitter (drums/bass/vocals/other) that's the better reach for most people. V1 wins only if you want the single MDX vocal split and nothing heavier.

CategoryDeepExtract

Inputs (1)

NameTypeDefaultDescription
input_soundAUDIO

Outputs (2)

NameTypeDescription
VocalsAUDIO
BackgroundAUDIO