Mustango——音乐领域知识生成模型探索

Mustango:利用领域知识的音乐生成模型

论文地址:https://arxiv.org/pdf/2311.08355.pdf
源码地址:https://github.com/amaai-lab/mustango

论文题为**“**利用音乐领域知识开发文本到音乐模型’Mustango’”。它利用音乐领域的知识从文本指令中生成音乐。本研究的实验表明,Mustang 在利用文本引导生成音乐方面的表现明显优于其他模型。而且,Mustango 是一种基于音乐理论的创新生成模式,具有扩大创意活动范围的潜力。
在这里插入图片描述

Mustango 模型结构

传播模型的最新发展大大提高了文本到音乐生成模型的性能。然而,现有模型完全没有考虑对生成音乐的节奏、和弦进行和调性等音乐方面的精细控制。

在这项研究中,Mustango 被提出作为一种能够生成具有音乐性的音乐的模型。具体来说,该模型设想的文字提示不仅包含一般的文字说明,还包含音乐元素,如

  • 和弦进行
  • 拍击
  • 速度
  • 密钥

Mustango 的模型结构如下。

其基本结构以潜在扩散模型为基础,该模型将语音波形→mel-spectrogram→潜在表示(经 VAE 压缩)进行转换,并将扩散模型应用于潜在表示。本研究还采用了用于音乐生成的 UNet 专用版本MuNet 作为扩散模型。

具体来说,在使用 MuNet 去噪之后,通过将潜表征→mel-spectrogram(由 VAE 重构)→语音波形(由 HiFi GAN 重构)转换生成音乐。

MuNet 调节

如前所述,MuNet 是 UNet 针对音乐的扩散模型。在本研究中,它扮演着去噪的角色:对 MuNet 的调节按以下步骤进行。

  1. 文本编码器(FLAN-T5)从输入文本中获取嵌入信息
  2. 使用节拍和和弦编码器提取节拍和和弦特征
  3. 依次整合文本嵌入、节拍功能和代码功能的跨附件功能。

节拍编码器(DeBERTa Large)对文本提示中的节拍计数和节拍间隔进行编码。

和弦编码器(FLAN-T5 Large)还能根据文本提示和节拍信息对和弦进行编码。

建立大型数据集 “MusicBench”

在根据文本指令生成音乐领域,缺乏 "文本-音乐 "配对数据集也是一个问题。例如,近年来经常被用作音乐生成领域基准的数据集 "MusicCaps "仅包含约 5000 个条目。

这些数据的缺乏是进一步提高音乐生成模型性能的绊脚石。

为了弥补这些数据的不足,本研究以上述 MusicCaps 为基础,采用独特的数据扩展方法建立了一个大型数据集 MusicBench。

具体来说,MusicBench 是通过以下步骤从 5,479 个 MusicCaps 样本中建立起来的。

  1. 将 MusicCaps 分成 TrainA 和 TestA。
  2. 从 TrainA 和 TestA 音乐数据中提取节拍、和弦、调性和速度信息。
  3. 在步骤 2 中,在 TrainA 和 TestA 的标题中添加一句话来描述音乐特征,从而创建 TrainB 和 TestB。
  4. 在 ChatGPT 中转述 TrainB 的标题,创建 TrainC。
  5. 通过剔除低音质样本,从 TrainA 中提取了 3 413 个样本
  6. 在步骤 5 中,对音乐数据进行数据扩展,以改变音高、节奏和音量,生成 37,000 个样本。
  7. 在步骤 6 的样本中随机添加 0-4 个标题句子
  8. 使用 ChatGPT 对步骤 7 中的标题进行转述。
  9. 训练 A、训练 B、训练 C,结合步骤 5~8 扩展的数据

通过上述步骤,构建了一个大型数据集 MusicBench,其中包含 52 768 个最终训练数据样本(比 MusicCaps 大 11 倍)。

顺便提一下,在使用 ChatGPT 进行转述时,使用了以下提示。

音乐特征提取模型

在上述步骤 2 中,我们从音乐数据中提取了四种音乐特征–节拍、顺拍、和弦、调性和速度,并将其添加到现有的文本提示中。

在此过程中,一个名为 BeatNet 的模型被用于提取节拍和下拍的特征。

至于节奏(BPM),他们通过平均节拍之间时间间隔的倒数来估算。

与和弦进行相关的特征是通过一个名为 Chordino的模型提取的,而音调则是通过 Essentia 的 KeyExtractor 算法提取的。

音乐数据和文本数据的扩展方法

在上述步骤 6 中,对音乐数据进行数据扩展,以改变音高、节奏和音量。在此过程中,上述三个音乐特征会发生如下变化。

  • 使用 PyRubberband 在 ±3 个半音的范围内移动音乐的音高
  • 节奏变化范围为 ±5-25%。
  • 音量渐变(包括渐强和渐弱)。

此时,扩充音乐数据附带的文本提示也会被采集,以与扩充音乐数据相匹配。

这种方法的效果

为了检验Mustango 生成的音乐的质量和数据集 MusicBench 的有效性,对客观和主观指标进行了评估。

客观指标评估

客观指标评价采用弗雷谢特距离(FD)、弗雷谢特音频距离(FAD)和 KL 发散来评估生成音乐的质量。

评估使用了 TestA、TestB 和 FMACaps 测试数据。

结果如下

使用 MusicCaps 训练的 Tango 模型不如其他模型,这说明了 MusicBench 的有效性。还可以看出,使用 MusicBench 微调的预训练 Tango 和 Mustango 模型在 FD 和 KL 上的表现不相上下,但 Mustango 在 FAD 上的表现明显更好。

此外,在所有测试集上,Mustango 的 FAD 和 KL 均优于 MusicGen 和 AudioLDM2。

除此评估外,还定义了节奏、调性、和弦和节拍等九个音乐特征指标,并评估生成的音乐是否按照文本的指示表达了这些音乐特征。

评估使用了 TestB 和 FMACaps 测试数据。

结果如下

测试 B 显示,除 MusicGen 外,所有模型在节奏方面的表现都相当,而在节拍方面,不同模型之间的表现也相似。在关键字方面,在 MusicBench 中训练的模型明显优于在 MusicCaps 中训练的模型。其中,Mustango 在 TestB 中的表现优于所有其他模型,在 FMACaps 中排名第二。在和弦方面,Mustango 明显优于所有其他型号。

结果表明,Mustango 是控制和弦进行的最有效模型。

主观指标评估

主观评价包括对普通听众和专家(至少有五年音乐教育经验)进行问卷调查。

第一轮比较 Mustango 与 Tango,第二轮比较 Mustango 与 MusicGen 和 AudioLDM2。

结果如下

在第一轮中,用 MusicCaps 训练的 Tango 在所有指标上都不如用 MusicBench 训练的模型,这说明了 MusicBench 的有效性。还可以看出,Mustango 在许多指标上都表现最佳。

环境部署

git clone https://github.com/AMAAI-Lab/mustango
cd mustango
pip install -r requirements.txt
cd diffusers
pip install -e .
import IPython
import soundfile as sf
from mustango import Mustangomodel = Mustango("declare-lab/mustango")prompt = "This is a new age piece. There is a flute playing the main melody with a lot of staccato notes. The rhythmic background consists of a medium tempo electronic drum beat with percussive elements all over the spectrum. There is a playful atmosphere to the piece. This piece can be used in the soundtrack of a children's TV show or an advertisement jingle."music = model.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=music, rate=16000)

总结

本文介绍了对使用音乐领域知识的音乐生成人工智能 Mustango 的研究。这项研究的局限性之一是,由于计算资源的限制,目前的 Mustango 最多只能生成 10 秒钟的音乐。他们还说,目前的 Mustango 主要只能处理西方的音乐形式,在创作其他文化的音乐方面能力较弱。因此,作为未来的研究,他们计划 “生成时间更长的音乐”,并 “将其应用于更多样化的音乐流派,例如处理非西方音乐”。虽然 Mustango 在许多指标上都达到了 SOTA,但我感觉它在某些方面的性能仍然不如其他型号。尽管如此,就本研究中构建的数据集 MusicBench 而言,它似乎已被证明是有效的,因此在很大程度上可用作未来研究的基准。

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

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

相关文章

K 近邻、K-NN 算法图文详解

1. 为什么学习KNN算法 KNN是监督学习分类算法,主要解决现实生活中分类问题。根据目标的不同将监督学习任务分为了分类学习及回归预测问题。 KNN(K-Nearest Neihbor,KNN)K近邻是机器学习算法中理论最简单,最好理解的算法…

钉钉开放AI生态战略的真正价值到底是什么?很多人都没看懂

来源: 首席数智官 hello 大家好,我们是数字化领军者都在看的首席数智官。 关注我,每天给你讲一个商业案例。 今天我们要给你讲的是:钉钉开放AI大模型生态的战略意义到底是什么? 「谁先赢得苹果,谁就赢得…

AI大模型日报#0701:Meta发布LLM Compiler、扒一扒Sora两带头人博士论文

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)生成了今日要点以及每条资讯的摘要。欢迎阅读!《AI大模型日报》今日要点&#xf…

09 - matlab m_map地学绘图工具基础函数 - 绘制区域填充、伪彩色、加载图像和绘制浮雕效果的有关函数

09 - matlab m_map地学绘图工具基础函数 - 绘制区域填充、伪彩色、加载图像和绘制浮雕效果的有关函数 0. 引言1. 关于m_pcolor2. 关于m_image3. 关于m_shadedrelief4. 关于m_hatch5. 结语 0. 引言 本篇介绍下m_map中区域填充函数(m_hatch)、绘制伪彩色图…

2.2章节python的变量和常量

在Python中,变量和常量有一些基本的概念和用法,但需要注意的是,Python本身并没有内置的“常量”类型。然而,程序员通常会遵循一种约定,即使用全部大写的变量名来表示常量。 一、变量 在Python中,变量是一…

毫米波雷达深度学习技术-2.1~2.2深度度量学习和成对方法

2 深度度量学习 有几种雷达应用程序旨在对一组预定义的类别进行分类,例如不同的人类活动或手势。然而,在实际环境中,存在的类不仅仅是预定义的类,这就把问题变成了一个开放集的分类任务。开放集分类意味着网络应该能够检测输入是否…

Chapter 8 Feedback

Chapter 8 Feedback 这一章我们介绍feedback 反馈运放的原理. 负反馈是模拟电路强有力的工具. 8.1 General Considerations 反馈系统如下图所示 Aolamp open-loop gain即开环增益. Aolxo/xi β \beta β 是 feedback factor, 注意方向. β x f x o \beta\frac{x_{f}}{x_{o…

一、课程介绍,基础—环境安装、判断、循环语句等(爬虫及数据可视化)

一、课程介绍,基础—环境安装、判断、循环语句等(爬虫及数据可视化) 1. 课程介绍1.1 相关内容1.2 学习目标1.3 学习内容安排 2. python2.1 环境配置2.2 标识符和关键字2.3 运算符2.4 判断语句2.5 循环语句 1. 课程介绍 1.1 相关内容 10天的…

【pytorch11】高阶操作

高阶操作 WhereGather where 三个参数,第一个是condition,第二个参数是源头A,第三个参数是源头B,也就是说有两项数据A和B,C有可能来自于A也有可能来自于B,如果全部来自于A的话直接赋值给A,如果…

算法金 | Transformer,一个神奇的算法模型!!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 在现代自然语言处理(NLP)领域,Transformer 模型的出现带来了革命性的变…

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术,虽然它常用于物联网中作为设备之间的通信手段,但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…

【机器学习】基于Transformer的迁移学习:理论与实践

引言 在机器学习领域,迁移学习已成为提升模型训练效率和性能的重要策略,特别是在标注数据稀缺的场景下。Transformer模型自2017年由Google提出以来,在自然语言处理(NLP)领域取得了突破性进展,并逐渐扩展到…

Zuul介绍

Zuul 是 Netflix 开源的一个云平台网络层代理,它主要用于路由、负载均衡、中间件通信和动态路由。Zuul 本质上是一个基于 JVM 的网关,它提供了以下功能: 1.路由:Zuul 允许客户端和服务器之间的所有入站和出站请求通过一个中心化的…

小红书怎么保存无水印图?

使用小红书APP长按保存的图片代有水印,很多人想知道保存小红书无水印图片的方法。本文教你如何保存到无水印的小红书图片,但是请注意不要侵犯作者图片的版权。 小红书怎么保存无水印图? 1、手机上打开小红书APP; 2、打开后&#…

昇思25天学习打卡营第13天|BERT

一、简介: BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自…

2.3章节Python中的数值类型

1.整型数值 2.浮点型数值 3.复数   Python中的数值类型清晰且丰富,主要分为以下几种类型,每种类型都有其特定的用途和特性。 一、整型数值 1.定义:整数类型用于表示整数值,如1、-5、100等。 2.特点: Python 3中的…

卡尔曼滤波公式推导笔记

视频见B站上DR_CAN的卡尔曼滤波器 【卡尔曼滤波器】3_卡尔曼增益超详细数学推导 ~全网最完整_哔哩哔哩_bilibili

动手学深度学习5.6 GPU-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:17 使用和购买 GPU【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址:5.6. GPU —…

数据库定义语言(DDL)

数据库定义语言(DDL) 一、数据库操作 1、 查询所有的数据库 SHOW DATABASES;效果截图: 2、使用指定的数据库 use 2403 2403javaee;效果截图: 3、创建数据库 CREATE DATABASE 2404javaee;效果截图: 4、删除数据…

面向阿克曼移动机器人(自行车模型)的LQR(最优二次型调节器)路径跟踪方法

线性二次调节器(Linear Quadratic Regulator,LQR)是针对线性系统的最优控制方法。LQR 方法标准的求解体系是在考虑到损耗尽可能小的情况下, 以尽量小的代价平衡其他状态分量。一般情况下,线性系统在LQR 控制方法中用状态空间方程描…