SongComposer: A Large Language Model for Lyric and Melody Generation in Song Composition¶
会议: ACL 2025
arXiv: 2402.17645
领域: LLM / Music Generation
关键词: 歌曲生成, 歌词旋律对齐, 符号音乐表示, 音高初始化, 渐进式训练
一句话总结¶
提出 SongComposer,首个能同时生成歌词和旋律的大语言模型,通过元组格式对齐歌词与旋律、标量音高初始化和渐进式结构感知训练,在多个歌曲生成任务上超越 GPT-4。
研究背景与动机¶
符号歌曲生成(Symbolic Song Composition)旨在以符号序列生成歌曲的人声轨道(歌词+旋律)。此前工作主要聚焦于子任务:歌词生成、歌词→旋律、旋律→歌词等,但缺乏一个统一框架能够同时处理歌词和旋律的生成。
LLM 在自然语言理解与生成方面取得了巨大成功,而符号歌曲表示与自然语言有结构相似性,因此利用 LLM 进行歌曲生成是可行的。然而,面临三大挑战:
- 歌词-旋律对齐:如何在 LLM 中高效地进行词级(word-level)对齐
- 音乐结构建模:歌曲具有层次化结构(motif 动机 + phrase 乐句),LLM 需要理解这些结构
- 数据匮乏:现有符号歌曲数据集规模小、质量差,缺乏精确的歌词-旋律对齐
方法详解¶
整体框架¶
SongComposer 是一个基于 LLM 的统一歌曲生成模型,支持四类任务:歌词→旋律、旋律→歌词、歌曲续写、文本→歌曲。核心设计包含三部分:符号表示格式设计、音高初始化策略、渐进式结构感知训练。基座模型采用 InternLM 7B,通过扩展词表支持音高、时值等音乐特殊 token。数据方面,研究团队从零构建了包含 280K 纯歌词、20K 纯旋律和 8K 精确对齐配对数据的 SongCompose 数据集。
关键设计¶
1. 灵活的元组格式(Tuple Format)
- 纯旋律格式:每个音符用
<pitch>, duration元组表示,以 1/16 拍为时间单位,pitch 范围 MIDI 48-83(C3-B5) - 纯歌词格式:直接使用自然语言,用特殊 token
<bol>/<eol>标记 - 配对数据格式:在旋律元组中加入对应歌词词汇
<pitch>, duration, word,实现词级对齐。当一个词对应多个音符时,使用数字后缀区分
2. 标量音高初始化(Scalar Initialization)
比较了四种音高 token 初始化方法:平均初始化、高斯初始化、插值初始化、标量初始化。标量初始化效果最佳:
- 先用高斯分布初始化中心音高 token <66>
- 其余音高 token 的 embedding 设为中心音高的倍数,乘数为 \([-\ln(e+17), \cdots, \ln(e+17)]\)
- 显式地将音高间的数学关系编码到初始化中
3. 渐进式结构感知训练(Progressive Structure-aware Training)
三阶段训练策略: - Stage 1 - Motif 级旋律训练:从训练数据中提取高度重复的短音符序列作为 motif,让模型学习基础的重复模式 - Stage 2 - 整首歌级独立训练:分别在纯歌词和纯旋律数据上训练,建立整首歌级别的理解 - Stage 3 - 配对数据 + Phrase 级 token 训练:在配对数据中插入乐句结构 token(intro/verse/chorus/bridge/outro),每个乐句用起止 token 标记,共 12 个特殊 token
实验关键数据¶
主实验¶
在歌词→旋律和旋律→歌词两个任务上进行评估:
| 模型 | PD(%)↑ | DD(%)↑ | MD↓ | Cosine↑ | ROUGE-2↑ | BS↑ |
|---|---|---|---|---|---|---|
| GPT-4 | 36.43 | 42.94 | 2.87 | 0.654 | 0.158 | 0.610 |
| SongComposer | 50.75 | 57.71 | 2.20 | 0.697 | 0.234 | 0.657 |
SongComposer 在所有指标上大幅超越 GPT-4 和其他开源 LLM(LLaMA 2、InternLM 2、Qwen 1.5),同时在歌词→旋律任务上也优于传统模型 SongMass 和 TeleMelody。
关键发现¶
- 标量初始化相比其他初始化方法(平均/高斯/插值)效果最好,验证了将音高间数学关系显式编码的有效性
- 渐进式训练的每个阶段都有贡献,motif 训练对旋律质量有显著提升
- 记忆化测试表明模型输出与预训练数据中的原始序列显著不同,不存在简单复制问题
- InternLM 2 + FT(纯微调无技术创新)的效果远不如 SongComposer,证明了提出的技术组件的必要性
- 在歌曲续写和文本→歌曲任务上同样展现了强大的生成能力,证明统一框架的多任务能力
亮点与洞察¶
- 首次统一歌词+旋律生成到 LLM:打破了此前子任务割裂的局面,一个模型解决四类歌曲生成任务
- 标量初始化是绝妙的先验注入方式:利用音高间的数学关系(频率的对数线性关系)进行初始化,用极简设计传递了关键的领域知识
- 渐进式训练符合音乐创作的认知逻辑:先学动机、再学整体、最后学对齐,层层递进
- SongCompose 数据集(280K 纯歌词 + 20K 纯旋律 + 8K 配对数据)是重要的社区贡献
局限性¶
- 配对数据规模仅 8K,相比纯歌词/旋律数据仍然较小,可能限制了歌词-旋律对齐的上限
- 仅支持中英双语,未覆盖其他语言(如日语、韩语、西班牙语)的歌曲风格
- 生成质量的评价主要依赖客观指标(PD/DD/MD),缺少大规模人类主观评估(如可唱性、情感表达)
- 未探索与音频生成模型的联动(如将符号旋律转为实际音频波形)
- MIDI 音高范围限制在 48-83(C3-B5),无法覆盖极高/极低音域的歌曲
- 未涉及和弦进行、伴奏编排等更复杂的音乐元素生成
- 生成长度受限于 LLM 的上下文窗口,对于超长歌曲可能需要分段生成
相关工作¶
- 符号音乐生成:SongMass、TeleMelody 等传统方法只解决单一子任务
- LLM 用于音乐:ChatMusician 等尝试将 LLM 用于纯音乐生成,但不涉及歌词-旋律配对
- 歌词-旋律数据集:M4Singer(约 700 首中文歌)等规模不足,本文的 SongCompose 数据集是重要补充
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ (首次用 LLM 统一歌词+旋律生成,开创性极强)
- 技术深度: ⭐⭐⭐⭐ (标量初始化和渐进训练设计精巧)
- 实验充分度: ⭐⭐⭐⭐ (多任务多模型对比 + 消融实验)
- 实用性: ⭐⭐⭐⭐ (面向歌曲创作应用,开放数据集)
- 综合评价: ⭐⭐⭐⭐ (开创性工作,为 LLM 在音乐创作领域的应用开辟了新方向)