SupaVoice Extract Vocals
Pull the vocals out before you transcribe
- audio
- vocals
- vocals_path
- other_path
Transcribing a clip with a beat behind it is how you get transcripts that are half-music, half-garbage. Whisper will happily "hear" the backing track as words. SupaVoice Extract Vocals is the pre-flight check: it runs Demucs locally through its Python API, isolates the vocals stem, and hands you clean speech to feed your transcriber - or your voice-clone training set. The author's README puts it simply: use it before transcription when the source media has music or background audio.
How it works
It writes your incoming AUDIO to a temp WAV, loads a Demucs model, and does the standard Demucs dance - normalize by reference mean/std, apply_model with one shift and split overlap, then denormalize. The vocals stem becomes your output, and every other stem gets summed into a single no_vocals.wav companion file. Both are written with soundfile, which the README notes is deliberate - it avoids the Windows TorchCodec/torchaudio save path that eats people on that platform.
The settings that matter:
model-htdemucs_ft(default, the fine-tuned one and the best quality/speed balance),htdemucs, ormdx_extra/mdx_extra_q(stronger but slower and heavier).device-cudaorcpu. Defaults to cuda; it falls back to CPU if CUDA isn't available.gain- default 1.0, applied to the vocal output so quiet speech doesn't get lost downstream.
Outputs: vocals (AUDIO, wired straight into a transcriber), vocals_path, and other_path - the summed non-vocal track, useful if you want to hear what was removed.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/mexxmillion/ComfyUI-SupaVoice-Transcriber
Restart ComfyUI. First run downloads the Demucs weights from the internet - a few hundred MB for htdemucs_ft - and demucs itself is in the pack's requirements, so pip should handle it during install.
Where people get burned
The input schema has a demucs_python field that looks like it points at a separate Demucs install - but the shipped code ignores it and just imports Demucs from your ComfyUI Python environment. So if Demucs isn't importable there, you'll get an ImportError no matter what you type into that field. Expect the extraction to be slow-ish and VRAM-hungry on long clips; mdx_extra_q is the one you regret choosing on a two-hour recording. And keep expectations realistic: Demucs is very good, but on heavily layered tracks you may still get bleed, so spot-check a transcript from a music-heavy clip before you trust the whole batch.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| model | COMBO | htdemucs_ft | 4 options: htdemucs, htdemucs_ft, mdx_extra, mdx_extra_q |
| output_prefix | STRING | supavoice_vocals | — |
| gain | FLOAT | 1.000.1–4 | — |
| device | COMBO | cuda | 2 options: cuda, cpu |
| demucs_python | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| vocals | AUDIO | — |
| vocals_path | STRING | — |
| other_path | STRING | — |