10分钟语音训出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
Retrieval-based-Voice-Conversion-WebUI(下称 RVC)是一个基于 VITS 的语音转换框架:用 10 分钟低底噪人声数据就能训出可用的音色模型,自带网页界面、实时变声和命令行推理三条路径。读完本文,你应能完成环境搭建、跑通一次推理,并知道音高、索引率、训练轮数这几个关键参数怎么调。
两个场景,判断它值不值得做
场景一:拿一个人的录音做"AI 歌手"或配音。传统做法要么从零训 TTS 模型(数据量大、周期长),要么直接做声码器推理(效果机械)。RVC 的底模用接近 50 小时的开源 VCTK 数据集训练,你只需要提供目标人物的 10-50 分钟人声,在普通显卡上几小时内得到能用的音色。
场景二:实时变声。RVC 提供了独立的实时界面,文档标称端到端延迟 170ms,配合 ASIO 声卡可压到 90ms,够用于直播和语音通话。
它和早期 VITS 方案的核心差异在音色泄漏问题上:推理时如果输入源的音色"渗"进输出,换出来的声音会带着原说话人的痕迹。RVC 用 top1 检索把输入源特征替换成训练集特征来杜绝这一点,这是它名字的由来,也是调参时 index_rate 存在的意义。
环境准备:四步装完
要求 Python 3.8 以上,显卡显存 4G 起步(训练),推理对硬件要求更低。
第一步,克隆仓库并安装 PyTorch:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI pip install torch torchvision torchaudio第二步,按显卡选依赖文件:N 卡装requirements.txt,A 卡 / I 卡(DirectML)装requirements-dml.txt,Linux 下 A 卡 ROCm 或 I 卡 IPEX 另有对应文件。
第三步,装 ffmpeg(Ubuntu 用sudo apt install ffmpeg,Mac 用 brew,Windows 把 ffmpeg.exe 放到根目录)。这一步别跳过,所有音频切分都依赖它。
第四步,下载预训练资产。仓库tools/目录提供了下载脚本 tools/download_models.py,需要落位的文件包括assets/hubert/hubert_base.pt、assets/pretrained/(v1 底模)、assets/pretrained_v2/(v2 底模,想用 v2 必须额外下)、assets/uvr5_weights/(人声分离),以及 RMVPE 音高提取模型rmvpe.pt。手动下载清单见 README.md 的"其他预模型准备"一节。
第一次跑通:WebUI 与命令行两条路
最短路径是启动 WebUI,然后在网页上完成"切分→提取→训练→推理"全流程:
python infer-web.py启动后浏览器会自动打开 Gradio 界面。第一次建议直接选"一键训练",观察消息窗里打印出的每一步命令行——这些命令就是脱离网页手动跑的依据。
不想开网页的话,tools/infer_cli.py 提供了单文件推理入口,核心参数如下:
python tools/infer_cli.py \ --model_name exp1 \ --input_path input.wav \ --index_path assets/indices/exp1/added_IVF256_Flat_nprobe_2.index \ --f0up_key 2 \ --f0method pm \ --index_rate 0.66 \ --opt_path output.wav它做的事很直接:加载assets/weights/下的模型与索引文件,对输入 wav 做一次变声,结果写到--opt_path。f0up_key是半音偏移(2 即升两度),f0method选音高提取算法,index_rate控制检索混合的强度,默认 0.66。批量处理则用 tools/infer_batch_rvc.py,参数相同,输入换成目录即可。
进阶调参:三个最常见的调优点
问题:输出有哑音、音高断断续续。做法:音高提取算法从默认的 harvest 换成pm(即 RMVPE,Interspeech 2023 的算法)。效果:哑音明显减少,速度比 crepe_full 快、资源占用更小;代价是需先下载 rmvpe.pt(DirectML 环境用 rmvpe.onnx)。
问题:换出来的音色不纯,混着输入源的嗓音(音色泄漏)。做法:调高index_rate,上限为 1。效果:理论上 1 时泄漏消失、音色完全对齐训练集,但如果训练集音质比推理源差,整体音质会被拉低——所以训练集质量差时不要无脑拉满。反过来,训练数据充足且高质量(epoch 拉到 200)时模型自身抗泄漏能力强,index_rate 的重要性下降,索引文件甚至可以不给。
问题:训练完的模型文件几百 MB,没法分享。做法:用 WebUI 的 ckpt 选项卡做"小模型提取"(源码在 infer/lib/train/process_ckpt.py)。效果:得到 60+MB 的推理用 pth,和索引文件打包分享;同页还有 ckpt-merge,可以按比例融合两个模型微调音色。
常见坑:三个高频报错
现象一:ffmpeg error 或 utf8 error。真实原因大概率是音频路径里有空格、括号或中文,而不是 ffmpeg 本身。解法:把素材挪到纯英文短路径下重跑。
现象二:一键训练显示 "Training is done" 但找不到索引文件。两种情况:报错紧跟在成功提示之后时,报错是假的,可以忽略;若确实没有added_开头的 index 文件,通常是训练集太大卡住了索引步骤,再点一次"训练索引"按钮即可。
现象三:把logs/下的训练 pth 直接拿去推理,报 f0、tgt_sr 之类的 key 不存在。原因:那个文件是实验状态存档,不是推理模型。解法:先用 ckpt 选项卡提取小模型,再用assets/weights/下的文件。另外显存不足(out of memory)时,训练侧缩小 batch size,推理侧调小 configs/config.py 末尾的 x_pad、x_query 等参数。
延伸资料
- docs/cn/faq.md:官方 FAQ,epoch 取值、数据时长、index_rate 原理都有依据可循
- docs/cn/Changelog_CN.md:版本更新日志,了解 v2 模型与旧版的差异
- docs/小白简易教程.doc:零基础图文教程
- configs/config.py:设备、半精度、窗口参数等运行时配置
下一步
先把 10 分钟干净人声丢进一键训练跑一遍完整流程,重点观察消息窗打印的每条命令——下次你大概率会想脱离 WebUI 用命令行批量处理,而那时你需要的信息都在训练日志里了。
【免费下载链接】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),仅供参考