今日arXiv最热大模型论文:点击即可播放!港中文发布大模型写歌神器!

news2024/11/16 12:54:01

一首歌,包含作词作曲两个部分。擅长作词or作曲就已经很牛了。比如方文山是周杰伦的御用作词人,而周杰伦写过很多耳熟能详的曲子。而兼具作词作曲才华的全能创作人却是难得一见。

最近港中文发布了一款歌曲创作大模型SongComposer,作词作曲都不在话下。 并且擅长让歌词和旋律相互交融,让整首歌听起来更加和谐。

图片

先来几个小demo一起欣赏一下:

根据歌词编写旋律

歌词:突如其来的那一场 谁在路旁 在路旁 听见我自由放声唱 和我一样 背上行囊 脚步丈量远方

Given Lyrics,夕小瑶科技说,13秒

根据旋律作词:

给出以下旋律:

melody,夕小瑶科技说,23秒

生成的歌词:他们也曾像我一样 追着风跑着 却找不到方向 只能像我这样 停在路上 有一点累 却也不觉的 有一点心为了追逐梦想 我总是选择最难的路

最终合成的歌曲:

melodyGsong,夕小瑶科技说,20秒

续写歌曲:

给出歌曲的开头

songprompt,夕小瑶科技说,5秒

续写结果

songpromptContinuation,夕小瑶科技说,16秒

根据文本生成歌曲:

甚至你需要输入“用悠扬的旋律和缓慢的节奏创作一首关于爱和自由的歌曲”,SongComposer就能根据文本提示生成一首包含词曲的歌:

Given Text,夕小瑶科技说,22秒

怎么样,是不是听起来还不错,有那味了。如果再加上编曲老师的润色,一首完整度较高的流行歌曲就完成了!

图片

除此之外,作者还发布了用于训练的歌词-旋律配对数据集,以及一套评估生成歌曲质量的指标,相信可以推动智能音乐创作往前迈进一大步!

论文标题:
SongComposer: A Large Language Model for Lyric and Melody Composition in Song Generation

公众号「夕小瑶科技说」后台回复“SongComposer”获取论文PDF!

SongCompose-PT Dataset

本节概述了SongCompose-PT数据集的编制、创建和结构,其中包括单独的歌词、旋律和在单词级别上将歌词与旋律同步的歌词-旋律配对集合。

纯歌词数据集

从两个在线来源收集纯歌词数据集:

  • Kaggle数据集,包括带有Spotify Valence标签的15万首歌曲的歌词。

  • Music Lyric Chatbot数据集,包含14万首中文歌曲的歌词。从28.3万首中英文歌曲中删选而来的高质量的歌词。

纯旋律数据集

为了将旋律数据集组织成基于文本的结构,使用MIDI文件作为纯旋律数据集,其结构简单,能够在没有复杂音频处理的情况下高效提取和操作旋律。

使用pretty midi解析MIDI文件,仅从中提取“旋律”或“人声”轨道,由于MIDI中的旋律被表示为随时间推移的一系列音符,每个音符具有特定的音高、开始和结束时间戳,最终获得一个旋律属性三元组列表,包括{音符音高、音符持续时间、休止符持续时间}。

其中约4.5万条条目来自LMD-matched MIDI数据集,约8万条来自网络爬虫。再进行必要的数据过滤以删除重复和质量不佳的样本,最终剩下大约2万个MIDI样本。

配对歌词-旋律数据集

大量歌词和旋律配对数据对于训练LLM进行歌曲创作非常重要。但是歌曲与旋律的对齐非常困难,需要详细的注释和特定的专业知识。它包括确保歌词与一个或多个旋律音符精确匹配,并标注精确的时间戳,如下图所示:

图片

本文利用了来自LMD-full数据集的7,998首歌曲,以及来自Reddit数据集的4,199首歌曲。此外,还结合了OpenCpop数据集其中100首中文流行歌曲,以及M4Singer数据集其中700首高质量中文歌曲。

为了进一步丰富配对歌词-旋律数据,本文还抓取网络信息创建了一个包含4,000首经典中文歌曲的数据集。收集歌词-旋律数据的流程如下图所示:

图片

  1. 数据来源爬取:搜集大量的mp3文件及其对应的歌词文件,包括句级别的时间戳。

  2. 歌词清理:使用GPT-4清理歌词文本中的不相关细节,如歌曲标题、艺术家姓名和制作信息。

  3. 分段切片:为了减轻长时间对齐的挑战和误差积累,根据歌词文件中提供的时间戳将音频和歌词切片为大约10秒的配对段落(每个段落大约三句)。

  4. 音乐源分离:利用UVR4这个公开的音乐分离工具,从原始音频中分离人声和伴奏部分。

  5. 歌声转录:使用数字音频工作站软件FL Studio5自动生成初步的乐谱,捕捉每个音符的音高和起始-结束时间。

  6. 词边界注释:通过Pypinyin6将歌词转换为音素序列,然后利用音频对齐工具——Montreal Forced Aligner获取歌词中每个词语的边界。

  7. 词级别对齐:利用动态时间扭曲(DTW)算法,根据起始-结束时间对单词和音符进行对齐。

最后,本文开发了一个包含约15K个配对歌词-旋律条目的数据集,其中约5K首为中文,10K首为英文。

SongComposer

LLM友好的歌曲表示

元组数据格式

为了将歌词和旋律输入到LLM中,一个直观的策略是按顺序排列它们,从一系列歌词开始,然后是一系列音符值和时长。然而,由于其顺序化方法,模型很难对齐歌词和旋律,导致产生不对齐的输出。

作者提出了一种统一的输入组织方式,利用基于元组的格式,其中每个元组代表一个离散的音乐单元,可以是一个歌词,一个旋律,或者一个歌词-旋律对。

具体来说,在纯歌词数据的情况下,在每个元组中插入一个单词。对于纯旋律,在每个元组中包括音调、音符时长和休息时长。对于歌词-旋律对,将歌词和相应的音符元素合并在同一个元组内。由于一个单词可以对应多个音符,一个单元组可能包含一个单词以及多个音符和它们各自的时长。使用竖线(|)来分隔不同的元组,并将元组序列作为LLM的输入,如下图所示。

图片

这种元组格式明确地为模型提供了歌词和旋律之间的相互映射,有助于掌握元素之间的对应关系。

离散化时长

为了有效处理旋律中的时长信息,采用对数编码方案将时长分为预定义数量的bin,将连续的时长范围转换为一组离散值。这种为LLM提供的组织良好且简洁的输入增强了模型捕捉音乐内容的精确时间变化的能力。

具体来说,根据时长的统计分布,将它们截取到 [xmin, xmax]。对于任意时长x,编码过程定义如下:

图片

设置 [xmin, xmax] = [-0.3, 6],bins = 512,ϵ = 1,这使得时长可编码为512个离散整数,最高可达6.3秒。相反,要将离散化值解码为原始时长:

图片

词汇扩展

为了确保清晰度,通过引入由〈•〉符号表示的辅助标记,针对离散化的时间单位和音符值在模型词汇中推广表示形式。对于时间离散化,扩展了512个独特token,表示为。对于音乐音符的表示,标记了十个八度内的12个音高类别,从而添加了120个不同的音乐token。

两阶段训练

预训练阶段

为了丰富LLM的基础音乐知识,首先在大量纯歌词和纯旋律的语料库上对模型进行预训练。

对于旋律,采用音高移调来增强数据集。具体来说,将音高移动高低四个半音,从而将数据集扩大了九倍。

对于歌词将整首歌曲的数据拆分成基于句子的样本,每个样本包含五到十行。这种制定使得模型能够获得更加专注和相关的学习上下文,有助于更连贯地生成歌曲。

通过这种纯歌词和旋律的训练过程,模型已经获得了扎实的音乐知识基础,为更加关注歌词和旋律之间对应关系的高级学习奠定了坚实基础。随后,使用配对数据引导模型生成对齐的歌词-旋律对。根据经验,为了保留模型处理旋律和歌词的能力,以1:1:1样本比例向模型输入相等数量的纯旋律、纯歌词和配对数据。

总共有0.23B个歌词tokens、0.28B个旋律tokens和0.16B个配对数据tokens。所有数据都是使用元组数据格式输入的。

监督微调阶段

在将大量乐谱和歌词引入模型后,为歌曲生成制作指令遵循数据,包括给定歌词创建旋律、为旋律写歌词、扩展歌曲部分以及根据文本描述生成歌曲。其中,为前三个任务手动准备了3K个问答对。对于最后一个任务,使用GPT-4生成了1K首歌曲摘要,这些摘要又形成了一个文本到歌曲的数据集,指导了歌曲创作过程。

客观评价指标

本文还构建了一个包含1188首歌曲的验证集。其中,415首是中文歌曲,773首是英文歌曲。在后续测试中,将一些歌曲随机分割成5至10个句子。客观评估的重点是评估生成的输出与真实样本之间的相似性。

旋律生成

对于旋律评估,采用了SongMASS(提出的度量标准。其中包括音高分布相似度(PD)、时长分布相似度(DD)和旋律距离(MD)。由于与SongMASS相比的校准策略的不同,通过加法对齐ground truth和生成音符的平均音高。

歌词生成

在歌词生成方面,使用CoSENT模型,评估句子级别的对齐。该模型允许输入歌词,并计算生成歌词与原始歌词之间的余弦相似性。此外,结合ROUGE-2分数和BERT分数作为另外两个用于评估歌词生成的度量标准。ROUGE-2分数关注生成文本和原始文本之间的二元组重叠。BERT分数利用BERT-base multilingual uncased 模型基于上下文嵌入来衡量文本相似度。

主观评价指标

选取30名参与者对每个任务中有10个案例进行评价。评分范围为1到5,得分越高表示质量更高。

歌词到旋律生成

歌词到旋律生成要求根据给定的歌词创作出一段合适的旋律。对旋律进行评估包括:(1)和声(HMY.):评估旋律的整体质量。

(2)旋律-歌词兼容性(MLC.):检查生成的旋律与给定歌词之间的契合程度。

旋律到歌词生成

旋律到歌词生成旨在产生与提供的旋律相匹配的歌词。对歌词进行评估包括:(1)流畅性(FLN.):考虑生成歌词的语法正确性和语义连贯性。

(2)旋律-歌词兼容性(MLC.):检查生成歌词与给定旋律的契合程度。

歌曲延续性

歌曲延续涉及在旋律和歌词方面延长已有歌曲的部分。评估延续的质量包括:(1)整体质量(OVL.):衡量生成歌曲的整体质量,以其音乐吸引力为标准。(2)与歌曲提示的一致性(COH.):分析延续与提供的歌曲提示之间的自然融合,评估旋律、歌词和其他音乐元素的连贯性。

文本到歌曲生成

歌曲延续根据文本描述生成完整的歌曲,以音乐和歌词的形式捕捉其本质。评估重点包括:(1)整体质量(OVL.):衡量生成歌曲的整体质量,以其音乐吸引力为标准。(2)与文本输入相关性(REL.):检查生成歌曲与输入文本的对齐度和相关性。

实验结果

歌词到旋律生成

图片

如上表所示,该方法在调性分布相似度(PD)和时长分布相似度(DD)方面优于先进的语言模型,比GPT-4高出10个多点,并在中英双语中实现了最低的旋律距离(MD)。

图片

▲主观评估

另外,在主观评估中发现SongComposer在和声和旋律-歌词的搭配方面比GPT-3.5和GPT-4要好很多。这意味SongComposer更擅长让歌词和旋律相互配合得更好,让整首歌听起来更和谐。

旋律至歌词生成

图片

该方法在生成与原始歌词紧密匹配的歌词方面非常有效。主观评估显示,用户们一致认为SongComposer在产生歌词方面非常流畅且与旋律高度相关,能够有效地捕捉并补充底层旋律的节奏。

歌曲延续

图片

SongComposer不仅能够独立产出高质量的歌词和旋律,还能够将它们结合起来,使整首歌听起来更和谐。

文本至歌曲生成

图片

在文本至歌曲生成的主观评估中,SongComposer可以根据文本提示创作出旋律优美、主题和情感完美契合的歌曲。

消融实验

在消融研究中本文报告了针对歌词到旋律和旋律到歌词任务的旋律距离(MD)和BERT分数。

预训练数据集

为了探究专门数据集对模型学习的影响,作者使用了不同纯歌词和纯旋律数据集的配对数据进行训练实验,结果如下表所示:

图片

研究结果显示,如果省略了纯歌词和纯旋律的数据集,模型的性能会明显下降。这表明在训练的早期阶段,基础旋律和抒情知识的重要性。纯歌词数据集主要提高了旋律到歌词任务的性能,而纯旋律数据集则更明显地提高了旋律生成的水平。而结合歌词和旋律数据集能够带来最佳的效果。

旋律知识的扩展词汇

为了了解专门用于旋律知识的标记是否有利于SongComposer的性能,本文对不同的标记组合进行了消融,评估它们对模型处理和生成音乐内容的影响,如下表所示:

图片

首先,在时长标记方面,直接将原始基于浮点数的秒数输入到SongComposer中,而非应用离散数字。缺乏特殊时间标记将导致模型无法为歌词到旋律任务生成正确结果。

相反,引入离散时长标记显著提高了旋律到歌词任务的表现,无论是否引入音符标记,BERT分数都提高了超过0.03。这验证了时长离散化对掌握旋律结构的重要性。

其次,采用音符标记在两个任务中都带来了显著改进,使用音符标记有助于模型更好地理解音符的含义,并提高了学习的效果。

结论

SongComposer利用符号化的歌曲表示法来生成旋律和歌词,在各种任务中表现出色,如将歌词转换为旋律、旋律生成歌词、歌曲延续和基于文本描述的歌曲创作,甚至在性能上超越了像GPT-4这样的先进LLM模型。

相信SongComposer可以为LLM在音乐领域的创意应用开辟新的途径。

公众号「夕小瑶科技说」后台回复“SongComposer”获取论文PDF!

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

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

相关文章

Pegasus智能家居套件样例开发--软定时器

样例简介 此样例将演示如何在Pegasus Wi-Fi IoT智能家居套件上使用cmsis 2.0 接口进行定时器开发。 工程版本 系统版本/API版本:OpenHarmony 3.0 releaseIDE版本:DevEco Device Tool Release 3.0.0.401 快速上手 准备硬件环境 预装windows系统的PC…

uniapp项目申请短信模板临时Nginx配置

现在申请短信模板不允许有变量,且要指向实际业务网站,因为项目是小程序,用uniapp写的,现在申请短信,把uniapp打包成h5项目,上传至服务器,修改niginx配置中springboot项目部分,记录一…

Netty之ChannelHandlerMask详解

Netty的ChannelHandlerMask是用于标记ChannelHandler的位掩码。它被用于指示ChannelHandler的事件处理方式。ChannelHandlerMask 定义了ChannelHandler所有事件。 final class ChannelHandlerMask {static final int MASK_EXCEPTION_CAUGHT 1;static final int MASK_CHANNEL_…

前端src中图片img标签资源的几种写法?

在 Vue 项目中引用图片路径有几种不同的方法,具体取决于你的项目结构和配置。以下是几种常见的方式: 1. 静态资源目录 (Public) 如果你的图片放在了项目的 public 目录下(例如,Vite 和 Create Vue App 脚手架工具通常使用这个目…

关于页面置换算法的例题(2)

考虑一个500字的程序的下述逻辑地址访问序列:10,11,104,170,73,309,185,245,246,434,458,364。假定采用页式虚拟内存管理,…

力扣hot100题解(python版41-43题)

41、二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]示例…

理解C#里面的集合有哪些?怎么用,什么是安全集合?

介绍 在C#中,集合是一种用于存储和操作多个元素的数据结构。它们提供了各种操作,如添加、删除、查找等,以及遍历集合中的元素。集合通常根据其实现方式和行为特征进行分类。 集合继承IEnumerable 在C#中,几乎所有的集合类型都实现…

uniapp同步将本地图片转换为base64,支持微信、H5、APP

接上篇,少了一个方法的源代码。 先上代码: ploadFilePromiseSync (url) > { return new Promise((resolve, reject) > { // #ifdef MP-WEIXIN uni.getFileSystemManager().readFile({ filePath: url, encoding: base64, success: res > { let …

TVM 和模型优化的概述(1)

文章目录 1. 从 Tensorflow、PyTorch 或 Onnx 等框架导入模型(model)。2.翻译成 Relay3. lower 到 张量表达式。4. 使用 auto-tuning 模块 AutoTVM 或 AutoScheduler 搜索最佳 schedule。5. 选择最佳配置进行模型编译。6. lower 到 TIR。7. 编译成机器码…

【JavaScript】面试手撕节流

引入 上篇我们讲了防抖,这篇我们就谈谈防抖的好兄弟 – 节流。这里在老生常谈般的提一下他们两者之间的区别,顺带给读者巩固下。 PS: 开源节流中节流与这个技术上的节流,个人认为本质上是一样的。 开源节流的节流指的是节省公司的金钱开支。前端技术上的…

#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介 STM32F407 自带了硬件随机数发生器(RNG),RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。 28.1.1 RNG 框图 STM32F407 的随机数发生器(RNG&#x…

Python实现双向链表:从基础到应用

一、引言 双向链表是一种比单向链表更复杂的数据结构,每个节点除了包含数据和指向下一个节点的指针外,还包含一个指向前一个节点的指针。这种结构使得我们可以从链表的任何节点开始,向前或向后遍历链表。 目录 一、引言 二、节点定义 三、…

谷歌最强开源大模型亮相!Gemini技术下放,笔记本就能跑,可商用

明敏 发自 凹非寺 量子位 | 公众号 QbitAI 谷歌大模型,开源了! 一夜之间,Gemma系列正式上线,全面对外开放。 它采用Gemini同款技术架构,主打开源和轻量级,免费可用、模型权重开源、允许商用,…

C++ STL:set/multiset、map/multimap源码剖析

C STL中set和map底层数据结构为红黑树rb_tree。具体可以参考这篇文章。 ​​​​​​C STL :红黑树rb_tree源码剖析-CSDN博客 set插入时插的就是key, map插入时插的是value(键值对), 排序时底层的红黑树会根据key_compare(也就是模版…

[回归指标]R2、PCC(Pearson’s r )

R2相关系数 R2相关系数很熟悉了,就不具体解释了。 皮尔逊相关系数(PCC) 皮尔逊相关系数是研究变量之间线性相关程度的量,R方和PCC是不同的指标。R方衡量x和y的接近程度,PCC衡量的是x和y的变化趋势是否相同。R方是不…

可用于智能客服的完全开源免费商用的知识库项目

介绍 FastWiki项目是一个高性能、基于最新技术栈的知识库系统,专为大规模信息检索和智能搜索设计。利用微软Semantic Kernel进行深度学习和自然语言处理,结合.NET 8和MasaBlazor前端框架,后台采用.NET 8MasaFrameworkSemanticKernel&#xff…

深入理解Java泛型及其在实际编程中的应用

第1章:泛型的起源与重要性 大家好,我是小黑,在Java里,泛型(Generics)是一种不可或缺的特性,它允许咱们在编码时使用类型(Type)作为参数。这听起来可能有点绕&#xff0c…

LeetCode 2581.统计可能的树根数目:换根DP(树形DP)

【LetMeFly】2581.统计可能的树根数目:换根DP(树形DP) 力扣题目链接:https://leetcode.cn/problems/count-number-of-possible-root-nodes/ Alice 有一棵 n 个节点的树,节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges…

文件基础和文件fd

文章目录 预备知识C语言的文件接口系统调用文件fd 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 预备知识 我们平时说文件就是说文件里…

园区停车管理系统的设计与实现

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一 、设计说明 1.1 选题…