通过开源音乐模型 YuE 生成歌曲

昨天看到的一个项目:https://github.com/multimodal-art-projection/YuE

简介

在生成音乐,特别是带歌词的歌曲这方面的开源模型要远远落后于比闭源模型的。目前领先的闭源音乐模型是 Suno:https://suno.com/

然而,Suno 不仅闭源,还不提供 API,在很大程度上限制了相关应用的发展。最近开源的音乐生成模型 YuE 获得了相当不错的进展,本文将简单介绍如何在本地运行这个模型。

硬件要求

此模型需要消耗大量显存,且要求使用 Flash Attention 2 来节省显存,即使这样,也需要大量显存。

因此,想要本地运行此模型,需要:

  • Ampere 架构(RTX 30 系)或更新的 NVIDIA GPU(从而能够支持 Flash Attention 2)
  • 显存不少于 20 GB

本文使用单卡 RTX 4090 (24 GB 显存)来部署模型。

AMD GPU 理论上也是支持的,但需要额外的配置。本文不予讨论。

环境配置

推荐使用 Linux 系统来部署模型。本文假设读者已经正确安装了显卡驱动和 CUDA Toolkit。

创建一个新的 conda 环境:

conda create -n yue python=3.12
conda activate yue

在本文撰稿时,torchaudio 尚未支持 Python 3.13,因此我们使用 Python 3.12。

将 YuE 的代码仓库克隆到本地:

git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE

手动安装 PyTorch 和 torchaudio:到 PyTorch官网 选取对应的配置,然后复制下载链接进行下载。torchvision 不是必装的。

pytorch

安装之后再安装 requirements.txt 中的其他依赖:

pip install -r requirements.txt

requirements.txt 中指定了 scipy 的版本为 1.10.1,但此版本不支持 Python 3.12。我尝试去除了版本限制,似乎没有发生什么问题。

然后安装 Flash Attention 2。先配置好编译时需要的环境变量:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

注意这里的 cuda 可能是 cuda-11.8cuda-12.1 等类似的名字,需要到自己的系统中查看一下。

然后执行安装:

pip install flash-attn --no-build-isolation

下载模型

仓库 README 中给定的命令需要下载 3 个模型。YuE 似乎使用了一个两阶段的推理策略,需要先使用一个 7B 的模型完成第一阶段的推理,然后使用再使用一个 1B 的模型完成第二阶段的推理。7B 模型目前有 enzhjp/kr 三种语言可供选择。此外在推理中还需要这个模型

推荐先将模型下载到某个自定义的位置,以免后续推理时自动下载到 ~/.cache 引发不便。这里我的下载路径是 ~/public/ckpts

上一步配置环境时,yue 虚拟环境中已经安装了 huggingface-cli 命令行工具,我们使用此工具来下载模型。为了加速下载,我们使用镜像站 HF-Mirror

先设置环境变量来修改下载使用的网站:

export HF_ENDPOINT=https://hf-mirror.com

然后下载 1B 模型:

huggingface-cli download m-a-p/YuE-s2-1B-general --local-dir YuE-s2-1B-general

注意将 --local-dir 后面的路径改为你自己指定的位置。

不必担心下载中断,因为 huggingface-cli 默认开启断点续传。

然后下载 7B 模型。我们此处下载 en-cot 模型:

huggingface-cli download m-a-p/YuE-s1-7B-anneal-en-cot --local-dir YuE-s1-7B-anneal-en-cot

最后,还需要下载 m-a-p/xcodec_mini_inferYuE/inference/ 中。原仓库的 README 推荐使用 git lfs 的方式进行克隆,但那需要安装额外的 git lfs 组件。我们此处直接使用和上面一样的方法下载即可。

huggingface-cli download m-a-p/xcodec_mini_infer --local-dir ./inference/xcodec_mini_infer

运行

YuE/inference/ 目录中执行以下命令:

python infer.py \
--stage1_model /path/to/YuE-s1-7B-anneal-en-cot \
--stage2_model /path/to/YuE-s2-1B-general \
--genre_txt prompt_examples/genre.txt \
--lyrics_txt prompt_examples/lyrics.txt \
--run_n_segments 2 \
--stage2_batch_size 4 \
--output_dir ./output \
--cuda_idx 0 \
--max_new_tokens 3000

将会生成一段长约 1 分钟的歌曲。生成时间比较长,在单卡 4090 上生成一段 30s 的音频需要大约 6 分钟。

可以修改 prompt_examples/genre.txtprompt_examples/lyrics.txt 来分别控制歌曲的风格以及歌词。

执行完毕后,可以在 ./output 目录中找到对应的 mp3 文件。

posted @   Eslzzyl  阅读(413)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示