RVC 人声分离怎么做:UVR5 从环境搭建到批量输出的完整指南
【免费下载链接】Retrieval-based-Voice-Conversion-WebUIEasily train a good VC model with voice data <= 10 mins!项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI
Retrieval-based-Voice-Conversion-WebUI(下称 RVC)内置了一套基于 UVR5 的人声分离模块,能把混音里的人声和伴奏拆成两份独立音频,为翻唱训练、去混响修复、素材提取等场景提供干净的声音素材。本文按"先跑通、再理解、后调优"的顺序,带你从零完成第一次分离。
1. 快速上手:从克隆仓库到第一次分离
结论:整个上手链路只有四步——装依赖、放权重、启动 WebUI、在界面上点一次分离。以下按最小必要步骤展开。
1.1 获取代码与安装依赖
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI进入目录后,根据显卡选择对应的依赖清单安装(Python 需 3.8 以上):
pip install -r requirements.txt # NVIDIA 显卡 pip install -r requirements-amd.txt # AMD 显卡(Linux/ROCm) pip install -r requirements-dml.txt # AMD/Intel 显卡(DirectML) pip install -r requirements-ipex.txt # Intel 显卡(Linux/IPEX)另外确认系统已安装ffmpeg与ffprobe(macOS 可用brew install ffmpeg,Ubuntu/Debian 用apt install ffmpeg)。分离流程在输入格式不标准时会依赖 ffmpeg 做自动转码。
1.2 准备 UVR5 权重文件
模型文件统一放在 assets/uvr5_weights/ 目录,文件名即界面里可选择的模型名。仓库自带了一份下载脚本 tools/dlmodels.sh,其中列出的 UVR5 权重清单为:
| 模型文件 | 定位 |
|---|---|
HP2_all_vocals.pth | 通用人声提取 |
HP3_all_vocals.pth | 带高频端处理的人声提取(HP3 系列) |
HP5_only_main_vocal.pth | 只提取主唱人声,适合多声部歌曲 |
VR-DeEchoNormal.pth/VR-DeEchoAggressive.pth | 常规 / 激进去回声去混响 |
VR-DeEchoDeReverb.pth | 混响压制偏重的版本 |
onnx_dereverb_By_FoxJoy/vocals.onnx | ONNX 格式去混响模型 |
先下载一两个常用的(例如HP2_all_vocals+VR-DeEchoNormal)即可跑通,其余按需补齐。
1.3 启动 WebUI 并执行首次分离
在项目根目录执行:
python infer-web.py启动后浏览器会自动打开界面,设备(CUDA / Metal / CPU)由 configs/config.py 自动探测,无需手动配置。进入 UVR5 分离选项卡,完成四件事:
- 选择模型名(对应权重文件名);
- 指定输入目录(放歌曲或人声混音);
- 分别指定人声输出目录与伴奏输出目录;
- 设置聚合度(agg)与输出格式,点击开始。
处理完成后,两个输出目录里会按原文件名得到分离后的人声与伴奏文件。
2. 核心能力拆解
分离功能的全部入口在 infer/modules/uvr5/,共三个文件:统一调度、频谱分离、去混响专用网络。理解以下三个能力点,就覆盖了日常使用场景。
2.1 多模型人声/伴奏分离
调度逻辑见 infer/modules/uvr5/modules.py:按模型名路由到不同的分离网络,人声/伴奏两个结果分别写入你指定的目录。选型的判断依据很简单——多声部歌曲选"only_main_vocal"类模型,普通二合一歌曲选通用 vocals 模型。
2.2 去回声与去混响(DeEcho 系列)
VR-DeEcho*系列模型名中含 "DeEcho" 字样时会走 infer/modules/uvr5/vr.py 中专门的去回声预处理分支,比普通分离多一层混响压制。录制环境不好的 demo、翻唱原曲想拿干净人声时,这类模型比普通 vocals 模型更合适。另有一个 ONNX 去混响模型由 infer/modules/uvr5/mdxnet.py 中的MDXNetDereverb网络承载。
2.3 输入自动转码与整目录批处理
modules.py会先用 ffprobe 检查输入:若不是 44100Hz 立体声,自动经 ffmpeg 转码为 44.1kHz 立体声 WAV 再进模型;单声道输入会被自动复制成双声道。输入目录里可以放多个文件,程序逐个处理并打印"文件名->Success"的进度,天然支持批量。
3. 实战工作流:从一首歌到可用的翻唱训练数据
这是 RVC 里 UVR5 最常见的用途:用 UVR5 从原曲中提取人声,再把这些人声作为训练数据去训练自己的音色模型。完整链路如下:
- 准备素材:挑 3~5 首目标歌手底噪低、混响少的歌,放入一个目录(如
my_songs/)。 - 批量分离:WebUI 的 UVR5 分离选项卡中,输入目录选
my_songs/,模型先用HP2_all_vocals跑一遍;若人声带明显"水声"残留,换VR-DeEchoNormal重跑,输出到vocals/。 - 人工筛选:听一遍输出,保留分离干净的片段。多声部歌曲建议改用
HP5_only_main_vocal再提取一次,只留主唱。 - 喂给训练流程:把筛选后的干净人声集中到一个目录,在训练选项卡中作为训练数据输入(官方建议至少 10 分钟低底噪语音),进入"预处理 → 训练 → 推理"的常规流程。
第二个轻量场景是去混响修复:录制的 demo 房间回声重时,用VR-DeEchoAggressive跑一遍,输出目录得到压过混响的人声,可直接用于后期处理。激进版压制更强但会损失部分自然度,建议 Normal 与 Aggressive 各跑一份对比再定稿。
4. 排错与调优
4.1 常见问题排查
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 界面模型下拉列表为空 | assets/uvr5_weights/下没有.pth文件 | 按 1.2 清单补齐权重,文件名需与清单一致 |
| 某文件处理失败或无输出 | 输入格式异常,自动转码依赖 ffmpeg | 确认ffmpeg/ffprobe已安装且在 PATH 中 |
| 处理明显偏慢 | 跑在 CPU 上,或聚合度设得过高 | 确认已装好 CUDA 依赖;调小 agg |
| 分离边缘有水声、残留感 | 模型与素材不匹配 | 换 DeEcho 系列或 HP3/HP5 对比试听 |
| 显存吃紧、批处理中断 | 单次处理音频过长 | 把长音频切成数分钟一段再分目录处理 |
4.2 性能与质量优化要点
- 设备与精度:
config.py的device_config()会自动处理大部分情况——老款显卡(如 GTX 10 系)会被强制降级为 fp32 并覆写configs/inuse/下配置,这是正常行为,不用手动改。 - 聚合度(agg):控制分块之间的重叠平滑程度。值越大边缘越干净但耗时越长;先用中等值起步,对拼接痕迹明显的文件再单独调大重跑。
- 输入规格:44100Hz 立体声文件会跳过转码直接进模型,是效率最高的输入形式;手头的 MP3 直接丢进去也可以,代价是多一步转码时间。
- 输出格式:界面上可选输出格式,翻唱训练、二次处理选无损格式(如 flac/wav),试听对比选压缩格式即可,不影响分离质量。
- 批处理习惯:把同批文件放同一个目录一次跑完;程序处理结束后会自动执行
torch.cuda.empty_cache()释放显存,连续跑多批无需手动干预。
5. 延伸探索
- docs/cn/faq.md:中文常见问题,分离、训练相关报错先来这里查。
- docs/cn/Changelog_CN.md:更新日志,了解各版本新增的分离能力与修复项。
- infer/lib/uvr5_pack/lib_v5/modelparams/:UVR5 的分频段参数配置(
4band_v2.json等),想理解"为什么分离要分 4 个频段"可以看这里。 - tools/:模型下载、批量推理等辅助脚本,
infer_cli.py适合不想开界面时走命令行。
可以立即执行的三步:
- 按 1.2 清单下载
HP2_all_vocals与VR-DeEchoNormal两个权重到 assets/uvr5_weights/,跑通第一次分离; - 用同一首歌对比这两个模型的输出,建立对"分离强度"的听觉判断;
- 挑出一段 30 秒左右的干净人声,接入训练选项卡走一遍完整流程,把 UVR5 和 RVC 训练串成自己的固定工作流。
【免费下载链接】Retrieval-based-Voice-Conversion-WebUIEasily train a good VC model with voice data <= 10 mins!项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考