Nodes/YuE2 Music/YuE2 Vocals Only
ComfyUI Node

YuE2 Vocals Only

Because Asking Nicely for an A Cappella Doesn't Work

By pytraveler·Created 7 days ago·Updated about 17 hours ago· 37
YuE2 Vocals Only
  • audio
  • options
  • vocals

YuE2 generates a song as one stream - voice and band together, mixed by the model - and has no voice-only output of its own. So this node takes the voice out of the finished mix afterwards. That is the entire job: any audio in, the voice out, same length, same sample rate, same channels. It works on a song this pack just made, a recording from Load Audio, or the output of anything else in your graph.

If you hoped to skip separation by writing "a cappella" in the style line, the author measured it: of 72 songs asked for a cappella in every way tried - "a cappella", "acapella", "no instruments, no drums", choir, gospel, barbershop, chant, unaccompanied folk - 61 kept a soft held pad of chords under the voice, within 10 dB of it. Two came out clean. "No instruments" changed nothing.

How the separation actually works

The separator is Mel-Band RoFormer - Kimberley Jensen's vocal model - run by this pack's own implementation, and the author's claim is that its numbers match the reference code bit for bit in float32. A three-minute song takes about 7 seconds on an RTX 5090 at a peak of 2.5 GiB, and the words survive the trip: heard back by a speech model across 72 songs, 91 percent of the lyrics came through in order, in the separated voice and in the full mix alike.

That puts it a rung above the Demucs-wrapper stem separators most ComfyUI users have installed - those split four ways, this one is built for vocals.

Inputs and output

audio is the only required input and takes any AUDIO: mono or stereo, any sample rate, returned in the shape it arrived in. It lines up with the source, so getting both the song and its voice from one run is just a matter of splitting YuE2 Generate Song's AUDIO output and putting this node on one branch.

options is the optional socket. Only download, device and keep_model_loaded are read from it; the rest of its settings belong to the song nodes. Leave it unwired and everything takes the defaults the pack was released with.

The output is vocals, an AUDIO. Wire it into SaveAudio, or into anything downstream that wants a waveform.

Install

Same pack, same drill. The separator is a sibling of the song nodes, not a separate dependency:

cd ComfyUI/custom_nodes
git clone https://github.com/pytraveler/YuE2-ComfyUI
# restart ComfyUI

tiktoken is the pack's one hard requirement, and it is not something ComfyUI ships. The separator's weights are fetched on first use into models/YuE2/MelBandRoformer.ckpt (0.85 GB, MIT) - at the one revision this pack was checked against, because a later upload under the same name would be a different model. A copy you already have is used where it lies, including kijai's MelBandRoformer_fp16.safetensors, which ComfyUI-MelBandRoFormer keeps in models/diffusion_models; it is recognised by its tensors, not its filename. The .ckpt is read with torch's weights_only, so no code inside it runs.

You may not need this node at all. The same step is a switch - vocals_only - on the YuE2 Options node, which makes the song and then hands on only its voice, with score_abc untouched and the timing unchanged. Use the switch for one run that gives you both; use this node when the audio comes from somewhere else.

What to expect, and where it goes wrong

The honest caveat is at the top of the author's own notes: the voice comes from the song the seed gives, and an ordinary song keeps silence where its intro and instrumental breaks were. In eight of nine pop songs the separated voice began after 1 to 14 seconds of nothing. That is not a bug in the separator - there was nothing to separate. If you want a voice singing from the first bar, ask for "a cappella" in the style line as well, then clean up the pad underneath with this node.

Two things to know before you wire it up:

  • The download is off. With download set to off in YuE2 Options, nothing is fetched and the node prints the file, the link and the folder to put it in. Set it back to auto.
  • You expected the instrumental too. This outputs the voice and only the voice. There is no accompaniment output, no drum stem, no karaoke track.

One licensing footnote: the separator's weights are MIT, but YuE2's own weights are CC BY-NC 4.0 - non-commercial. The code in this pack is Apache-2.0, which does not change what the model weights allow.

CategoryYuE2

Inputs (2)

NameTypeDefaultDescription
audioAUDIOAny audio: a song from this pack, a recording loaded with Load Audio, the output of another node. Mono and stereo at any sample rate are taken, and the voice comes back in the same shape.
optionsoptYUE2_OPTIONSOptional. 'download', 'device' and 'keep_model_loaded' are read from it; the rest belongs to the song nodes.

Outputs (1)

NameTypeDescription
vocalsAUDIO