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.rhkb.cn/news/365863.html

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

相关文章

明日周刊-第14期

不好意思又拖更了哈哈哈。不过赶在7月的第一天,打算更新一下。建党节,值得纪念的一天。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 国内科技新闻 深中通道建成通车 时间:2024年6月30日 内容:深圳至中山跨江通道正式建成开…

【Spring Boot】spring boot环境搭建

1、环境准备 JDK安装:确保安装了Java Development Kit (JDK) 1.8或更高版本。JDK是Java编程的基础,Spring Boot项目需要它来编译和运行。Maven或Gradle安装:选择并安装Maven或Gradle作为项目构建工具。Maven通过pom.xml文件来管理项目的依赖…

PCL 基于点云RGB颜色的区域生长算法

RGB颜色的区域生长算法 一、概述1.1 算法定义1.2 算法特点1.3 算法实现二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 算法定义 点云RGB区域生长算法: 是一个基于RGB颜色信息的区域生长算法,用于点云分割。该算法利用了点云中相邻点之间的颜色相似性来将点云分割成…

nodejs--【Express基本使用】

10 【Express基本使用】 https://www.expressjs.com.cn/ 基于 Node.js 平台,快速、开放、极简的 web 开发框架。 1.Express的安装方式 Express的安装可直接使用npm包管理器上的项目,在安装npm之前可先安装淘宝镜像: npm install -g cnpm -…

【从零开始学架构 架构基础】五 架构设计的复杂度来源:低成本、安全、规模

架构设计的复杂度来源其实就是架构设计要解决的问题,主要有如下几个:高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键,就是新旧技术之间不是完全的替代关系,有交叉,有各自的特点,所以才需要具体…

vue中路由来回切换页面直接卡死

今天发现一个很严重的问题,项目好不容易做好了,结果页面多了,切换之后卡死。页面所有的交互效果都失效了。 排查了许久的错误原因最后发现原来是路由名称重复了。 如上图当页面跳转到riskdetails详细页面之后,框架则被这个详情页…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

(七)glDrawArry绘制

几何数据&#xff1a;vao和vbo 材质程序&#xff1a;vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU&#xff0c;使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…

六西格玛绿带培训的证书有什么用处?

近年来&#xff0c;六西格玛作为一套严谨而系统的质量管理方法&#xff0c;被广泛运用于各行各业。而六西格玛绿带培训证书&#xff0c;作为这一方法论中基础且重要的认证&#xff0c;对于个人和企业而言&#xff0c;都具有不可忽视的价值。本文将从多个角度深入探讨六西格玛绿…

每日Attention学习7——Frequency-Perception Module

模块出处 [link] [code] [ACM MM 23] Frequency Perception Network for Camouflaged Object Detection 模块名称 Frequency-Perception Module (FPM) 模块作用 获取频域信息&#xff0c;更好识别伪装对象 模块结构 模块代码 import torch import torch.nn as nn import to…

汽车内饰塑料件光照老化实验箱

塑料件光照老化实验箱概述 塑料件光照老化实验箱&#xff0c;又称为氙灯老化试验箱&#xff0c;是一种模拟自然光照条件下塑料材料老化情况的实验设备。它通过内置的氙灯或其他光源&#xff0c;产生接近自然光的紫外线辐射&#xff0c;以此来加速塑料及其他材料的光老化过程。…

《重构》读书笔记【第1章 重构,第一个示例,第2章 重构原则】

文章目录 第1章 重构&#xff0c;第一个示例1.1 重构前1.2 重构后 第2章 重构原则2.1 何谓重构2.2 两顶帽子2.3 为何重构2.4 何时重构2.5 重构和开发过程 第1章 重构&#xff0c;第一个示例 我这里使用的IDE是IntelliJ IDEA 1.1 重构前 plays.js export const plays {&quo…

MySQL的简介和安装目录

今日总结到此结束&#xff0c;拜拜&#xff01;

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言&#xff0c;具备强大的扩展性和灵活性&#xff0c;广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初&#xff0c;…

0-30 VDC 稳压电源,电流控制 0.002-3 A

怎么运行的 首先&#xff0c;有一个次级绕组额定值为 24 V/3 A 的降压电源变压器&#xff0c;连接在电路输入点的引脚 1 和 2 上。&#xff08;电源输出的质量将直接影响与变压器的质量成正比&#xff09;。变压器次级绕组的交流电压经四个二极管D1-D4组成的电桥整流。桥输出端…

Python 中别再用 ‘+‘ 拼接字符串了!

目录 引言 为什么不推荐使用 "" 示例代码 更高效的替代方法 使用 join 方法 示例代码 使用格式化字符串&#xff08;f-strings&#xff09; 示例代码 引言 大家好&#xff0c;在 Python 编程中&#xff0c;我们常常需要对字符串进行拼接。你可能会自然地想到…

【Python函数编程实战】:从基础到进阶,打造代码复用利器

文章目录 &#x1f68b;前言&#x1f680;一、认识函数&#x1f308;二、函数定义❤️三、函数调用⭐四、实参与形参&#x1f4a5;1. 形式参数&#x1f6b2;2. 实际参数&#x1f525;1. 位置参数☔2. 关键字参数&#x1f3ac;3. 默认参数&#x1f525;4. 可变数量参数(不定长参…

VUE2及其生态查漏补缺

1、数据代理概括 数据代理过程相当于是进行了 vm 代理 vm_data中的属性&#xff0c;vm._data 是与 我们vue文件中写的 data是全等的 //创建Vue实例let data { //data中用于存储数据&#xff0c;数据供el所指定的容器去使用&#xff0c;值我们暂时先写成一个对象。name:atguig…

选哪个短剧系统源码好:全面评估与决策指南

在短剧内容创作和分享日益流行的今天&#xff0c;选择合适的短剧系统源码对于构建一个成功的短剧平台至关重要。短剧系统源码不仅关系到平台的稳定性和用户体验&#xff0c;还直接影响到内容创作者和观众的互动质量。本文将提供一份全面的评估指南&#xff0c;帮助您在众多短剧…

七一建党节|热烈庆祝中国共产党成立103周年!

时光荏苒&#xff0c;岁月如梭。 在这热情似火的夏日&#xff0c; 我们迎来了中国共产党成立103周年的重要时刻。 这是一个值得全体中华儿女共同铭记和庆祝的日子&#xff0c; 也是激励我们不断前进的重要时刻。 103年&#xff0c; 风雨兼程&#xff0c;砥砺前行。 从嘉兴…