推理: true
标签:
MusicGen - 大模型 - 3.3B参数
MusicGen是一款文本到音乐的生成模型,能够根据文本描述或音频提示生成高质量的音乐样本。该模型采用单阶段自回归Transformer架构,基于32kHz的EnCodec分词器训练,使用4个50Hz采样的码本。与MusicLM等现有方法不同,MusicGen无需自监督语义表示,可一次性生成全部4个码本。通过在码本间引入微小延迟,我们实现了并行预测,使得每秒音频仅需50个自回归步骤。
本模型由Jade Copet, Felix Kreuk, Itai Gat, Tal Remez, David Kant, Gabriel Synnaeve, Yossi Adi, Alexandre Défossez在论文《简易可控的音乐生成》中发布。
我们发布了四个预训练模型:
使用示例
立即体验MusicGen!
🤗 Transformers使用指南
您可以使用🤗 Transformers库(4.31.0及以上版本)本地运行MusicGen。
- 首先安装🤗 Transformers库和scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
- 通过
文本到音频
(TTA)管道运行推理:
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-audio", "facebook/musicgen-large")
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-large")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-large")
inputs = processor(
text=["80年代流行乐(带低音鼓和合成器)", "90年代摇滚(强吉他和重鼓点)"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
- 在Jupyter笔记本中试听:
from IPython.display import Audio
sampling_rate = model.config.audio_encoder.sampling_rate
Audio(audio_values[0].numpy(), rate=sampling_rate)
或保存为.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())
更多细节请参阅MusicGen文档。
Audiocraft使用指南
也可以通过原版Audiocraft库运行:
- 安装audiocraft:
pip install git+https://github.com/facebookresearch/audiocraft.git
- 确保安装ffmpeg:
apt get install ffmpeg
- 运行Python代码:
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained("large")
model.set_generation_params(duration=8)
descriptions = ["欢快摇滚", "动感电子舞曲"]
wav = model.generate(descriptions)
for idx, one_wav in enumerate(wav):
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness")
模型详情
开发机构: Meta AI的FAIR团队
训练时间: 2023年4月至5月
版本: 1.0
类型: 包含EnCodec音频分词器和基于Transformer的自回归语言模型,提供300M/1.5B/3.3B三种参数量版本,含文本到音乐和旋律引导两种变体。
论文: 《简易可控的音乐生成》
引用格式:
@misc{copet2023simple,
title={Simple and Controllable Music Generation},
author={Jade Copet等},
year={2023},
eprint={2306.05284},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
许可证: 代码采用MIT,模型权重采用CC-BY-NC 4.0
问题反馈: 通过GitHub仓库提交
预期用途
主要用途: AI音乐生成研究,包括:
- 探索生成模型的局限性
- 业余爱好者理解生成式AI能力
目标用户: 音频/机器学习研究人员及爱好者
非适用场景: 不得用于制造敌对性内容或传播刻板印象
评估指标
客观指标:
- 基于VGGish的Frechet音频距离
- 基于PaSST的KL散度
- CLAP音频-文本嵌入相似度
人工评估维度:
- 音乐样本整体质量
- 文本相关性
- 旋律跟随度(旋律引导版本)
训练数据
使用Meta音乐计划音效库、Shutterstock和Pond5音乐库的授权数据,训练前通过HT-Demucs进行人声分离处理。
评估结果
模型 |
FAD ↓ |
KLD ↓ |
文本一致性 ↑ |
色度相似度 ↑ |
musicgen-small |
4.88 |
1.42 |
0.27 |
- |
musicgen-medium |
5.14 |
1.38 |
0.28 |
- |
musicgen-large |
5.48 |
1.37 |
0.28 |
- |
musicgen-melody |
4.93 |
1.41 |
0.27 |
0.44 |
局限性
- 无法生成逼真人声
- 仅支持英文描述效果最佳
- 对不同音乐风格表现不均
- 可能出现歌曲提前结束的情况
- 训练数据可能存在文化多样性不足
风险提示: 可能生成带有偏见或不适当的内容,建议下游应用前进行风险评估。