模型简介
模型特点
模型能力
使用案例
🚀 MusicGen - Large - 3.3B
MusicGen是一个文本到音乐的模型,能够根据文本描述或音频提示生成高质量的音乐样本。它基于Transformer架构,为音乐生成研究和应用提供了强大的支持。
🚀 快速开始
你可以通过以下方式体验MusicGen:
✨ 主要特性
- 单阶段自回归模型:MusicGen是一个单阶段自回归Transformer模型,基于32kHz EnCodec分词器进行训练,拥有4个码本,采样频率为50Hz。
- 无需自监督语义表示:与MusicLM等现有方法不同,MusicGen不需要自监督语义表示,并且可以一次性生成所有4个码本。
- 并行预测码本:通过在码本之间引入小的延迟,可以并行预测码本,每秒音频仅需50个自回归步骤。
📦 安装指南
使用🤗 Transformers库
你可以使用🤗 Transformers库(版本4.31.0及以上)在本地运行MusicGen:
pip install --upgrade pip
pip install --upgrade transformers scipy
使用Audiocraft库
也可以通过原始的Audiocraft库在本地运行MusicGen:
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-large")
music = synthesiser("lo-fi music with a soothing melody", forward_params={"do_sample": True})
scipy.io.wavfile.write("musicgen_out.wav", rate=music["sampling_rate"], data=music["audio"])
高级用法
使用处理器 + 生成代码将文本转换为单声道32kHz音频波形,以实现更精细的控制:
from transformers import AutoProcessor, MusicgenForConditionalGeneration
processor = AutoProcessor.from_pretrained("facebook/musicgen-large")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-large")
inputs = processor(
text=["80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
播放或保存音频
在ipynb笔记本中播放音频:
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("large")
model.set_generation_params(duration=8) # generate 8 seconds.
descriptions = ["happy rock", "energetic EDM"]
wav = model.generate(descriptions) # generates 2 samples.
for idx, one_wav in enumerate(wav):
# Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发组织 | Meta AI的FAIR团队 |
模型日期 | 2023年4月至2023年5月进行训练 |
模型版本 | 版本1 |
模型类型 | 由用于音频分词的EnCodec模型和基于Transformer架构的自回归语言模型组成,用于音乐建模。模型有不同大小:300M、1.5B和3.3B参数;有两种变体:用于文本到音乐生成任务的模型和用于旋律引导音乐生成的模型 |
更多信息资源 | 可在论文 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仓库发送问题和评论,或创建issue |
预期用途
- 主要预期用途:MusicGen主要用于基于人工智能的音乐生成研究,包括探索和理解生成模型的局限性以改进科学水平,以及让机器学习爱好者通过文本或旋律引导生成音乐来了解生成式AI模型的能力。
- 主要预期用户:音频、机器学习和人工智能领域的研究人员,以及希望更好理解这些模型的爱好者。
- 非预期使用场景:在没有进一步风险评估和缓解措施的情况下,不应将该模型用于下游应用。不得使用该模型故意创建或传播会给人们带来不良环境的音乐作品,包括生成令人不安、痛苦或冒犯性的音乐,或传播历史或当前刻板印象的内容。
评估指标
- 模型性能指标:使用以下客观指标在标准音乐基准上评估模型:
- 基于预训练音频分类器(VGGish)提取的特征计算的Frechet音频距离
- 基于预训练音频分类器(PaSST)提取的标签分布的Kullback - Leibler散度
- 基于预训练CLAP模型提取的音频嵌入和文本嵌入的CLAP分数
- 定性研究:通过人类参与者进行定性研究,从以下方面评估模型性能:
- 音乐样本的整体质量
- 与提供的文本输入的相关性
- 旋律引导音乐生成中对旋律的遵循程度
评估数据集
模型在MusicCaps基准和一个领域内保留评估集上进行评估,评估集与训练集无艺术家重叠。
训练数据集
模型在许可数据上进行训练,数据来源包括:Meta Music Initiative Sound Collection、Shutterstock音乐库和Pond5音乐库。更多关于训练集和预处理的细节可参考论文。
评估结果
以下是发布的模型在MusicCaps上获得的客观指标。对于公开发布的模型,所有数据集都经过了最先进的音乐源分离方法处理,即使用开源的Hybrid Transformer for Music Source Separation (HT - Demucs),以仅保留乐器部分。这解释了与论文中使用的模型在客观指标上的差异。
模型 | Frechet音频距离 | KLD | 文本一致性 | 色度余弦相似度 |
---|---|---|---|---|
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是为可控音乐生成的人工智能研究而开发的模型,在没有进一步调查和风险缓解的情况下,不应将其用于下游应用。
⚠️ 重要提示
模型存在一定的局限性和偏差,在使用时需谨慎评估风险。
💡 使用建议
若要获得更好的生成效果,可尝试进行提示工程;在使用模型进行下游应用前,务必进行充分的风险评估和缓解。







