MusicGen 是一个简单且可控的音乐生成模型。它是一个单级自回归 Transformer 模型,通过 32kHz EnCodec 分词器进行训练,并具有 4 个以 50 Hz 采样的码本。与 MusicLM 等现有方法不同,MusicGen 不需要自我监督的语义表示,并且它一次性生成所有 4 个密码本。通过在码本之间引入一个小的延迟,作者表明他们可以并行预测它们,从而每秒音频只有 50 个自回归步骤。他们使用 20K 小时的授权音乐来训练 MusicGen。具体来说,他们依赖于 10K 高质量音乐曲目的内部数据集以及 ShutterStock 和 Pond5 音乐数据。
有关此模型的更多信息,请参见此处。
您可以在此处演示此模型或了解如何将其与 Replicate 的 API 一起使用。
Cog 是一种开源工具,它将机器学习模型打包在标准的生产就绪容器中。您可以将打包的模型部署到您自己的基础设施或复制中,用户可以通过 Web 界面或 API 与其进行交互。
齿轮。按照以下说明安装 Cog,或者直接运行:
sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog
请注意,要使用 Cog,您还需要安装 Docker。
git clone https://github.com/replicate/cog-musicgen-melody
要运行模型,您需要模型的 Docker 映像的本地副本。您可以通过在调用中指定图像 ID 来满足此要求以进行predict
,如下所示:
cog predict r8.im/joehoover/musicgen-melody@sha256:1a53415e6c4549e3022a0af82f4bd22b9ae2e747a8193af91b0bdffe63f93dfd -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
有关更多信息,请参阅此处的 Cog 部分
或者,您可以通过运行cog build
或让cog predict
隐式触发构建过程来自行构建映像。例如,以下将触发构建过程,然后执行预测:
cog predict -i description="tense staccato strings. plucked strings. dissonant. scary movie." -i duration=8
请注意,第一次运行cog predict
时,如果本地没有模型权重和其他必需资源,则会下载它们。此下载只需执行一次。
如果您还没有这样做,您应该确保您的模型使用cog predict
在本地运行。这将保证所有资产均可访问。例如,运行:
cog predict -i description=tense staccato strings. plucked strings. dissonant. scary movie. -i duration=8
转至replicate.com/create 以创建复制模型。如果您想将模型保持私有,请确保指定“私有”。
复制支持在各种 CPU 和 GPU 配置上运行模型。为了获得最佳性能,您需要在 A100 实例上运行此模型。
单击型号页面上的“设置”选项卡,向下滚动到“GPU 硬件”,然后选择“A100”。然后单击“保存”。
登录复制:
cog login
使用您在步骤 1 中指定的模型名称将当前目录的内容推送到复制:
cog push r8.im/username/modelname
了解有关将模型推送到复制的更多信息。
对 MusicGen 微调的支持正在开发中。目前,已经通过@chavez 的music_gen
训练器的改编实现了最低限度的支持。
假设您已配置本地环境(即您已完成使用 Cog 运行下指定的步骤),您可以使用如下命令运行训练:
cog train -i dataset_path=@<path-to-your-data> <additional hyperparameters>
Cog要求输入数据是一个文件;但是,我们的训练脚本需要一个目录。因此,在生产中,训练数据应以格式正确的训练数据目录的 tarball 形式提供。但是,您可以通过将训练数据目录命名为./train_data
来绕过此要求。如果存在这样的目录,训练脚本将尝试从该目录加载数据(请参阅train.py
中的第 140-147 行)。
目前,训练仅支持带有文本提示的音乐生成。
要使用您自己的数据训练模型,请按照下列步骤操作:
.txt
文件。这些文本文件应包含您想要与相应音频文件关联的文本提示。例如,如果您有audio_1.wav
,则还必须有audio_1.txt
,并且该文本文件应包含audio_1.wav
的提示。./train_data
,那么您可以简单地运行训练脚本,如下所示: cog train -i dataset_path=@./train_data/ <additional hyperparameters>
train_data
不存在,您可以压缩数据目录并将压缩包的路径传递给cog train ...
。然后,训练脚本将解压您的数据并尝试加载它。运行此命令以在单个剪辑上进行训练:
mkdir ./train_data/
wget -P ./train_data/ https://github.com/facebookresearch/audiocraft/raw/main/assets/bach.mp3
echo bach > ./train_data/bach.txt
tar -cvzf train_data.tar.gz train_data/
cog train -i dataset_path=@./data.tar.gz -i epochs=10
然后,您可以像model.lm.load_state_dict(torch.load('model_outdir/lm_final.pt'))
一样加载模型并生成如下:
model.set_generation_params(
duration=8,
top_k=250,
top_p=0,
temperature=1,
cfg_coef=3,
)
wav = model.generate(descriptions=[''], progress=True)