港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作

SongComposer: A Large Language Model for Lyric and Melody Composition in Song Generation

创作一首歌曲包含歌词和旋律两部分,对于人类而言,能掌握其中一样已经很厉害了,能够同时掌握作词作曲的全能音乐人屈指可数。

近日,香港中文大学、北京航空航天大学和上海人工智能实验室的研究团队联合提出了一款专为歌曲创作而设计的大模型SongComposer。利用 它可以理解并生成符号化歌曲表示中的旋律和歌词。通过大量实验,SongComposer 在歌词到旋律的生成、旋律到歌词的生成、歌曲续写和文本到歌曲的创作方面表现出卓越的性能,超过了 GPT-4 等先进的 LLMs。

项目主页:https://pjlab-songcomposer.github.io/

论文地址:https://arxiv.org/pdf/2402.17645.pdf

 

摘要

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

SongComposer是为歌曲创作而设计的创新LLM。通过利用LLM的能力,它可以理解和生成象征性歌曲表示中的旋律和歌词。本文设计了一种新颖的元组设计来格式化旋律中的歌词和三个音符属性(音高、时值和休息时值),保证了LLM对音乐符号的正确理解,并实现了歌词和旋律之间的精确对齐。

为了让LLM对音乐有基本的理解,我们仔细收集了SongCompose-PT,一个大规模的歌曲预训练数据集,包括中文或英文的歌词、旋律和配对的歌词-旋律。在充分的预训练后,使用10K精心制作的QA对来赋予LLM指令遵循能力并解决各种任务。

通过广泛的实验,SongComposer在歌词到旋律的生成、旋律到歌词的生成、歌曲的延续和文本到歌曲的创作方面表现优越,超过了GPT-4等高级LLM。

简介

歌曲是一种融合了旋律和歌词的独特语言表现形式,歌曲创作是一个具有系统表述的成熟领域。将旋律数据转换为简洁的基于文本的音符,作为音乐的抽象而有效的表示。它是由人类创建的一种用于捕捉音乐想法的专门语言,使其非常适合作为LLM的输入或输出。

本文提出SongComposer,可以像人类一样创作歌曲,通过利用符号歌曲表示来生成和谐旋律和歌词的作品。据我们所知,这是第一次尝试使用LLM对歌词和旋律之间的关系进行建模,通过解决以下挑战。

第一个挑战是“LLM如何学习音乐”。第二个挑战是“LLM需要学习什么关于音乐。最后一个挑战是“LLM如何根据指导创作歌曲。

SongComposer将所有与歌曲相关的任务统一在一个语言模型中。通过采用基于文本的旋律表示和直接对歌词和音符之间的对齐进行建模,成功地使LLM能够使用大大减少的标记数量来生成歌词的旋律。

相关工作

音乐生成领域取得了显著进展,使用流行扩散模型生成音乐的方法不断涌现。现有的作品主要生成纯旋律而非歌词,而SongComposer则可以直接生成旋律和歌词。

歌词-旋律数据集。本文构建一个大规模的歌词-旋律数据集,其中包含了约4K首中文歌曲。该数据集是通过从头开始收集数据并整合多个公开数据集得到的。

SongCompose-PT数据集

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

SongCompose-PT数据集包括纯歌词、纯旋律和歌词-旋律配对三个部分。纯歌词数据集来自Kaggle和Music Lyric Chatbot数据集,经过清洗后共收集了283K首歌曲的高质量歌词。纯旋律数据集使用MIDI文件,通过pretty midi模块解析,提取旋律属性三元组。歌词-旋律配对数据集包括LMD-full、Reddit-sourced、OpenCpop和M4Singer数据集,以及通过网络爬虫收集的4K首经典中文歌曲。

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

数据集构建过程如下:

  • 数据爬取:从网络上爬取大量的mp3文件和对应的歌词文件,包括句子级别的时间戳。
  • 歌词清洗:使用GPT-4清除歌词文本中的无关细节,如歌曲标题、艺术家姓名和制作信息。
  • 分段切割:为了减少长时间对齐的挑战和错误累积,根据歌词文件中提供的时间戳,将音频和歌词切割成大约10秒钟的配对段落(大约三个句子)。
  • 音乐源分离:我们使用UVR 4,一个公开的音乐分离工具,将原始音频中的人声与伴奏部分分离。
  • 唱声转录:使用数字音频工作站软件FL Studio 5,通过唱声wav输入自动生成初步的乐谱,捕捉每个音符的音高和起止时间。
  • 单词边界注释:我们通过Pypinyin 6将歌词转换为音素序列,然后使用音频对齐工具Montreal Forced Aligner 7获取歌词中每个单词的边界。
  • 单词级对齐:使用动态时间规整(DTW)算法根据起止时间对单词和音符进行对齐。 最后,我们开发了一个包含15K个配对的歌词旋律条目的数据集,其中大约有5K个是中文,10K个是英文。

SongCompose

符号表示

元祖数据格式。为了解决歌词和旋律不匹配的问题,提出了一种基于元组的输入格式,每个元组代表一个离散的音乐单元,可以是歌词、旋律或歌词-旋律对。

离散持续时间。为了更有效地处理旋律的持续时间信息,采用对数编码方案将持续时间分为预定义数量的区间,将连续的持续时间范围转换为一组离散值。

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

扩展词汇表。扩展了模型的词汇表,引入了辅助标记来表示离散时间单位和音符值。对于时间离散化,扩展了512个唯一标记,每个标记代表一个特定的时间区间。对于音乐音符的表示,标记了10个八度的12个音高类,增加了120个不同的音乐标记。

两阶段训练

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

预训练阶段。为了丰富LLM的基础音乐知识,首先在大量的纯歌词和纯旋律语料库上对模型进行预训练,并进行下一个token预测。请注意,对于旋律,我们采用音高转换来增强我们的数据集。通过这种纯粹的歌词和旋律训练过程,我们的模型获得了坚实的音乐知识基础,为更高级的学习歌词和旋律之间的对应关系奠定了坚实的背景。

监督微调阶段。在将大量乐谱和歌词采集到模型后,为歌曲生成任务策划了遵循指令的数据,包括为给定的歌词创建旋律、为旋律编写歌词、扩展歌曲片段和从文本描述生成歌曲。

训练细节。采用InternLM-7B作为基础模型,训练模型根据之前的文本预测下一个token,最大化给定示例中token的对数似然。在优化方面,我们使用AdamW优化器。SongComposer的训练是在16块Nvidia A100 (80G) gpu上进行的,大约2天。

实验

客观评价指标

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

音乐生成的评估采用了SongMASS提出的Pitch Distribution Similarity、Duration Distribution Similarity和Melody Distance三个指标,并进行了后处理以保证比较的一致性。歌词生成的评估采用了CoSENT模型的Cosine Sentence、ROUGE-2和BERT score三个指标。其中,ROUGE-2关注生成文本和原始文本之间的bigram重叠,BERT score则利用BERT模型的上下文嵌入来衡量文本相似度。

主观评价指标

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

通过用户研究,使用1-5分的评分标准,评估了四个任务的生成结果质量。这四个任务分别是:歌词到旋律生成、旋律到歌词生成、歌曲延续和文本到歌曲生成。每个任务有两个评估指标,一个评估整体音乐质量,另一个评估特定任务的挑战。

结果

SongComposer是一种新型的音乐生成模型,它能够将歌词转化为旋律,或者将旋律转化为歌词。与其他现有的语言模型相比,SongComposer在音高分布相似性、持续时间分布相似性和旋律距离等方面表现更好。此外,SongComposer还能够有效地将歌词和旋律融合在一起,产生高质量的歌曲。

消融分析

《港中文发布SongComposer,音乐创作大模型,让大模型进行歌词和旋律创作》- 投稿作者:灵度智能 - 发布于:GetAI社区

使用不同组合的纯歌词和纯旋律数据集对模型学习的影响。实验结果表明,省略这两种数据集会显著降低性能,说明基础旋律和歌词知识在训练早期的重要性。单独使用任一数据集都能提高任务性能,其中纯歌词数据集主要提高旋律到歌词任务的性能,而纯旋律数据集则更有助于旋律生成。同时使用两种数据集可以获得最优结果,展示了结合歌词和旋律数据进行预训练的协同效应,有助于更全面的学习成果。

在SongComposer中使用专门的音乐知识令牌对模型性能的影响。通过对不同的令牌化组合进行实验,发现离散化的持续时间令牌对于把握旋律结构非常重要,而音符令牌的采用则显著提高了模型在旋律-歌词任务中的表现。同时,特殊的令牌化可以进一步提高模型的清晰度和优化学习过程。

总结

SongComposer是一个新颖的大型语言模型,利用符号化的歌曲表示来生成旋律和歌词。与之前处理音乐的LLM模型不同,SongComposer利用符号化的表示方式更接近人类的创作技巧,避免了效率低下和多样性有限的问题。它通过连接音符的音高、持续时间和休止时间与歌词的元组设计,确保了精确的音乐理解和对齐。此外,我们还创建了SongCompose-PT数据集,包含歌词、旋律和它们的组合,用于大规模的预训练。经过10,000个问答对的精炼,专注于指令遵循能力,SongComposer在将歌词转换为旋律、旋律到歌词生成、歌曲延续和文本到歌曲创作等各种任务中表现出色,甚至超过了GPT-4等先进的LLM模型。总之,我们相信SongComposer可以为LLM在音乐领域的创造性应用开辟新的道路。

1

评论0

请先
显示验证码