SongComposer:让大模型像人类一样具有音乐创作力

news2024/11/15 4:31:06

人工智能咨询培训老师叶梓 转载标明出处

大模型在翻译、复杂语言环境中的推理等任务中展现出了人类级别的能力。这引发了一个问题:这些模型能否在更具情感、抽象性以及需要专业技能的领域中,如音乐创作,展现出人类的创造力呢?香港中文大学、北京航空航天大学和上海人工智能实验室的研究团队的最新研究 "SongComposer" 给出了肯定的答案,这是一个专为歌曲创作设计的创新性大型语言模型,它能够理解并生成旋律和歌词,为音乐产业带来新的变革。

SongComposer系统如何根据指令生成歌曲的概述

数据集

SongCompose-PT 数据集包含了歌词、旋律以及它们之间的配对。这个数据集的目的是为了让大型语言模型(LLM)能够更好地理解音乐和歌词之间的关系,并生成与人类创作方式相似的歌曲。

研究团队从两个在线资源中收集了大量歌词数据。他们首先从 Kaggle 数据集中获取了150,000首带有 Spotify Valence 标签的歌曲的歌词。然后从 Music Lyric Chatbot 数据集中收集了140,000首华语歌曲的歌词。之后,团队进行了一系列的清洗过程,包括去除非英文和非中文的歌词、特殊符号、标点和空格,以及删除重复和无意义的内容。最终整理出了283,000首高质量歌曲的歌词,其中150,000首为英文,133,000首为中文。

收集歌词-旋律配对数据的流程,包括数据抓取、清洗、切片、音乐源分离、声音转录、词边界注释和词级对齐


为了组织旋律数据集,研究者选择了 MIDI 文件作为数据源。MIDI 文件具有结构简单的优点,便于提取和操作旋律,而无需复杂的音频处理。他们从 LMD-matched MIDI 数据集中收集了45,000个条目,并通过网页爬虫获取了大约80,000个条目。使用 pretty midi 库,他们解析了 MIDI 文件,并提取了旋律或声乐轨道。每条旋律被表示为一系列音乐音符属性的三元组,包括音符音高、音符持续时间和休止符持续时间。

配对歌词-旋律数据集对于训练 LLM 进行歌曲创作至关重要,因为它们提供了精确的歌词和旋律之间的同步信息。为了创建这个数据集,研究者首先从先前研究中获取了数据集,包括 LMD-full 数据集的7,998首歌曲和 Reddit 来源的4,199首歌曲。他们还整合了 OpenCpop 和 M4Singer 数据集。为了进一步丰富配对数据,他们通过网页抓取创建了一个包含4,000首经典华语歌曲的数据集。

收集歌词-旋律数据的流程包括以下几个步骤:

源数据抓取:从网络上收集大量 mp3 文件及其对应的歌词文件。

歌词清洗:使用 GPT-4 清洗歌词文本,去除无关细节。

片段切片:根据歌词文件中的时戳,将音频和歌词切成大约10秒的配对片段。

音乐源分离:使用 UVR4 工具分离人声和伴奏。

歌声转录:使用 FL Studio 自动生成初步音乐谱。

词边界注释:通过 Pypinyin 和 Montreal Forced Aligner 确定歌词中每个词的边界。

词级对齐:使用动态时间规整(DTW)算法根据起止时间对齐单词和音符。

他们开发了一个包含15,000个配对歌词-旋律条目的数据集,其中大约5,000个为中文,10,000个为英文。这个数据集为 SongComposer 模型提供了丰富的学习资源,使其能够在多种歌曲生成任务中表现出色。

SongComposer 模型的设计和训练

SongComposer模型的主要策略是将符号化的歌曲表示转换成适合LLM的格式。基于这个基础设置的创新点是两阶段的训练方法。这个方法使用了作者收集的数据集,并使模型能够作曲。

LLM 的符号表示

为了使LLM能够有效处理音乐和歌词,SongComposer模型采用了一种新颖的元组数据格式。这种格式的核心思想是将歌词和旋律的每个元素组合成一个单元,即元组。这样的设计使得模型能够更直观地捕捉到歌词和旋律之间的对应关系。

在处理纯歌词数据时,模型将每个元组中放入一个单词。而在处理纯旋律数据时,每个元组则包含了音符的音高、持续时间和休止符的持续时间。对于那些旋律和歌词同步的数据,模型会将同一元组中的歌词和对应的音符元素合并在一起。这种设计允许一个单词对应多个音符,因此一个元组中可以包含一个单词和几个相应的音符及其持续时间。

为了更有效地处理旋律中的持续时间信息,SongComposer采用了一种对数编码方案。这个方案将连续的持续时间范围转换成一组离散值,这样做的好处是可以更精确地捕捉音乐中的时间变化,并且这种编码方式与人类对时间感知的敏感度相匹配,即对较短时间的区分更细致。

模型还扩展了其词汇表,引入了辅助标记来代表离散化的时间单元和音符值。这些新引入的词汇在整个训练过程中进行了优化,使得模型能够更清晰地理解和生成音乐符号。

通过这种符号化表示方法,SongComposer模型不仅能够生成与人类创作方式相似的旋律和歌词,而且还提高了生成过程的效率和灵活性。

两阶段训练

SongComposer 模型的训练过程分为两个关键阶段:预训练阶段和监督式微调阶段。

两阶段训练的框架,包括预训练阶段和监督微调阶段,以及它们如何使用元组数据格式和基于指令的QA对来训练模型

预训练阶段(Pretraining Stage): 在预训练阶段,SongComposer 模型的目标是获取基本的音乐知识。这个阶段使用了大量纯歌词和纯旋律的数据,通过下一个标记预测的任务来训练模型。为了增加数据的多样性并提高模型的泛化能力,研究者们采用了音高转换技术来扩充数据集,即将旋律的音高上下移动半音,从而扩大了数据集的规模。

模型被训练来处理三种类型的数据:纯歌词、纯旋律和歌词旋律配对。这些数据都以元组的格式输入,其中每个元组包含了歌词或旋律的相关信息。通过这种方式,模型学习到了歌词和旋律之间的基本关系,为后续的微调阶段打下了坚实的基础。

监督式微调阶段(Supervised Finetune Stage): 在模型完成了预训练并吸收了大量音乐和歌词知识之后,它进入到了监督式微调阶段。这个阶段的目的是进一步提升模型遵循指令生成歌曲的能力。研究者们为此准备了10,000个问答对(QA pairs),这些问答对覆盖了多种歌曲生成任务,包括给定歌词生成旋律、给定旋律生成歌词、歌曲片段的扩展以及根据文本描述生成完整歌曲。

在这个阶段,模型会根据这些问答对进行微调,学习如何根据给定的指令生成相应的歌曲部分。例如,如果任务是根据歌词生成旋律,模型就会学习如何根据提供的歌词内容创作出和谐的旋律。这种微调过程使得 SongComposer 能够更精确地理解和执行各种歌曲创作任务。

通过这两个阶段的训练,SongComposer 模型不仅学习了音乐和歌词的基本元素,还获得了根据具体指令创作歌曲的能力。

实验

客观评估指标

研究者构建了一个由1188首歌曲组成的验证集,这个集合被用来测试模型生成的歌曲与真实歌曲的相似度。其中,包含了415首中文歌曲和773首英文歌曲,确保这些歌曲在模型训练阶段没有被使用过,以此来评估模型的泛化能力。

旋律生成评估: 为了评估模型生成旋律的质量,研究者采用了SongMASS提出的评估指标,这包括:

  • 音高分布相似性(PD):衡量生成旋律的音高分布与真实旋律的接近程度。
  • 持续时间分布相似性(DD):衡量生成旋律的音符持续时间与真实旋律的匹配度。
  • 旋律距离(MD):一个综合性指标,用以衡量生成旋律与真实旋律的总体差异。

为了确保评估的准确性,研究者还进行了后处理步骤,对真实旋律和生成旋律的音高进行对齐,并对持续时间进行了标准化处理,以便进行更加一致的比较。

歌词生成评估: 研究者使用CoSENT模型来评估生成歌词与原始歌词在句子级别上的对齐情况,通过计算两者之间的余弦相似性来定量评估。此外,还使用了ROUGE-2分数和BERT分数作为评估歌词生成的补充指标。ROUGE-2分数关注生成文本与原始文本中二元组的重叠程度,而BERT分数则基于上下文嵌入来衡量文本的相似性,这为评估提供了更深层次的语言理解。

主观评估指标

为了从人类角度评估生成歌曲的质量,研究者开展了一项用户研究。这项研究共有30名参与者,他们每个人评估了10个案例。研究者为每项任务设计了两个评估指标,并要求参与者根据1到5的评分标准进行评分,以此来衡量生成内容的质量。

任务特定评估:

  • 对于歌词到旋律生成任务,研究者评估了生成旋律的和谐性(Harmony)以及旋律与给定歌词的匹配度(Melody-Lyric Compatibility)。
  • 对于旋律到歌词生成任务,评估了生成歌词的流畅性(Fluency)以及歌词与提供旋律的匹配度。
  • 对于歌曲延续任务,评估了生成歌曲段的总体质量(Overall Quality)和与给定歌曲提示的连贯性(Coherence to the Song Prompt)。
  • 对于文本到歌曲生成任务,评估了生成歌曲的总体质量以及与输入文本的相关性(Relevance to the Text Input)。

结果

与现有LLMs的比较:

SongComposer的开发不仅仅是为了生成旋律和歌词,更是为了在艺术性和技术性上达到与人类创作相媲美的水平。在与现有LLMs的比较中,SongComposer显示出了其卓越的性能。研究者选择了GPT-4和GPT-3.5等模型作为基准,并通过few-shot prompt方法来引导这些模型生成期望的输出。这种方法通过提供少量的示例,让模型快速理解任务要求,并生成相应的结果。

客观评估结果:

在客观评估中,SongComposer在歌词到旋律生成任务上的表现尤为突出。它在音高分布相似性(PD)和持续时间分布相似性(DD)上都优于GPT-4,这意味着SongComposer生成的旋律在音高和节奏上与真实旋律更为接近。此外,旋律距离(MD)的低数值进一步证明了SongComposer生成的旋律与真实旋律的高相似度。

不同模型在将歌词转换成旋律的任务中的客观评估结果,包括音高分布相似度(PD)、持续时间分布相似度(DD)和旋律距离(MD)

主观评估结果:

主观评估结果进一步证实了SongComposer的优势。在用户研究中,参与者对SongComposer生成的歌曲在和谐度、旋律-歌词匹配度、歌词流畅度、总体质量和与文本输入的相关性等方面给予了更高的评分。这些评分反映了用户对SongComposer生成歌曲的主观感受,显示了其在艺术性和创造性上的优势。

四种任务(歌词转旋律、旋律转歌词、歌曲延续、文本转歌曲)的主观评估结果,评估指标包括和谐度(HMY.)、旋律-歌词兼容性(MLC.)、流畅度(FLN.)、整体质量(OVL.)、与歌曲提示的一致性(COH.)和与文本输入的相关性(REL.)

消融研究

在预训练数据集的影响研究中,通过不同的数据集组合进行训练实验,研究者发现,纯歌词和纯旋律数据集对模型的性能有着显著的影响。当这两种数据集都被排除时,模型的性能显著下降,这表明了基础音乐和歌词知识在模型早期学习阶段的重要性。而当引入任一种数据集时,模型的性能都有了显著提升,尤其是纯旋律数据集对旋律生成任务的提升更为显著。

分析了纯歌词数据集和纯旋律数据集对模型在歌词转旋律和旋律转歌词任务中表现的影响

旋律知识扩展词汇的影响研究中,消融实验显示,离散化的时间标记和音符标记对于模型处理和生成音乐内容的能力至关重要。当模型没有使用这些专用标记时,它无法正确生成旋律;而当引入这些标记时,模型在旋律到歌词任务中的性能得到了显著提升。

扩展词汇表中用于旋律知识的专用标记对模型表现的影响

通过这些详细的实验和评估,SongComposer证明了其在歌曲生成任务中的优越性能,特别是在旋律和歌词的生成质量上超越了现有的大型语言模型。

论文链接:https://arxiv.org/abs/2402.17645

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1932391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IAR启动流程深度“起底”

目录 1. IAR启动流程概述 2.可以不用__iar_program_start吗 3.小结 大家好,今天的肌肉也不是很快乐。 今天聊聊IAR特有的一些启动流程以及在调试的时候遇到的一些问题。 1. IAR启动流程概述 ARM M内核芯片里的启动代码通常会提供Arm、gcc、iar等编译器的模板&…

OrangePi 学习摘录

文章目录 1. 参考2. 开发板 Orange-Pi-CM4 预览3. 烧录 Linux 镜像到 TF 卡中4. 制作桌面版镜像qemu/chroot 5. Armbian6. 编译 1. 参考 淘宝 香橙派官网 Orange-Pi-3B Orange-Pi-CM4 基于docker构建香橙派zero系统构建环境 2. 开发板 Orange-Pi-CM4 预览 3. 烧录 Linux 镜像…

[iOS]浅析isa指针

[iOS]浅析isa指针 文章目录 [iOS]浅析isa指针isa指针isa的结构isa的初始化注意事项 上一篇留的悬念不止分类的实现 还有isa指针到底是什么 它是怎么工作的 class方法又是怎么运作的 class_data_bits_t bits; // class_rw_t * plus custom rr/alloc flags 这里面的class又是何方…

【C++11】(lambda)

C11中的lambda与线程。 目录 Lambda:仿函数的缺点:Lambda语法:Lambda使用示例:两数相加:两数交换:解决Goods排序问题: Lambda原理: Lambda: 假设我们有一个商品类&…

controller-from表单1

mvc模式是spring boot 开发web应用程序主要使用模式,mvc分别代表model模型,view是视图 ,controller是控制器 controller是对接用户请求数据调用服务层代码,具体怎么操作 浏览器发送http请求给到dispatcherServlet(前…

echarts 实现水利计算模型-雨量,流量,时间分割线

需求背景解决效果ISQQW代码地址index.vue 需求背景 实现水利计算模型-雨量&#xff0c;流量&#xff0c;时间分割线 解决效果 ISQQW代码地址 链接 index.vue <!--/** * author: liuk * date: 2024/06/13 * describe: 水利计算模型图表 */--> <template><di…

快速创建一个AI应用

千帆官网&#xff1a;https://console.bce.baidu.com/qianfan/overview 完成的demo&#xff1a;https://dog-tired.github.io/spage_ai/ 这篇博客主要讲述使用千帆免费的大模型接口简单的html页面创建一个AI问答机器人 平台能力 选择使用千帆的speed系列模型&#xff0c;免费…

SpringBoot整合MybatisPlus(详细版)

MybatisPlus简介 1. MybatisPlus 2. 特点 SpringBoot整合MybatisPlus 1. 新建SpringBoot工程 2. 数据准备 3. 引入依赖 4. 配置文件 5. 用MyBatisX-Generator生成代码 整体结构 User类 UserMapper UserServiceImpl UserController类 测试 查询用户表中全部信息 …

Flutter 状态管理新境界:多Provider并行驱动UI

前言 在上一篇文章中&#xff0c;我们讨论了如何使用 Provider 在 Flutter 中进行状态管理。 本篇文章我们来讨论如何使用多个 Provider。 在 Flutter 中&#xff0c;使用 Provider 管理多个不同的状态时&#xff0c;你可以为每个状态创建一个单独的 ChangeNotifierProvider…

C++初学者指南-5.标准库(第一部分)--容器遍历

C初学者指南-5.标准库(第一部分)–容器遍历 文章目录 C初学者指南-5.标准库(第一部分)--容器遍历前向遍历基于范围的循环for_each / for_each_n迭代器的显式使用基于索引的循环 逆向遍历反向范围循环(C20)反向 for_each / for_each_n反向迭代器的显式使用基于索引的反向循环…

2024年TOGAF考试预约流程(纯净版本)

TOGAF考试如何报名&#xff1f;TOGAF考试报名流程是什么&#xff1f;很多文章虽然都有指出来&#xff0c;但是并不明确指出具体流程 今天我们跟着艾威小编一起来看一下这篇纯净版2024年TOGAF考试预约流程&#xff0c;今天我们直说考试报名流程。 01登录官方网址 如果没账号就…

TCP传输控制协议二

TCP 是 TCP/IP 模型中的传输层一个最核心的协议&#xff0c;不仅如此&#xff0c;在整个 4 层模型中&#xff0c;它都是核心的协议&#xff0c;要不然模型怎么会叫做 TCP/IP 模型呢。 它向下使用网络层的 IP 协议&#xff0c;向上为 FTP、SMTP、POP3、SSH、Telnet、HTTP 等应用…

MySQL—— if/cast/case.... end/md5 函数

目录 1. if 使用 2. if 嵌套 ​3. case ... end 4. 类型转换 cast&#xff08;&#xff09; 5. 加密函数 md5&#xff08;&#xff09; 1. if 使用 将姓名为smith的员工工资上调10%&#xff1b; 2. if 嵌套 如果岗位是manager&#xff0c;工资上调10%&#xff0c;如果岗位是s…

收到赵健老师的限量签名书,开心

收到赵老师的亲笔签名&#x1f4d6;&#xff0c;开心一下下[愉快]&#xff0c;由外而内&#xff0c;首先是我喜欢的线装书&#xff0c;展开阅读舒适&#xff0c;手感友好&#xff0c;纸张更是很讲究&#xff0c;密度很高也很温润&#xff0c;应该是进口纸&#xff0c;每个对页的…

前端简历:项目经历(经验)-外卖送餐类

项目经历-堂食外送点餐 2022年2月-2022年5月 项目描述&#xff1a;该平台提供外送订餐服务&#xff0c;用户可以在手机中轻松地浏览菜品、下单、支付、编辑地址、填写个人信息等&#xff0c;我主要负责首页、订单、我的这3个功能/模块。 技术栈&#xff1a;Amfe-flexibleAxi…

【BUG】已解决:TypeError: object of type ‘int‘ has no len()

已解决&#xff1a;TypeError: object of type ‘int‘ has no len() 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市…

2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)

RC-u1 热҈热҈热҈ 分数 10 全屏浏览 切换布局 作者 DAI, Longao 单位 杭州百腾教育科技有限公司 热҈热҈热҈……最近热得打的字都出汗了&#xff01; 幸好某连锁餐厅开启了气温大于等于 35 度即可获得一杯免费雪碧的活动。但不知为何&#xff0c;在每个星期四的时候&#x…

云渲染服务:初创企业的成本效益与效率提升

视觉营销对于吸引潜在客户至关重要&#xff0c;而云渲染作为一种革命性工具&#xff0c;为创意产业提供了强大的计算能力和灵活性&#xff0c;帮助企业在竞争激烈的市场中脱颖而出。 一、什么是云渲染&#xff1f; 云渲染是指客户利用远程计算资源&#xff0c;将图形传输到云服…

linux虚拟机主ip地址:网络信息不可用(没IP)

第一种情况其它博主写的很详细 就是在 /etc/sysconfig/network-scripts/ifcfg-ens33 的onbootno 改为 yes 然后重启 第二种就是我遇到的&#xff0c;是因为服务没有启动 首先winr打开搜索 然后搜索service.msc 把这两项手工右键开启即可&#xff0c;然后重启虚拟机&a…

SpringCloud网关的实现原理与使用指南

Spring Cloud网关是一个基于Spring Cloud的微服务网关&#xff0c;它是一个独立的项目&#xff0c;可以对外提供API接口服务&#xff0c;负责请求的转发和路由。本文将介绍Spring Cloud网关的实现原理和使用指南。 一、Spring Cloud网关的实现原理 Spring Cloud网关基于Spring…