港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作
“SongComposer: A Large Language Model for Lyric and Melody Composition in Song Generation”
项目主页:https://pjlab-songcomposer.github.io/
论文地址:https://arxiv.org/pdf/2402.17645.pdf
摘要
简介
相关工作
歌词-旋律数据集。本文构建一个大规模的歌词-旋律数据集,其中包含了约4K首中文歌曲。该数据集是通过从头开始收集数据并整合多个公开数据集得到的。
SongCompose-PT数据集
- 数据爬取:从网络上爬取大量的mp3文件和对应的歌词文件,包括句子级别的时间戳。
- 歌词清洗:使用GPT-4清除歌词文本中的无关细节,如歌曲标题、艺术家姓名和制作信息。
- 分段切割:为了减少长时间对齐的挑战和错误累积,根据歌词文件中提供的时间戳,将音频和歌词切割成大约10秒钟的配对段落(大约三个句子)。
- 音乐源分离:我们使用UVR 4,一个公开的音乐分离工具,将原始音频中的人声与伴奏部分分离。
- 唱声转录:使用数字音频工作站软件FL Studio 5,通过唱声wav输入自动生成初步的乐谱,捕捉每个音符的音高和起止时间。
- 单词边界注释:我们通过Pypinyin 6将歌词转换为音素序列,然后使用音频对齐工具Montreal Forced Aligner 7获取歌词中每个单词的边界。
-
单词级对齐:使用动态时间规整(DTW)算法根据起止时间对单词和音符进行对齐。 最后,我们开发了一个包含15K个配对的歌词旋律条目的数据集,其中大约有5K个是中文,10K个是英文。
SongCompose
符号表示
元祖数据格式。为了解决歌词和旋律不匹配的问题,提出了一种基于元组的输入格式,每个元组代表一个离散的音乐单元,可以是歌词、旋律或歌词-旋律对。
离散持续时间。为了更有效地处理旋律的持续时间信息,采用对数编码方案将持续时间分为预定义数量的区间,将连续的持续时间范围转换为一组离散值。
扩展词汇表。扩展了模型的词汇表,引入了辅助标记来表示离散时间单位和音符值。对于时间离散化,扩展了512个唯一标记,每个标记代表一个特定的时间区间。对于音乐音符的表示,标记了10个八度的12个音高类,增加了120个不同的音乐标记。
预训练阶段。为了丰富LLM的基础音乐知识,首先在大量的纯歌词和纯旋律语料库上对模型进行预训练,并进行下一个token预测。请注意,对于旋律,我们采用音高转换来增强我们的数据集。通过这种纯粹的歌词和旋律训练过程,我们的模型获得了坚实的音乐知识基础,为更高级的学习歌词和旋律之间的对应关系奠定了坚实的背景。
监督微调阶段。在将大量乐谱和歌词采集到模型后,为歌曲生成任务策划了遵循指令的数据,包括为给定的歌词创建旋律、为旋律编写歌词、扩展歌曲片段和从文本描述生成歌曲。
训练细节。采用InternLM-7B作为基础模型,训练模型根据之前的文本预测下一个token,最大化给定示例中token的对数似然。在优化方面,我们使用AdamW优化器。SongComposer的训练是在16块Nvidia A100 (80G) gpu上进行的,大约2天。
实验
客观评价指标
音乐生成的评估采用了SongMASS提出的Pitch Distribution Similarity、Duration Distribution Similarity和Melody Distance三个指标,并进行了后处理以保证比较的一致性。歌词生成的评估采用了CoSENT模型的Cosine Sentence、ROUGE-2和BERT score三个指标。其中,ROUGE-2关注生成文本和原始文本之间的bigram重叠,BERT score则利用BERT模型的上下文嵌入来衡量文本相似度。
主观评价指标
通过用户研究,使用1-5分的评分标准,评估了四个任务的生成结果质量。这四个任务分别是:歌词到旋律生成、旋律到歌词生成、歌曲延续和文本到歌曲生成。每个任务有两个评估指标,一个评估整体音乐质量,另一个评估特定任务的挑战。
结果
SongComposer是一种新型的音乐生成模型,它能够将歌词转化为旋律,或者将旋律转化为歌词。与其他现有的语言模型相比,SongComposer在音高分布相似性、持续时间分布相似性和旋律距离等方面表现更好。此外,SongComposer还能够有效地将歌词和旋律融合在一起,产生高质量的歌曲。
消融分析
使用不同组合的纯歌词和纯旋律数据集对模型学习的影响。实验结果表明,省略这两种数据集会显著降低性能,说明基础旋律和歌词知识在训练早期的重要性。单独使用任一数据集都能提高任务性能,其中纯歌词数据集主要提高旋律到歌词任务的性能,而纯旋律数据集则更有助于旋律生成。同时使用两种数据集可以获得最优结果,展示了结合歌词和旋律数据进行预训练的协同效应,有助于更全面的学习成果。
在SongComposer中使用专门的音乐知识令牌对模型性能的影响。通过对不同的令牌化组合进行实验,发现离散化的持续时间令牌对于把握旋律结构非常重要,而音符令牌的采用则显著提高了模型在旋律-歌词任务中的表现。同时,特殊的令牌化可以进一步提高模型的清晰度和优化学习过程。
总结
SongComposer是一个新颖的大型语言模型,利用符号化的歌曲表示来生成旋律和歌词。与之前处理音乐的LLM模型不同,SongComposer利用符号化的表示方式更接近人类的创作技巧,避免了效率低下和多样性有限的问题。它通过连接音符的音高、持续时间和休止时间与歌词的元组设计,确保了精确的音乐理解和对齐。此外,我们还创建了SongCompose-PT数据集,包含歌词、旋律和它们的组合,用于大规模的预训练。经过10,000个问答对的精炼,专注于指令遵循能力,SongComposer在将歌词转换为旋律、旋律到歌词生成、歌曲延续和文本到歌曲创作等各种任务中表现出色,甚至超过了GPT-4等先进的LLM模型。总之,我们相信SongComposer可以为LLM在音乐领域的创造性应用开辟新的道路。