ComfyUI Node

UVR Audio Separate

The old-school vocal-remover lane, for people who already own the models

By Wang-Huachen·Created 4 months ago·Updated 4 months ago· 0
UVR Audio Separate
  • audio
  • model_info
  • stem_0
  • stem_0_fn
  • stem_1
  • stem_1_fn
model_name
deviceauto
base_filenameaudio

If MSST Audio Separate is the modern lane of this pack, UVR Audio Separate is the legacy lane - and "legacy" here is not a slur. UVR stands for Ultimate Vocal Remover, the tool that defined local vocal separation for years, and MSST WebUI still bundles the machinery to run its classic two-stem models. This node exists so you can keep using that entire old model zoo from inside ComfyUI instead of switching apps. It's the same idea as its MSST sibling, just pointed at the VR model folder instead of the MSST one.

How it works

Identical architecture, different target. Your AUDIO gets written to a temp WAV, a subprocess launches the MSST WebUI package's own Python environment, and the worker script runs MSST's bundled vocal_remover separator with the model file you picked. Result WAVs come back as AUDIO objects and the temp files are cleaned up. The key thing to remember: nothing about this runs inside ComfyUI's Python. It's fully isolated in the MSST environment, which is exactly what keeps a niche audio node like this from nuking your other nodes' dependencies.

The inputs

Four inputs, one fewer than the MSST node because VR models are always two stems - there's no category filter to bother with:

  • audio (AUDIO) - from MSST Load Audio, or from another separator if you're chaining stems.
  • model_name (COMBO) - the VR models MSST discovered in its pretrain/VR_Models folder. If you've ever downloaded a UVR-MDX-NET or similar model, this is where it shows up.
  • device (COMBO) - auto, cuda, or cpu. Note that auto on a CUDA build will use the GPU; the worker only forces CPU when you explicitly pick cpu, which is the README's suggestion for tight VRAM.
  • base_filename (STRING) - feeds output naming, wired from Load Audio's filename output.

The outputs are model_info (a JSON string describing the model and stems), then exactly two pairs: stem_0/stem_0_fn for the primary stem (usually Vocals) and stem_1/stem_1_fn for the secondary (Instrumental). The port labels update to whatever the model actually calls its stems, just like on the MSST node.

Why you'd reach for this over MSST Audio Separate

Honest take: if you're starting from zero, you probably want the MSST node - its Roformer models are the current quality pick and it handles more than two stems. You pick UVR when you already have the VR models and know what they sound like. A lot of vocal-cleaning workflows were tuned around specific UVR-era models for years, and this node lets you keep using exactly those without leaving ComfyUI. It's a compatibility play more than a quality play, and that's a legitimate reason to exist.

The wiring is the same shape as the rest of the pack:

MSLoadAudio → UVRSeparate ── stem_0 ──→ MSSaveAudio.audio
                  └──────── stem_0_fn ─→ MSSaveAudio.filename
MSLoadAudio ── folder_path ───────────→ MSSaveAudio.folder_path

Installing it

Same one-time setup as the whole pack:

cd ComfyUI/custom_nodes/
git clone https://github.com/Wang-Huachen/ComfyUI-MSST-WebUI

Edit custom_nodes/ComfyUI-MSST-WebUI/config.json so msst_root points at your MSST WebUI portable install (e.g. D:\MSST_WebUI_1.7.0_v2_cu128), leave python_env empty, restart ComfyUI. ComfyUI Manager works too - search "MSST". The hard requirement is the MSST WebUI package itself: this node has no standalone mode and will not download VR models for you.

Common issues

  • Empty model dropdown - the MSST install couldn't be reached or has no VR models in pretrain/VR_Models. Fix config.json or drop your models into that folder.
  • Expecting more than two stems - UVR models are two-stem by construction. Need drums/bass/other? That's the MSST node's job.
  • Slow on CPU - these models are older but not free; with device=cpu a full track takes a while. There's no model caching between runs either, so a batch of songs re-loads the model every time.
  • Files landing somewhere odd - if you don't wire folder_path on the save node, check where the save node defaulted; that's a save-node gotcha, not this node's.

It's the pack's "I've been doing this since UVR was the only option" node - narrow, but for exactly the people who need it, it removes the last excuse to leave ComfyUI.

Categoryaudio/separation

Inputs (4)

NameTypeDefaultDescription
audioAUDIO
model_nameCOMBO1 options: -- 请配置 config.json --
deviceCOMBOauto3 options: auto, cuda, cpu
base_filenameSTRINGaudio

Outputs (5)

NameTypeDescription
model_infoSTRING模型元信息 JSON
stem_0AUDIO主音轨音频
stem_0_fnSTRING主音轨文件名
stem_1AUDIO次音轨音频
stem_1_fnSTRING次音轨文件名