模型简介
模型特点
模型能力
使用案例
🚀 MusicGen - 中等规模 - 15亿参数模型
MusicGen 是一款文本转音乐模型,能够根据文本描述或音频提示生成高质量的音乐样本。它采用单阶段自回归 Transformer 架构,基于 32kHz 的 EnCodec 分词器进行训练,拥有 4 个码本,采样频率为 50Hz。与 MusicLM 等现有方法不同,MusicGen 无需自监督语义表示,且能一次性生成全部 4 个码本。通过在码本间引入小延迟,实现了码本的并行预测,每秒音频仅需 50 个自回归步骤。
MusicGen 由 Jade Copet、Felix Kreuk、Itai Gat、Tal Remez、David Kant、Gabriel Synnaeve、Yossi Adi、Alexandre Défossez 发表于论文 Simple and Controllable Music Generation。
目前发布了四个检查点:
🚀 快速开始
你可以亲自体验 MusicGen 的魅力!
- Audiocraft Colab:
- Hugging Face Colab:
- Hugging Face 演示:
✨ 主要特性
- 基于文本描述或音频提示生成高质量音乐样本。
- 单阶段自回归 Transformer 架构,无需自监督语义表示。
- 一次性生成 4 个码本,通过引入延迟实现并行预测。
📦 安装指南
使用 🤗 Transformers 库
你可以使用 🤗 Transformers 库(版本 4.31.0 及以上)在本地运行 MusicGen。
- 首先安装 🤗 Transformers 库 和 scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
使用 Audiocraft 库
你也可以通过原始的 Audiocraft 库 在本地运行 MusicGen。
- 首先安装
audiocraft
库:
pip install git+https://github.com/facebookresearch/audiocraft.git
- 确保安装了
ffmpeg
:
apt-get install ffmpeg
💻 使用示例
基础用法
使用 🤗 Transformers 库的 Text-to-Audio
(TTA)管道进行推理
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-audio", "facebook/musicgen-medium")
music = synthesiser("带有舒缓旋律的低保真音乐", forward_params={"do_sample": True})
scipy.io.wavfile.write("musicgen_out.wav", rate=music["sampling_rate"], data=music["audio"])
使用 Transformers 建模代码进行推理
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-medium")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-medium")
inputs = processor(
text=["带有低沉鼓点和合成器的 80 年代流行曲目", "带有响亮吉他和沉重鼓点的 90 年代摇滚歌曲"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
在 Jupyter Notebook 中播放音频样本
from IPython.display import Audio
sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)
使用第三方库(如 scipy
)将音频保存为 .wav
文件
import scipy
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())
高级用法
使用 Audiocraft 库运行推理
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained("medium")
model.set_generation_params(duration=8) # 生成 8 秒的音频
descriptions = ["欢快的摇滚", "充满活力的电子舞曲"]
wav = model.generate(descriptions) # 生成 2 个音频样本
for idx, one_wav in enumerate(wav):
# 将音频保存为 {idx}.wav 文件,并进行 -14 db LUFS 的响度归一化
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发组织 | Meta AI 的 FAIR 团队 |
模型日期 | 2023 年 4 月至 5 月进行训练 |
模型版本 | 版本 1 |
模型类型 | 由用于音频分词的 EnCodec 模型和基于 Transformer 架构的自回归语言模型组成,用于音乐建模。模型有不同大小(3 亿、15 亿和 33 亿参数)和两种变体(用于文本转音乐生成任务的模型和用于旋律引导音乐生成的模型) |
更多信息资源 | 可参考论文 Simple and Controllable Music Generation |
引用详情 | @misc{copet2023simple, title={Simple and Controllable Music Generation}, author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez}, year={2023}, eprint={2306.05284}, archivePrefix={arXiv}, primaryClass={cs.SD}} |
许可证 | 代码采用 MIT 许可证发布,模型权重采用 CC-BY-NC 4.0 许可证发布 |
问题反馈途径 | 可通过项目的 Github 仓库 发送关于 MusicGen 的问题和建议,或提交 issue |
预期用途
- 主要预期用途:MusicGen 主要用于基于人工智能的音乐生成研究,包括探索和理解生成模型的局限性以推动科学进步,以及让机器学习爱好者通过文本或旋律引导生成音乐来了解生成式人工智能模型的当前能力。
- 主要预期用户:音频、机器学习和人工智能领域的研究人员,以及希望更好理解这些模型的爱好者。
- 超出适用范围的用例:在未进行进一步风险评估和缓解措施之前,该模型不应用于下游应用。不得使用该模型故意创建或传播会给人们带来不良影响的音乐作品,包括生成令人不安、苦恼或冒犯性的音乐,以及传播历史或当前刻板印象的内容。
评估指标
- 模型性能指标:使用以下客观指标在标准音乐基准上评估模型:
- 基于预训练音频分类器(VGGish)提取的特征计算的 Fréchet 音频距离。
- 基于预训练音频分类器(PaSST)提取的标签分布计算的 Kullback-Leibler 散度。
- 基于预训练 CLAP 模型提取的音频嵌入和文本嵌入计算的 CLAP 分数。
- 此外,还通过人类参与者进行了定性研究,从音乐样本的整体质量、与输入文本的相关性以及旋律引导音乐生成中对旋律的遵循程度等方面评估模型性能。
- 决策阈值:不适用。
评估数据集
模型在 MusicCaps 基准 和一个领域内保留评估集上进行了评估,评估集与训练集无艺术家重叠。
训练数据集
模型在以下授权数据源上进行训练:Meta 音乐倡议声音库、Shutterstock 音乐库 和 Pond5 音乐库。更多关于训练集和预处理的详细信息可参考论文。
评估结果
以下是在 MusicCaps 基准上使用发布的模型获得的客观指标:
模型 | Fréchet 音频距离 | Kullback-Leibler 散度 | 文本一致性 | 色度余弦相似度 |
---|---|---|---|---|
facebook/musicgen-small | 4.88 | 1.42 | 0.27 | - |
facebook/musicgen-medium | 5.14 | 1.38 | 0.28 | - |
facebook/musicgen-large | 5.48 | 1.37 | 0.28 | - |
facebook/musicgen-melody | 4.93 | 1.41 | 0.27 | 0.44 |
更多关于性能指标和人类研究的详细信息可在论文中找到。
局限性和偏差
- 数据方面:用于训练模型的数据源由音乐专业人士创建,并与版权持有者签订了法律协议。模型在 20000 小时的数据上进行训练,扩大训练数据集规模有望进一步提升模型性能。
- 缓解措施:通过相应标签去除数据源中的人声,然后使用最先进的音乐源分离方法(开源的 Hybrid Transformer for Music Source Separation,即 HT-Demucs)进行处理。
- 局限性:
- 无法生成逼真的人声。
- 基于英文描述进行训练,在其他语言上的表现不佳。
- 对所有音乐风格和文化的处理效果不一致。
- 有时会生成结尾为静音的音频。
- 难以确定哪种文本描述能产生最佳生成效果,可能需要进行提示工程以获得满意结果。
- 偏差:数据源可能缺乏多样性,并非所有音乐文化都在数据集中得到平等体现。模型在各种音乐流派上的表现可能不一致,生成的音频样本会反映训练数据中的偏差。未来的研究应采用平衡和公正的文化表示方法,例如扩大训练数据的多样性和包容性。
- 风险和危害:模型的偏差和局限性可能导致生成有偏差、不适当或冒犯性的音频样本。提供可复现研究和训练新模型的代码有助于将应用扩展到更新、更具代表性的数据上。
- 使用场景:用户必须了解模型的偏差、局限性和风险。MusicGen 是为可控音乐生成的人工智能研究而开发的模型,在未进一步研究和缓解风险的情况下,不应将其用于下游应用。
引用信息
@misc{copet2023simple,
title={Simple and Controllable Music Generation},
author={Jade Copet and Felix Kreuk and Itai Gat and Tal Remez and David Kant and Gabriel Synnaeve and Yossi Adi and Alexandre Défossez},
year={2023},
eprint={2306.05284},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
许可证
代码采用 MIT 许可证发布,模型权重采用 CC-BY-NC 4.0 许可证发布。
问题反馈
你可以通过项目的 Github 仓库 发送关于 MusicGen 的问题和建议,或提交 issue。







