ComfyUI Node

Vocals using MDX

Pull vocals out of any track without leaving ComfyUI

By set-soft·Created about a year ago·Updated 7 months ago· 30
Vocals using MDX
  • input_sound
  • Vocals
  • Complement
model
segments1
target_devicecpu

You want an acapella, you want a karaoke version, or you want the vocal track to drive an audio-reactive AnimateDiff workflow - and you'd rather not open a second app to get it. That's exactly what Vocals using MDX (AudioSeparateVocals) does: drop an AUDIO signal in, get the clean vocal stem and everything-else out, all inside the graph.

It's one node in the Audio Separation (Demix) pack by Salvador Tropea (set-soft), which pairs tiny MDX-Net models with the bigger, fancier Demucs models. This node is the fast-and-light end of that trade. If you've seen the UVR5 / Ultimate Vocal Remover ecosystem, you've seen these models before - the pack collects 46 of them, mostly from that project, and turns them into plain ComfyUI nodes.

How it works

MDX-Net is a music-demixing architecture that works in the frequency domain. The node runs the model over short-time Fourier transform (STFT) spectrogram chunks and reconstructs the audio back via overlap-add - that's where the segments input comes in. The neat part is how it gets the second output: it doesn't run a second model. Complement is just the input minus the vocals. That's why, as the README is careful to point out, a dedicated instrumental model usually beats a vocals node's Complement output.

Everything is normalized before processing: any sample rate is resampled to the 44.1 kHz the models were trained on, mono gets faked into stereo (left == right), and a batch in means a batch out (processed one track at a time, not in parallel). Outputs are ComfyUI's standard AUDIO type, so they plug straight into core PreviewAudio / SaveAudio nodes.

The inputs that matter

  • model - the whole point. A dropdown of 16 vocal MDX models (Kim Jensen, KUIELab A/B, UVR 9482/9703/9682…). A model with ⬇️ hasn't been downloaded yet; 💾 means it's on disk. Models auto-download to ComfyUI/models/audio/MDX the first time you run with them. The default, Kim Vocal 2, is a fine place to start.
  • segments - how many chunks to process at once (1–64, default 1). More chunks = more VRAM but fewer discontinuities between segments. Leave it at 1 unless you hear stitching artifacts.
  • target_device - cpu or cuda for the inference. Defaults to what your machine has.
  • input_sound - the AUDIO you're demixing. Feed it from core LoadAudio.

Installing it

The easy route: ComfyUI Manager, search Audio Separation, install, restart. The manual route:

cd ComfyUI/custom_nodes/
git clone https://github.com/set-soft/AudioSeparation
pip install seconohe
# then restart ComfyUI

The only extra Python package is seconohe, the author's helper library - everything else (torchaudio, numpy, safetensors, tqdm) is already in a stock ComfyUI install, so there's no heavy dependency drag. Nodes land under audio/separation in the Add Node menu, and there are ready-made template workflows under Workflow → Browse Templates → Audio Separation.

Where people get burned

  • The model dropdown can fall out of sync after a download. Press R to refresh ComfyUI and pick the name again - the pack literally tells you to do this.
  • Your first run is a download run. MDX models are small (21–65 MB) so this is painless, but it's not instant.
  • Don't judge the pack by the Complement output. For instrumentals, use the dedicated Instrumental using MDX node - you'll get a better result than subtracting vocals.

If your source is a clean studio mix, vocals are the easiest stem of all, and this node nails it on the first try. Quality-per-megabyte is hard to beat; when MDX artifacts show up, that's what the Demucs node in the same pack is for.

Categoryaudio/separation

Inputs (4)

NameTypeDefaultDescription
input_soundAUDIO
modelCOMBO16 options: ⬇️ Kim Jensen 2, ⬇️ KUIELab A, ⬇️ KUIELab B, ⬇️ Kim Jensen 1, ⬇️ UVR (9482), ⬇️ UVR 1 (9703), +10
segmentsINT11–64
target_deviceCOMBOcpuThe device (CPU or CUDA) to which the projection layer will be assigned for computation.

Outputs (2)

NameTypeDescription
VocalsAUDIO
ComplementAUDIO