Nodes/ComfyUI_YuE2/YuE2 Official SheetSage2 Transcribe
ComfyUI Node

YuE2 Official SheetSage2 Transcribe

Audio to Sheet Music — and No, It Doesn't Clone the Singer

By jeankassio·Created 7 days ago·Updated 4 days ago· 2
YuE2 Official SheetSage2 Transcribe
  • audio
  • abc
  • report
◄mode▾►
◄device▾►
◄dtype▾►
◄preset▾►
◄max_seconds0►
◄overlap_seconds200►
◄lookahead_seconds100►
◄automatic_window_settingstrue►
◄prompts►
◄export_logitsfalse►
◄export_scoresfalse►
◄export_embeddingsfalse►
◄output_hidden_statesfalse►
◄render_audiofalse►
◄render_score▾►
◄render_partsmix►

This is the node that produces the "AI covers" story everyone wants, and it is the node most likely to disappoint someone who wanted a different thing. SheetSage2 Transcribe listens to a recording and writes down a score - ABC notation, melody and optionally chords. YuE2 then performs that score with new vocals and a new arrangement.

What it does not do, in the author's own words: clone a speaker, replace only the singer, or preserve the source waveform. There's no speaker-identity model anywhere in this pipeline. You are not getting your voice on a track, or a famous singer's voice on your track. You're getting a re-performance of the notes.

If that's the thing you wanted, better to find out now. If what you wanted is a rerecording of a song's musical content in a style you specify, this is the honest open-weights route.

How it works

Under the hood it's a separate neural stack: the pinned SheetSage2 model plus MERT-v2-FullSong as its audio backbone, running in its own isolated environment, .venv-sheetsage. That environment is deliberately distinct from YuE2's - Python 3.11, official Torch/Torchaudio 2.8.0, Transformers 4.45.2 - because audio tooling in ComfyUI lives or dies on dependency isolation. The node writes your incoming AUDIO to a temporary WAV, hands it to the worker, returns the ABC text, and deletes the temp file.

Both model folders load with local_files_only=True, and the worker verifies manifest hashes before running model code. Nothing downloads at inference time.

The inputs that matter

mode is the big one. melody transcribes the tune only, leaving accompaniment free - that's what you want for a cover with a new arrangement. full includes harmony, which constrains the result more and is the better choice when you want the chords respected.

device is cuda:0, cuda:1 or cpu - note there's no mps, so Apple Silicon transcribes on CPU. dtype is bf16 or fp32; preset is default or paper. The paper preset is for reproducing the published protocol and it fixes the windowing: overlap 100 seconds, lookahead 0. The default runs 300-second windows with 200 s overlap and 100 s lookahead.

max_seconds has the clearest tooltip in the pack: 0 transcribes the entire source, a positive value limits it. On a long track, a quick 60-second test tells you whether the transcription is even in the right key before you commit to the full duration.

automatic_window_settings (default true) means the preset decides overlap_seconds and lookahead_seconds and your numbers are ignored. Turn it off if you're tuning windowing by hand - otherwise those two fields are decoration.

prompts takes comma-separated official task names (including timestamp), blank for all defaults. The rest is export plumbing: export_logits, export_scores, export_embeddings, output_hidden_states, render_audio, render_score (none/pdf/svg/png/comma combos), render_parts. Rendering needs the official render_assets/ and a separate dependency setup - basic ABC extraction doesn't, so leave the render options off until you specifically want a PDF of your score.

Wiring

abc goes into Text Encode's abc input, with cot set to melody for a cover. Then Generate Music. That's example_workflows/04-audio-to-cover.json, minus one trap: the shipped workflow contains a placeholder WAV, not a real song. Upload your own source in Load Audio before queueing, or you'll transcribe silence and wonder what broke.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/jeankassio/ComfyUI_YuE2
cd ComfyUI_YuE2 && sh setup-runtime.sh && sh scripts/download-models.sh && sh convert-models.sh
sh scripts/setup-sheetsage.sh     # separate .venv-sheetsage

Plus SheetSage2 and MERT-v2-FullSong from the same downloader. On Windows use the .bat twins, and put FFmpeg 6.1 on PATH - the default preset decodes input through the ffmpeg executable, and the paper preset needs shared FFmpeg libraries for torchaudio's backend.

Troubleshooting

"The isolated runtime is missing. Run scripts/setup-sheetsage.sh" is the one you'll hit: the SheetSage runtime is a separate install from the YuE2 one and people skip it. On Debian/Ubuntu the installer may also need python3-venv.

And the quality caveat that isn't a bug: transcription makes mistakes. Check the score before generating, especially on dense mixes with heavy production - a wrong chord in the transcription becomes a wrong chord in the cover, confidently performed.

Categoryaudio/YuE2 Official

Inputs (17)

NameTypeDefaultDescription
audioAUDIO—
modeCOMBO2 options: melody, full
deviceCOMBO3 options: cuda:0, cuda:1, cpu
dtypeCOMBO2 options: bf16, fp32
presetCOMBO2 options: default, paper
max_secondsFLOAT00–72000 transcribes the entire source; a positive value limits its length in seconds.
overlap_secondsFLOAT2000–1000—
lookahead_secondsFLOAT1000–1000—
automatic_window_settingsoptBOOLEANtrue—
promptsoptSTRINGLeave blank for all official tasks, or provide comma-separated task names including timestamp.
export_logitsoptBOOLEANfalse—
export_scoresoptBOOLEANfalse—
export_embeddingsoptBOOLEANfalse—
output_hidden_statesoptBOOLEANfalse—
render_audiooptBOOLEANfalse—
render_scoreoptCOMBO5 options: none, pdf, svg, png, pdf,svg,png
render_partsoptSTRINGmix—

Outputs (2)

NameTypeDescription
abcSTRING—
reportSTRING—