Easy SongGeneration - 生成完整歌曲
This node is the whole reason to install the pack
- songgen_model
- prompt_audio
- 音频
- 元数据
Easy SongGeneration - 生成完整歌曲 ("Generate Mixed") is the flagship of the pack and the reason anyone installs it: a full song, vocals and accompaniment together, generated locally from nothing but lyrics and a style description. Where the usual open-source "local Suno" answer, ACE-Step, is famous for strong instrumentals and rough vocals, Tencent's SongGeneration is the model built specifically to close that vocal gap - structured, lyric-accurate singing with a separate accompaniment, at 48kHz. This node is the ComfyUI door to it.
How it works
A generation runs through two stages. First the codec language model reads your structured lyrics and comma-separated style tags and writes audio tokens - think of it as the LLM writing the song in a compact audio language. Then the Flow1dVAE diffusion decoder renders those tokens into waveform audio in chunks (the 解码块大小 / chunk_size input, default 128). A lot of that happens in the loader node's settings; this node is where you steer what actually gets sung.
Two details worth knowing. Your 描述 (descriptions) string gets prefixed with [Musicality-very-high], internally - that's the upstream model's own style convention, not something you type. And the run is fully seeded: 种子 at -1 means "use current time", anything else reproduces the same song with the same settings. The seed that was used comes back in the metadata output, so you can always lock in a result you liked.
The inputs that matter
歌词(lyrics) - the input that decides everything. SongGeneration uses section-tagged lyrics:[verse] ... ; [chorus] ..., sections joined by;. The bundled formatter node exists precisely to build this string for you; raw prose lyrics will produce mush.描述(descriptions) - style, mood, instruments, vocals. The defaultfemale, pop, energetic, piano, drum kitis a perfectly good starting point. Comma-separated, and it's case-insensitive to the model.种子(seed) /时长(duration) --1= random,0= the model's configuredmax_durfrom itsconfig.yaml(2m30s on the base checkpoints, 4m30s on large/v2).自动参考风格(auto_prompt_audio_type) - genre presets (Pop,Rock,Electronic, … up toAuto) that inject a reference audio prompt of that style. They need the auto-prompt weights the download node fetches; pickNoneif you never downloaded them.参考音频(prompt_audio) - optional ComfyUIAUDIOinput, e.g. an existing track or a hummed melody. When connected it overrides the auto style, and the pack splits it into melody/vocal/accompaniment with Demucs - which is why the download node grabsthird_party/regardless.CFG(cfg_coef) - classifier-free guidance, default 1.5. Higher = more obedient to your description, usually a bit stiffer.温度/Top K/Top P/采样- sampling controls;0means "use the upstream default". You can ignore all four on day one.
Outputs
音频(audio) - a ComfyUIAUDIOat 48kHz. Wire it to a preview node to listen in the UI, or a save node to get a WAV.元数据(metadata) - a JSON string with the generation params and sample rate. Paste it into any text-view node; it's how you record the seed for reproducibility.
One honest caveat: a full song is a real GPU job. This is the compute-heavy end of the audio layer - leave yourself a minute or two on a consumer card, and don't be shocked if the first run is slow. The instrumentals-and-vocals both come from the same generation, which is also why Easy SongGeneration - 分轨生成 can hand you the stems for free.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| songgen_model | SONGGEN_MODEL | SongGeneration 模型加载节点输出。 | |
| lyrics | STRING | SongGeneration 段落格式歌词,例如 [verse] ... ; [chorus] ...。 | |
| descriptions | STRING | female, pop, energetic, piano, drum kit | 风格、情绪、乐器、人声等逗号分隔提示词。 |
| seed | INT | -1-1–2147483647 | -1 使用当前时间。 |
| duration | FLOAT | 00–270 | 0 使用模型 config.yaml 的 max_dur。 |
| extend_stride | FLOAT | 51–60 | 长音频生成步长,通常保持 5。 |
| temperature | FLOAT | 0.000–2 | 0 使用原推理默认值。 |
| cfg_coef | FLOAT | 1.50–10 | Classifier-Free Guidance 系数。 |
| top_k | INT | 00–10000 | 0 使用原推理默认值。 |
| top_p | FLOAT | 0.000–1 | 0 关闭 top-p。 |
| use_sampling | BOOLEAN | true | 关闭后使用 greedy decoding。 |
| record_tokens | BOOLEAN | true | 保持与原推理脚本一致。 |
| record_window | INT | 501–1000 | Token recording window。 |
| chunk_size | INT | 12816–1024 | Diffusion decoding chunk size。 |
| auto_prompt_audio_type | COMBO | None 表示不使用自动参考音频。 | |
| prompt_audioopt | AUDIO | 可选 ComfyUI AUDIO,会优先于自动参考风格。 | |
| prompt_audio_batch_indexopt | INT | 00–4096 | 当 AUDIO 包含 batch 时选择其中一条。 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| 音频 | AUDIO | — |
| 元数据 | STRING | — |