NotaGen:中央音乐学院联合清华推出AI音乐生成模型,古典乐谱一键生成,音乐性接近人类!

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🎵 “AI作曲时代来临!中央音乐学院联合北航、清华推出NotaGen,古典乐谱一键生成”

大家好,我是蚝油菜花。你是否也曾为创作古典音乐而苦恼?是否希望有一个工具能够快速生成符合特定风格的乐谱?今天,我要为大家介绍一款由中央音乐学院、北京航空航天大学、清华大学等机构联合推出的音乐生成模型——NotaGen。这款模型不仅能够生成高质量的古典乐谱,还能通过预训练、微调和强化学习相结合的方式,显著提升音乐的艺术性和可控性。接下来,让我们一起深入了解NotaGen的强大功能和技术原理。

🚀 快速阅读

NotaGen 是一款基于大型语言模型训练范式的音乐生成模型。

  1. 核心功能:生成高质量古典乐谱,支持多种风格和乐器的条件生成。
  2. 技术原理:通过预训练、微调和强化学习相结合的方式,优化生成音乐的质量和一致性。

NotaGen 是什么

NotaGen

NotaGen 是由中央音乐学院、北京航空航天大学、清华大学等机构联合推出的音乐生成模型,旨在通过模仿大型语言模型(LLM)的训练范式,生成高质量的古典乐谱。该模型基于预训练、微调和强化学习相结合的方法,预训练阶段使用了超过160万首乐曲,微调阶段则基于约9000首高质量古典作品,通过“时期-作曲家-乐器”提示进行条件生成。

在强化学习阶段,NotaGen 引入了 CLaMP-DPO 方法,对比学习模型 CLaMP² 为生成的音乐提供反馈,优化音乐性与可控性,无需人工标注或预定义奖励。NotaGen 在主观 A/B 测试中优于基线模型,接近人类作品的音乐美感,显著提升符号音乐生成的艺术性。

NotaGen 的主要功能

  • 生成高质量古典乐谱:根据用户指定的时期(如巴洛克、古典、浪漫)、作曲家(如巴赫、莫扎特、肖邦)和乐器(如键盘、弦乐四重奏、管弦乐)生成符合特定风格的乐谱。
  • 提升音乐性:基于预训练、微调和强化学习相结合的方式,生成具有高度音乐性(如旋律优美、和声流畅、结构连贯)的作品。
  • 可控性生成:用户可以通过“时期-作曲家-乐器”等条件提示,控制生成音乐的风格和特点。
  • 支持多种模型规模:提供不同参数规模的模型(如 NotaGen-small、NotaGen-medium 和 NotaGen-large),适应不同的硬件和应用场景。

NotaGen 的技术原理

  • 预训练:在超过160万首乐曲上进行预训练,涵盖多种风格和乐器。基于大规模数据学习音乐的基本结构和模式,类似于语言模型中的“语言理解”阶段。用符号音乐表示(如 ABC 符号)进行编码,预测下一个符号的任务进行训练。
  • 微调:在约9000首高质量古典作品上进行微调,针对特定风格(如巴洛克、古典、浪漫)和作曲家进行优化,生成符合特定风格的音乐。用“时期-作曲家-乐器”提示进行条件生成,增强模型对特定风格的理解和生成能力。
  • 强化学习:基于 CLaMP-DPO(Contrastive Language-Music Pretraining with Direct Preference Optimization)方法,对比学习模型 CLaMP² 提供反馈,优化生成音乐的质量和一致性,无需人工标注或预定义奖励。生成的音乐样本根据 CLaMP² 的评分被分为“选择”和“拒绝”两类,基于 DPO 算法优化模型,提升生成音乐的音乐性和可控性。
  • 符号音乐表示:用 ABC 符号表示乐谱,简化编码和生成过程,支持多声部音乐的生成。基于去除全休止符、添加小节索引等方法优化数据,提升生成效率和质量。
  • 模型架构:基于层次化的 Transformer 解码器,包括 patch-level decoder 和 character-level decoder,分别处理音乐片段和符号生成。结合 CLaMP² 提供的多模态反馈,优化生成音乐的全局特征(如风格、和声、结构)。

如何运行 NotaGen

环境设置

conda create --name notagen python=3.10
conda activate notagen
conda install pytorch==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install accelerate
pip install optimum
pip install -r requirements.txt

模型权重

预训练

我们提供了不同规模的预训练权重:

模型参数Patch-level Decoder 层数Character-level Decoder 层数隐藏层大小Patch 长度(上下文长度)
NotaGen-small110M1237682048
NotaGen-medium244M16310242048
NotaGen-large516M20612801024

微调

我们在约9000首古典作品上微调了 NotaGen-large。你可以下载权重:

强化学习

在预训练和微调之后,我们使用 CLaMP-DPONotaGen-large 进行了3次迭代优化。你可以下载权重:

NotaGen-X

我们进一步优化了训练过程,并发布了更好的版本——NotaGen-X。与论文中的版本相比,NotaGen-X 引入了以下改进:

Gradio 演示

我们为 NotaGen-X 开发了一个本地 Gradio 演示。你可以输入“时期-作曲家-乐器”作为提示,让 NotaGen 生成音乐!

部署 NotaGen-X 推理需要至少 24GB 的 GPU 内存。

1. 环境搭建

首先,需要搭建运行环境。以下是完整的环境设置步骤:

conda create --name notagen python=3.10
conda activate notagen
conda install pytorch==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install accelerate
pip install optimum
pip install -r requirements.txt

这些命令将创建一个名为 notagen 的 Python 环境,并安装运行所需的依赖项,包括 PyTorch、CUDA、以及其他相关库。

2. 下载 NotaGen-X 模型

接下来,下载NotaGen-X 模型文件,并将其放置在 gradio/ 目录下。

该模型文件是用于生成音乐的核心部分,支持基于条件的音乐生成。

3. 运行 demo.py

完成环境搭建和模型下载后,可以运行 demo.py 文件以启动 Gradio Demo。

cd gradio/
python demo.py

执行上述命令后,Gradio Demo 将在本地启动。您可以通过浏览器访问 0.0.0.0:7861 查看 Demo 页面。

NotaGen-illustration

4. 使用 NotaGen 的功能

在 Demo 页面中,您可以选择不同的条件组合来生成音乐。这些条件包括:

  • Period(时期):音乐风格所属的历史时期。
  • Composer(作曲家):特定作曲家的风格。
  • Instrumentation(乐器配置):生成音乐的乐器组合。

选择条件后,点击生成按钮,NotaGen 将根据所选条件生成音乐。生成完成后,您可以将生成的音乐保存为 ABC 格式或 MusicXML 文件。

需要注意的是,当前支持的条件组合数量为 112 种。这一限制源于微调数据集中每种条件组合下的音乐片段数量。未来,我们计划扩展条件组合的种类和形式,以进一步丰富生成的音乐内容。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值