通过开源音乐模型 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 不是必装的。
安装之后再安装 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.8
、cuda-12.1
等类似的名字,需要到自己的系统中查看一下。
然后执行安装:
pip install flash-attn --no-build-isolation
下载模型
仓库 README 中给定的命令需要下载 3 个模型。YuE 似乎使用了一个两阶段的推理策略,需要先使用一个 7B 的模型完成第一阶段的推理,然后使用再使用一个 1B 的模型完成第二阶段的推理。7B 模型目前有 en、zh、jp/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_infer 到 YuE/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.txt
和 prompt_examples/lyrics.txt
来分别控制歌曲的风格以及歌词。
执行完毕后,可以在 ./output
目录中找到对应的 mp3 文件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix