跳转至

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 进行歌曲生成是可行的。然而,面临三大挑战:

  1. 歌词-旋律对齐:如何在 LLM 中高效地进行词级(word-level)对齐
  2. 音乐结构建模:歌曲具有层次化结构(motif 动机 + phrase 乐句),LLM 需要理解这些结构
  3. 数据匮乏:现有符号歌曲数据集规模小、质量差,缺乏精确的歌词-旋律对齐

方法详解

整体框架

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,证明了提出的技术组件的必要性
  • 在歌曲续写和文本→歌曲任务上同样展现了强大的生成能力,证明统一框架的多任务能力

亮点与洞察

  1. 首次统一歌词+旋律生成到 LLM:打破了此前子任务割裂的局面,一个模型解决四类歌曲生成任务
  2. 标量初始化是绝妙的先验注入方式:利用音高间的数学关系(频率的对数线性关系)进行初始化,用极简设计传递了关键的领域知识
  3. 渐进式训练符合音乐创作的认知逻辑:先学动机、再学整体、最后学对齐,层层递进
  4. SongCompose 数据集(280K 纯歌词 + 20K 纯旋律 + 8K 配对数据)是重要的社区贡献

局限性

  • 配对数据规模仅 8K,相比纯歌词/旋律数据仍然较小,可能限制了歌词-旋律对齐的上限
  • 仅支持中英双语,未覆盖其他语言(如日语、韩语、西班牙语)的歌曲风格
  • 生成质量的评价主要依赖客观指标(PD/DD/MD),缺少大规模人类主观评估(如可唱性、情感表达)
  • 未探索与音频生成模型的联动(如将符号旋律转为实际音频波形)
  • MIDI 音高范围限制在 48-83(C3-B5),无法覆盖极高/极低音域的歌曲
  • 未涉及和弦进行、伴奏编排等更复杂的音乐元素生成
  • 生成长度受限于 LLM 的上下文窗口,对于超长歌曲可能需要分段生成

相关工作

  • 符号音乐生成:SongMass、TeleMelody 等传统方法只解决单一子任务
  • LLM 用于音乐:ChatMusician 等尝试将 LLM 用于纯音乐生成,但不涉及歌词-旋律配对
  • 歌词-旋律数据集:M4Singer(约 700 首中文歌)等规模不足,本文的 SongCompose 数据集是重要补充

评分

  • 新颖性: ⭐⭐⭐⭐⭐ (首次用 LLM 统一歌词+旋律生成,开创性极强)
  • 技术深度: ⭐⭐⭐⭐ (标量初始化和渐进训练设计精巧)
  • 实验充分度: ⭐⭐⭐⭐ (多任务多模型对比 + 消融实验)
  • 实用性: ⭐⭐⭐⭐ (面向歌曲创作应用,开放数据集)
  • 综合评价: ⭐⭐⭐⭐ (开创性工作,为 LLM 在音乐创作领域的应用开辟了新方向)