XB-BOX - 🎵 YuE2 歌词
The eight section tags the model actually knows — and the lines it will sing at you
- lyrics
- 检查
Here's the thing about YuE2 that catches people coming from a diffusion music model: the song's form doesn't live in the style string. YuE2's style description deliberately covers language, genre, voice, tempo, instruments and character - no structure, no key, no meter. Structure comes from the lyrics block, via [square bracket] section tags. So the lyrics field isn't a text box you type words into; it's half the arrangement.
XB-BOX - 🎵 YuE2 歌词 (Lyrics) wraps that field with a tag picker and, more usefully, a check pass. It takes one input, lyrics_text (multiline STRING), and gives you back lyrics (STRING) for the official YuE2GenerateABC / YuE2GenerateMusic nodes, plus 检查 / Check (STRING) - a plain-text report of everything the node didn't like.
The tag vocabulary, and why it's eight
The official skill's section vocabulary is eight tags: [Intro], [Verse], [Pre-Chorus], [Chorus], [Bridge], [Interlude], [Instrumental], [Outro]. Those come from the ABC % section spec, and the official instrumental helper title-cases them on the way out, which is why the casing looks odd for [Pre-Chorus].
The official ComfyUI template only ever shows four of them, with the phrasing "such as" - people read that as the complete list and then wonder why [Post-Chorus] never got flagged as unusual. It's not invalid, though: YuE2 treats any [marker] as a generic section marker, so the node's picker also offers community spellings (Post-Chorus, Solo, Hook, Drop, Breakdown, Final Chorus), numbered variants like [Verse 2], and lets you type your own [anything]. The check just tells the difference between official and non-official, because that difference predicts how the planner will treat the section.
What the check pass actually catches
This is the part worth installing the node for. Four real mistakes:
Implementation notes leaking into your lyrics. Words like bpm, reverb, tempo, 钢琴, 混响, 和弦 in the lyrics block get sung or at least confuse the planner - those belong in the style node. The node flags them.
Round-bracket role labels. (Singer): or (女声) look like staging notes to you and like lyrics to the official preprocessing, which only recognises [square brackets]. Whatever's in parentheses can end up in the vocal.
Empty sections. A tag with no lines under it is a hole in the plan.
Per-line syllable counts. CJK characters count as one syllable each; Latin words are estimated by vowel groups. It's not linguistics, it's a sanity check: if the chorus line has 34 syllables and the verse has 4, you can see the mismatch before you burn a render on it. This is a YuE2-specific check - the same author's MiniMax prompt nodes don't have it.
The node also offers a one-click instrumental skeleton (section tags, no words) and tag insertion from a panel, which is the fastest way to start a song from a blank page.
Where people get burned
- Writing
w:fields or syllable/note alignment into the lyrics. The official tooling rejects those as illegal notation. Alignment records belong in a sidecar file, not here. - Treating the planner and the renderer as needing the same lyrics. They don't have to. Feeding tags-only lyrics to the planner while the renderer gets the real words is an explicitly supported trick - two nodes, two lyrics inputs, different content.
- Expecting instrumental to be a lyrics setting. Empty or tags-only lyrics is one of three things instrumental needs. The score's Vocal line also has to have no sounding notes (Score Workbench → "Vocal to Ins"), and the style node has to be set to instrumental so it adds the official suppression conditions. Style alone can't remove singing, and the official docs are blunt that a file check can't prove there's no vocal leakage. Listen to it.
Install
Standard pack install: search XB_ToolBox in ComfyUI Manager, or clone and restart.
cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/XB_ToolBox.git
You need a ComfyUI build that ships the native YuE2GenerateABC / YuE2GenerateMusic nodes, since this one only emits strings. The pack's README promises zero pip dependencies - the repo's requirements.txt is a much longer list - but the YuE2 nodes need none of it, and the ABC handling is standard library only, so nothing about your lyrics leaves the machine.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| lyrics_text | STRING | 歌词正文 + 段落标签。官方 skill 的段落词表是 8 个:[Intro]/[Verse]/[Pre-Chorus]/[Chorus]/[Bridge]/[Interlude]/[Instrumental]/[Outro],点上方「添加元素」插入;也能自己填任意 [自定义标签](YuE2 接受任意 [标记])。⚠️ 只放要唱的词:风格、乐器、语言、速度都写进 style,不要写进歌词。 进阶:官方的「规划用歌词」可以只给段落标签(不写实词)喂给规划器,实词另接给 YuE2GenerateMusic 的 lyrics —— 两个节点的 lyrics 可以不同。 不要把音节/音素对齐写进这里:官方要求对齐记录放 sidecar,也不要用 w: 字段(会被当作非法记谱拒绝) |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| lyrics | STRING | — |
| 检查 | STRING | — |