Nodes/ComfyUI-Easy-SongGeneration/Easy SongGeneration - 歌词与风格格式化
ComfyUI Node

Easy SongGeneration - 歌词与风格格式化

The formatting node that keeps SongGeneration from singing gibberish

By eastmoe·Created 3 months ago·Updated 6 days ago· 4
Easy SongGeneration - 歌词与风格格式化
    • 歌词
    • 风格
    lyrics[intro-medium] [verse] [chorus] [inst-medium] [verse] [chorus] [outro-medium]
    stylefemale, pop, energetic, piano, drum kit
    lyric_language
    wrap_untagged_asverse
    style_trailing_periodtrue

    Easy SongGeneration - 歌词与风格格式化 ("Lyrics & Style Formatter") is the pack's "please don't paste raw text into the model" enforcer. SongGeneration is picky about input shape: lyrics are structured into sections - [verse] ... ; [chorus] ... with sections joined by ; - and the style description is a comma-separated list of gender, genre, mood and instrument tags. Feed it a wall of free-form prose and the model will sing word soup. This node formats both strings for you and outputs clean, generation-ready text.

    How it works

    It's two formatters in one box, both purely local string processing - no model, no GPU.

    Lyrics: it finds the section tags ([intro-short], [intro-medium], [inst-short], [inst-medium], [outro-short], [outro-medium], [verse], [chorus], [bridge]), normalizes punctuation (fullwidth 。!?, become ASCII), and joins the sections with ;. It's bilingual-aware: 歌词语言 at auto checks whether your text contains CJK and only appends the trailing English period when the lyrics are English. If you pasted untagged lyrics, 无标签歌词包裹为 (default verse) wraps the whole thing in a [verse] section rather than dropping it.

    Style: it splits your tags on commas, trims and dedupes them (case-insensitive), and re-joins with , . 风格末尾句点 keeps the trailing period the official examples use.

    The nicest touch is frontend-only: this node ships a small web extension that adds clickable buttons on the node - section tags, common genres, moods, vocal and instrument labels - that insert text at your cursor. Chinese labels, matching the pack's zh-cn localization, but the tags they insert are the English ones the model wants.

    The inputs that matter

    • 歌词 (lyrics) - your raw lyrics, tags optional. The output is the formatted version.
    • 风格 (style) - comma-separated tags. The default female, pop, energetic, piano, drum kit is fine to start.
    • 歌词语言 (lyric_language) - auto / zh / en. Auto detects Chinese; override if it guesses wrong.
    • 无标签歌词包裹为 (wrap_untagged_as) - none / verse / chorus / bridge. What to wrap untagged lyrics in. none leaves them raw.

    Outputs and where they go

    • 歌词 (lyrics) - formatted lyric string → the 歌词 input of any generate node.
    • 风格 (style) - formatted style string → the 描述 input of any generate node.

    It slots in front of 生成完整歌曲, 生成人声, or 分轨生成 as a text-prep stage, and it's genuinely worth using even for a quick test - the ; separator and the tags are the difference between a song that holds together and a model doing karaoke on autopilot. One thing it won't do: validate whether your tags are ones the model knows. It formats what you give it; inventing an instrument it never saw just means the tag gets ignored, not that it errors.

    Categoryeastmoe/Comfy-Easy-SongGeneration

    Inputs (5)

    NameTypeDefaultDescription
    lyricsSTRING[intro-medium] [verse] [chorus] [inst-medium] [verse] [chorus] [outro-medium]支持 [intro-short]、[verse]、[chorus] 等 SongGeneration 结构标签;节点会输出格式化后的纯文本歌词。
    styleSTRINGfemale, pop, energetic, piano, drum kit使用逗号分隔性别、曲风、情绪、乐器等标签;节点会输出格式化后的纯文本风格描述。
    lyric_languageCOMBOauto 会根据是否包含中文决定英文末句是否补句点。
    wrap_untagged_asCOMBOverse当歌词没有任何结构标签时,可自动包裹成 verse/chorus/bridge。
    style_trailing_periodBOOLEANtrue按官方示例在风格标签末尾保留英文句点。

    Outputs (2)

    NameTypeDescription
    歌词STRING
    风格STRING