YuE2 声学合成
Where the song actually eats your VRAM
- model
- semantic
- latents
- metadata
Stage three of four. YuE2Synthesize takes semantic tokens from YuE2 生成语义 Tokens and turns them into acoustic latents - the non-autoregressive acoustic model, usually shortened to NAR. Then YuE2 VAE 解码 turns those into sound.
Why the split is worth it
The NAR stage is where long songs blow up. Unlike the token stage, which marches forward one token at a time and needs modest memory, the acoustic model has to attend over the whole thing, and the peak scales with how much song you asked for. The 1.1.5 changelog is basically this node's bug report: fixed the VRAM peak on Windows for long tracks by processing queries in chunks and moving idle AR weights off the device. Those are the defaults now - nar_query_chunk_size of 256 and offload_ar on, both set on YuE2 模型服务, not here.
That's the one slightly awkward part of the design: the knobs that control this node's memory behaviour live on the loader node. Two required inputs here (model, semantic), nothing else. If you want to try math attention for compatibility or a smaller chunk size, you change the loader and rerun the whole chain - the settings ride along in the model handle.
Outputs
latents - a YUE2_LATENTS handle for the decode node. The artifact folder holds latent.npy (a float32 array, one row of 64 channels per token), a manifest, and a copy of the semantic stage for provenance. metadata is the job JSON, and it's worth glancing at because it carries the latent frame count and the path to the manifest that was just written - the frame count is your song length, and it should line up with the token count the previous stage reported.
Provenance, again
Before this node runs, it loads and verifies the semantic artifact: the manifest's file hashes, the artifact kind, and the weight identity of the install that produced it, compared against the current one. Same discipline as the previous stage. Practical consequence: don't do half a song, update the pack or move your model directory, then finish it. Regenerate from the plan and let the chain rebuild.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-YuE2-T8.git
Run install_runtime.bat once from the node directory, restart ComfyUI, and start from YuE2 模型服务. Registry: comfy node install yue2-t8. Windows 10/11 + NVIDIA; 24 GB VRAM recommended and 60 GB free disk for the install. This is the stage that makes that VRAM number a recommendation rather than a joke.
Practical notes
Full chain wiring: YuE2 模型服务 → YuE2 生成乐谱计划 → YuE2 生成语义 Tokens → this node → YuE2 VAE 解码. Keep one loader feeding all of it.
Expect a long pause before output. There's no progress bar in the graph - the node sits there while the worker works. The WebUI's task page shows stage and progress if you want to watch; in ComfyUI your only signal is the startup console.
Don't chase a "faster" config blindly. Turning off AR offload and raising the chunk size can shave time on a big card and will hand you an OOM on a long song. If it's not broke, the defaults are the tested path.
Cancelling between stages is safe, cancelling mid-stage is a rollback. Interrupt lands between checked units of work, so a half-written latent is never handed to the decoder - the node either produces a verified artifact or fails.
Latents are files, and files get cleaned. Retention removes finished jobs after a while (30 days, 100 jobs, 100 GiB by default). Anything you want to keep goes through YuE2 导出工件 first, because exports sits outside the cleanup.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | YUE2_MODEL | — | |
| semantic | YUE2_SEMANTIC | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latents | YUE2_LATENTS | — |
| metadata | STRING | — |