Nodes/ComfyUI-Easy-SongGeneration/Easy SongGeneration - 生成完整歌曲
ComfyUI Node

Easy SongGeneration - 生成完整歌曲

This node is the whole reason to install the pack

By eastmoe·Created 3 months ago·Updated 6 days ago· 4
Easy SongGeneration - 生成完整歌曲
  • songgen_model
  • prompt_audio
  • 音频
  • 元数据
lyrics
descriptionsfemale, pop, energetic, piano, drum kit
seed-1
duration0
extend_stride5
temperature0.00
cfg_coef1.5
top_k0
top_p0.00
use_samplingtrue
record_tokenstrue
record_window50
chunk_size128
auto_prompt_audio_type
prompt_audio_batch_index0

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 default female, pop, energetic, piano, drum kit is a perfectly good starting point. Comma-separated, and it's case-insensitive to the model.
  • 种子 (seed) / 时长 (duration) - -1 = random, 0 = the model's configured max_dur from its config.yaml (2m30s on the base checkpoints, 4m30s on large/v2).
  • 自动参考风格 (auto_prompt_audio_type) - genre presets (Pop, Rock, Electronic, … up to Auto) that inject a reference audio prompt of that style. They need the auto-prompt weights the download node fetches; pick None if you never downloaded them.
  • 参考音频 (prompt_audio) - optional ComfyUI AUDIO input, 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 grabs third_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; 0 means "use the upstream default". You can ignore all four on day one.

Outputs

  • 音频 (audio) - a ComfyUI AUDIO at 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.

Categoryeastmoe/Comfy-Easy-SongGeneration

Inputs (17)

NameTypeDefaultDescription
songgen_modelSONGGEN_MODELSongGeneration 模型加载节点输出。
lyricsSTRINGSongGeneration 段落格式歌词,例如 [verse] ... ; [chorus] ...。
descriptionsSTRINGfemale, pop, energetic, piano, drum kit风格、情绪、乐器、人声等逗号分隔提示词。
seedINT-1-1–2147483647-1 使用当前时间。
durationFLOAT00–2700 使用模型 config.yaml 的 max_dur。
extend_strideFLOAT51–60长音频生成步长,通常保持 5。
temperatureFLOAT0.000–20 使用原推理默认值。
cfg_coefFLOAT1.50–10Classifier-Free Guidance 系数。
top_kINT00–100000 使用原推理默认值。
top_pFLOAT0.000–10 关闭 top-p。
use_samplingBOOLEANtrue关闭后使用 greedy decoding。
record_tokensBOOLEANtrue保持与原推理脚本一致。
record_windowINT501–1000Token recording window。
chunk_sizeINT12816–1024Diffusion decoding chunk size。
auto_prompt_audio_typeCOMBONone 表示不使用自动参考音频。
prompt_audiooptAUDIO可选 ComfyUI AUDIO,会优先于自动参考风格。
prompt_audio_batch_indexoptINT00–4096当 AUDIO 包含 batch 时选择其中一条。

Outputs (2)

NameTypeDescription
音频AUDIO
元数据STRING