推理: true
标签:
- 音乐生成
许可证: cc-by-nc-4.0
任务标签: 文本转音频
小部件:
- 文本: "带有80年代嘻哈风格的放克浩室音乐"
示例标题: "提示词1"
- 文本: "融合低保真、弛放电子和慢节奏元素的舒缓歌曲"
示例标题: "提示词2"
- 文本: "适合播客开场使用的抓耳节奏"
示例标题: "提示词3"
MusicGen - 小模型 - 300M参数
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使用指南
从4.31.0版本开始,您可以使用🤗 Transformers库本地运行MusicGen。
- 首先安装🤗 Transformers库和scipy:
pip install --upgrade pip
pip install --upgrade transformers scipy
- 通过
文本转音频
(TTA)流水线运行推理,仅需几行代码即可调用MusicGen模型:
from transformers import pipeline
import scipy
synthesiser = pipeline("text-to-audio", "facebook/musicgen-small")
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-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
inputs = processor(
text=["带有厚重鼓点和合成器的80年代流行曲", "带有响亮吉他和强力鼓点的90年代摇滚"],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
- 可通过IPython播放或保存为.wav文件:
from IPython.display import Audio
Audio(audio_values[0].numpy(), rate=model.config.audio_encoder.sampling_rate)
import scipy
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())
更多细节请参阅MusicGen文档。
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("small")
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月
版本: v1.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的授权数据,总计20K小时,经HT-Demucs音源分离处理保留器乐部分。
性能表现
模型 |
FAD ↓ |
KLD ↓ |
文本一致性 ↑ |
色度相似度 ↑ |
小模型 |
4.88 |
1.42 |
0.27 |
- |
中模型 |
5.14 |
1.38 |
0.28 |
- |
大模型 |
5.48 |
1.37 |
0.28 |
- |
旋律模型 |
4.93 |
1.41 |
0.27 |
0.44 |
局限性
- 无法生成真实人声
- 仅支持英语描述
- 音乐风格覆盖不均
- 可能出现歌曲提前结束
- 需提示词调优
偏见风险: 训练数据文化多样性不足,可能反映数据偏见
使用注意: 必须意识到模型的偏见和风险,不建议直接用于生产环境