在AI风起云涌的当下,诞生了一大批优秀的AI应用,有像ChatGPT、Claude和文心一言这种文本生成领域的集大成者,也有像MidJourney和StableDiffusion这类AI绘画领域的王者。无独有偶,在AI音频领域里AI孙燕姿[1]也曾风靡一时,让大家大饱耳福。今天要介绍的是AI音频领域最近比较火的另一个项目—audiocraft[2]。
体验方式
废话不多说,先上体验。
体验步骤:
第一步:在mp3资源网站[3]上下载一个免费的mp3文件:
第二步:到demo地址进行体验,地址为MusicGen - a Hugging Face Space by facebook[4]
把下载的mp3和描述导入,即可自动生成Music:
与此同时,它还提供了丰富的预训练模型,感兴趣的可以自行尝试。项目的github地址为:https://github.com/facebookresearch/audiocraft,下面的内容翻译整理自该项目。
Audiocraft是一个基于PyTorch的音频生成深度学习研究库。目前,它包含了MusicGen的代码,这是一种最先进的可控文本生成音乐模型。
MusicGen
Audiocraft提供了MusicGen的代码和模型,一个简单而可控的音乐生成模型[5]。MusicGen是一个单阶段的自回归Transformer模型,使用32kHz的EnCodec tokenizer进行训练,其中包含4个以50Hz采样的码书。与现有的方法(如MusicLM[6])不同,MusicGen不需要自监督语义表示,它可以在一次遍历中生成所有4个码书。通过在码书之间引入小的延迟,我们可以并行地预测它们,从而每秒只需要进行50个自回归步骤来生成音频。请查看我们的示例页面[7]或测试现有的演示!
我们使用了20,000小时的授权音乐来训练MusicGen。具体而言,我们依赖于一个包含10,000首高质量音乐曲目的内部数据集,以及ShutterStock和Pond5的音乐数据。
安装
Audiocraft需要Python 3.9、PyTorch 2.0.0以及至少16 GB内存的GPU(适用于中等大小的模型)。要安装Audiocraft,可以运行以下命令:
# 最好先确保已经安装了torch,特别是在安装xformers之前。
# 如果已经安装了PyTorch,请不要运行此命令。
pip install 'torch>=2.0'
# 然后选择以下其中一种方式进行安装
pip install -U audiocraft # 稳定版本
pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft # 最新版本
pip install -e . # 或者如果你本地克隆了该仓库
使用方法
我们提供了多种与MusicGen交互的方式:
1.你可以在本地运行demo.ipynb
[8]的Jupyter Notebook来体验MusicGen,或使用提供的colab notebook[9]。
2.你可以通过运行python app.py
在本地使用gradio demo。
3.在facebook/MusicGen
HuggingFace Space[10]上也提供了一个演示(特别感谢HF团队的支持)。
4.最后,你可以在[Colab GPU上运行Gradio demo[11],这是根据@camenduru Colab[12]进行调整的。
API
我们提供了一个简单的API和4个预训练模型。预训练模型包括:
•small
:300M模型,仅支持文本到音乐的转换 - 🤗 Hub[13]
•medium
:1.5B模型,仅支持文本到音乐的转换 - 🤗 Hub[14]
•melody
:1.5B模型,支持文本到音乐和文本+旋律到音乐的转换 - 🤗 Hub[15]
•large
:3.3B模型,仅支持文本到音乐的转换 - 🤗 Hub[16]
我们观察到在medium
或melody
模型中质量和计算之间取得了最佳平衡。为了在本地使用MusicGen,你必须拥有GPU 。我们推荐使用16GB的内存,但较小的GPU可以生成短序列,或者使用small
模型生成较长的序列。
注意 :在使用更新版本的torchaudio
时,请确保已安装ffmpeg[17]。你可以使用以下命令安装:
apt
-
get
install ffmpeg
下面是使用API的一个简单示例:
import torchaudio
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained('melody')
model.set_generation_params(duration=8) # generate 8 seconds.
wav = model.generate_unconditional(4) # generates 4 unconditional audio samples
descriptions = ['happy rock', 'energetic EDM', 'sad jazz']
wav = model.generate(descriptions) # generates 3 samples.
melody, sr = torchaudio.load('./assets/bach.mp3')
# generates using the melody from the given audio and the provided descriptions.
wav = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr)
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", loudness_compressor=True)
模型卡片
请参阅模型卡片页面[18]。现整理如下:
模型详情
开发该模型的组织: Meta AI的FAIR团队。
模型日期: MusicGen的训练日期为2023年4月至2023年5月。
模型版本: 这是模型的第1个版本。
模型类型: MusicGen包含了一个用于音频标记的EnCodec模型,以及基于Transformer架构的自回归语言模型用于音乐建模。该模型有不同的大小:300M、1.5B和3.3B参数;以及两个变种:一个用于文本到音乐生成任务的模型,和一个用于基于旋律的音乐生成的模型。
获取更多信息的论文或资源: 更多信息可以在论文Simple and Controllable Music Generation[19]中找到。
引用详情: 见我们的论文[20]
许可证: 代码采用MIT许可证发布,模型权重采用CC-BY-NC 4.0许可证发布。
有关模型的问题或评论发送至何处: 有关MusicGen的问题和评论可以通过项目的Github存储库[21]发送,或通过提出一个问题(issue)的方式。
预期使用
主要预期使用: MusicGen的主要用途是进行基于人工智能的音乐生成的研究,包括:
•研究工作,如探索和更好地理解生成模型的局限性,以进一步改进科学水平 •生成由文本或旋律引导的音乐,以让机器学习爱好者更好地理解当前生成AI模型的能力
主要预期用户: 该模型的主要预期用户是音频、机器学习和人工智能领域的研究人员,以及希望更好地理解这些模型的业余爱好者。
不包括在范围内的使用案例: 在没有进一步的风险评估和缓解措施的情况下,不应将该模型用于下游应用。不应使用该模型来故意创作或传播对人们产生敌意或疏离环境的音乐作品。这包括生成可能被人们认为令人不安、痛苦或冒犯的音乐,以及传播历史或现实的刻板印象的内容。
指标
模型性能指标: 我们使用以下客观指标来评估模型在标准音乐基准测试上的表现:
•从预训练音频分类器(VGGish)提取的特征计算的Frechet音频距离 •从预训练音频分类器(PaSST)提取的标签分布上的Kullback-Leibler散度 •从预训练CLAP模型提取的音频嵌入和文本嵌入之间的CLAP分数
此外,我们进行了与人类参与者的定性研究,评估模型在以下方面的性能:
•音乐样本的整体质量; •文本与提供的文本输入的相关性; •在旋律引导的音乐生成中对旋律的遵循程度。
有关性能指标和人类研究的更多细节,请参阅论文。
决策阈值: 不适用。
评估数据集
该模型在MusicCaps基准测试集[22]和一个领域内保留的评估集上进行了评估,其中与训练集没有艺术家重叠。
训练数据集
该模型使用以下来源的经过许可的数据进行训练:Meta Music Initiative声音收藏[23],Shutterstock音乐收藏[24]和Pond5音乐收藏[25]。有关训练集和相应的预处理的更多细节,请参阅论文。
定量分析
有关更多信息,请参阅论文Simple and Controllable Music Generation[26]中的实验设置部分。
限制和偏差
数据: 用于训练模型的数据来源由音乐专业人士创建,并通过与权利持有人的法律协议进行保护。该模型使用了20,000小时的数据进行训练,我们相信在更大的数据集上扩展模型可以进一步提高模型的性能。
缓解措施: 使用相应的标签从数据源中移除了人声,并使用先进的音乐源分离方法进行处理,即使用开源的Hybrid Transformer for Music Source Separation[27] (HT-Demucs)。
限制:
•该模型无法生成逼真的人声。 •该模型是使用英文描述进行训练的,在其他语言上的表现可能不如英文。 •该模型在所有音乐风格和文化中的表现并不一致。 •该模型有时会生成歌曲结尾的静音部分。 •有时很难确定哪种类型的文本描述能够产生最佳的生成结果。可能需要进行提示工程来获得满意的结果。
偏差: 数据源可能缺乏多样性,所有的音乐文化在数据集中的代表性不一样。该模型可能在各种不同的音乐流派上表现不一样。模型生成的样本将反映训练数据的偏见。进一步的工作应包括采用平衡和公正的文化表征方法,例如将训练数据扩展到多样化和包容性。
风险和危害: 模型的偏见和限制可能导致生成的样本被认为是有偏见、不合适或冒犯性的。我们认为,提供代码以复现研究并训练新模型将有助于将应用扩展到新的、更具代表性的数据上。
使用案例: 用户必须意识到该模型的偏见、限制和风险。MusicGen是为了人工智能研究的可控音乐生成而开发的模型。因此,在没有进一步调查和降低风险的情况下,不应将其用于下游应用。
论文地址:arxiv[28]: https://arxiv.org/abs/2306.05284
常见问题
训练代码会发布吗?
会的。我们将很快发布MusicGen和EnCodec的训练代码。
我在Windows上需要帮助
@FurkanGozukara为Audiocraft/MusicGen在Windows上的完整教程[29]制作了一个教程视频。
引用
@article{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},
journal={arXiv preprint arXiv:2306.05284},
}
许可证
•本仓库中的代码采用MIT许可证发布,详见LICENSE文件[30]。 •本仓库中的模型权重采用CC-BY-NC 4.0许可证发布,详见LICENSE_weights文件[31]。
References
[1]
AI孙燕姿: https://github.com/svc-develop-team/so-vits-svc
[2]
audiocraft: https://github.com/facebookresearch/audiocraft
[3]
mp3资源网站: https://mp3juices.nu/ec6Ac7/
[4]
MusicGen - a Hugging Face Space by facebook: https://huggingface.co/spaces/facebook/MusicGen
[5]
一个简单而可控的音乐生成模型: https://arxiv.org/abs/2306.05284
[6]
MusicLM: https://arxiv.org/abs/2301.11325
[7]
示例页面: https://ai.honu.io/papers/musicgen/
[8]
demo.ipynb
: ./demo.ipynb
[9]
colab notebook: https://colab.research.google.com/drive/1fxGqfg96RBUvGxZ1XXN07s3DthrKUl4-?usp=sharing
[10]
facebook/MusicGen
HuggingFace Space: https://huggingface.co/spaces/facebook/MusicGen
[11]
Gradio demo: https://colab.research.google.com/drive/1-Xe9NCdIs2sCUbiSmwHXozK6AAhMm7\_i?usp=sharing
[12]
@camenduru Colab: https://github.com/camenduru/MusicGen-colab
[13]
🤗 Hub: https://huggingface.co/facebook/musicgen-small
[14]
🤗 Hub: https://huggingface.co/facebook/musicgen-medium
[15]
🤗 Hub: https://huggingface.co/facebook/musicgen-melody
[16]
🤗 Hub: https://huggingface.co/facebook/musicgen-large
[17]
ffmpeg: https://ffmpeg.org/download.html
[18]
模型卡片页面: ./MODEL_CARD.md
[19]
Simple and Controllable Music Generation: https://arxiv.org/abs/2306.05284
[20]
我们的论文: https://arxiv.org/abs/2306.05284
[21]
Github存储库: https://github.com/facebookresearch/audiocraft
[22]
MusicCaps基准测试集: https://www.kaggle.com/datasets/googleai/musiccaps
[23]
Meta Music Initiative声音收藏: https://www.fb.com/sound
[24]
Shutterstock音乐收藏: https://www.shutterstock.com/music
[25]
Pond5音乐收藏: https://www.pond5.com/
[26]
Simple and Controllable Music Generation: https://arxiv.org/abs/2306.05284
[27]
Hybrid Transformer for Music Source Separation: https://github.com/facebookresearch/demucs
[28]
arxiv: https://arxiv.org/abs/2306.05284
[29]
Audiocraft/MusicGen在Windows上的完整教程: https://youtu.be/v-YpvPkhdO4
[30]
LICENSE文件: LICENSE
[31]
LICENSE_weights文件: LICENSE_weights