RVC 语音转换教程:10 分钟数据训练出你的 AI 变声模型
【免费下载链接】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 的开源 AI 语音转换框架:用不超过 10 分钟的语音数据,就能在网页界面里训练出一个音色相似度很高的变声模型,支持实时变声、批量推理和人声伴奏分离。本文按"从装到用"的顺序带你完整走一遍。
一、为什么你的第一个变声项目可以是 RVC
做过语音合成的同学大概率被这几个问题劝退过:训练要几个小时、显存要 12G 起步、训练集得准备几十个小时、调参数像玄学。RVC 把这条门槛压到了很低:
- 数据量小:官方推荐 10 分钟低底噪语音起步,最高 50 分钟,5 分钟以内的高质量数据也有人练出可用结果
- 显卡要求低:4G 显存的老卡可以训练,2G 以下建议放弃
- 首次出结果快:装完依赖、下载好底模,第一次推理用别人分享的模型就能立刻听到转换效果,不用先训练
它适合的人:想做 AI 翻唱但没显卡的、想给自己的游戏/直播加实时变声的、以及想低成本体验声音克隆的普通用户。界面全中文(也有英日韩法等多语言),点按钮为主,基本不碰代码。
二、五分钟跑起来:安装与首次运行
一键安装步骤
先确认 Python 版本大于 3.8,然后:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI pip install torch torchvision torchaudio pip install -r requirements.txtN 卡用requirements.txt;A 卡或 I 卡(DirectML)改用requirements-dml.txt;Linux 下的 A 卡 ROCm 环境用requirements-amd.txt。Windows 的 RTX 30 系用户如遇 CUDA 报错,可指定--index-url https://download.pytorch.org/whl/cu117重装 PyTorch。
还差两件事:
- 预训练底模:把
hubert_base.pt、assets/pretrained、assets/uvr5_weights等文件按 README 中的清单放进assets/对应目录,tools/文件夹里有现成的下载脚本(download_models.py)可以直接跑 - ffmpeg:Ubuntu 用
sudo apt install ffmpeg,macOS 用brew install ffmpeg,Windows 把 ffmpeg.exe / ffprobe.exe 放到项目根目录
启动界面,拿到第一个结果
python infer-web.py浏览器会自动打开 Gradio 界面,共六个标签页:模型推理、伴奏人声分离、训练、ckpt 处理、Onnx 导出、常见问题。第一次别急着训练,先去"模型推理"页选一个现成的.pth音色,上传一段 wav,点推理——听到转换结果的那一刻,你就知道后面训练要干什么了。Windows 整合包用户直接双击go-web.bat即可,省掉前面的 pip 步骤。
三、它背后怎么工作:检索式特征替换
RVC 的架构分三层,核心代码都在 infer/ 下,这里讲清原理就够了,不用逐行看。
第一层:音高提取。输入音频先过一个人声音高提取模型,默认用 RMVPE 算法(来自 Interspeech 2023 的 RMVPE 论文),比常用的 CREPE 更快、显存占用更小,而且能显著减少"哑音"(该有音的地方发不出声)。备选还有 harvest、dio、pm 等算法,推理时可按源音频质量切换。
第二层:特征提取与检索替换。音频经 HuBERT 模型转成特征向量,然后用 FAISS 在训练集特征索引里做 top-k 检索(k=8),把输入特征按距离权重混合成"训练集风格"的特征——这一步叫检索式特征替换,是 RVC 名字里"Retrieval-based"的由来。作用是从根源上杜绝音色泄漏:你唱得再像原唱,输出音色也会被拉回训练集音色,而不是跑偏到你的声音。
第三层:声学合成。替换后的特征送进基于 VITS 的声码器,结合音高曲线生成最终波形。
对应的关键文件:推理引擎在 infer/lib/(rtrvc.py负责 FAISS 检索与特征处理),合成管线在 infer/modules/vc/(pipeline.py把音高、特征、检索、合成串起来),训练流程在 infer/modules/train/。想深入原理,看这三个目录比通读 README 高效。
四、调出好效果:数据准备与关键参数
训练数据怎么备
- 时长:10–50 分钟。音质差、底噪大的数据 20–30 轮(total_epoch)就够;高质量长数据可以拉到 200 轮
- 质量 > 数量:低底噪、人声清晰的干声最好;先用人声分离功能把歌曲拆出干声
- 切分:单条音频别太长,训练时内存报错多半是切片过长或 CPU 进程开太多
- 数据放好后在"训练"标签页点一键训练,会自动走"切分→提取特征→提取音高→训练模型→训练索引"全流程
三个决定音色的参数
| 参数 | 作用 | 建议 |
|---|---|---|
| total_epoch | 训练轮数 | 音质差 20–30,音质好可 200 |
| index_rate(索引率) | 检索替换强度,1 = 完全用训练集特征 | 默认 0.5–1;音色泄漏严重时调高 |
| pitch(变调) | 输出音调升降,半音为单位 | 男转女 +4~+12 常见,按试听调 |
关于 index_rate 有个常见误区:它调高会削减音色泄漏(输出往推理源/底模音色跑的现象),但代价是音质趋向训练集水平——如果训练集音质本来就低于你的推理源音频,盲目调高反而更糊。训练集足够优质且时长充足时,这个参数影响很小,甚至可以不带索引文件分享模型。
五、玩法拓展:从模型融合到实时变声
WebUI 之外,RVC 还有几个进阶方向:
- ckpt-merge 模型融合:在"ckpt 处理"标签页把两个音色模型按比例混合,能调出介于两人之间的新音色,翻唱圈常用的"调音"手段
- 实时变声:双击
go-realtime-gui.bat(Windows)可开实时界面,端到端延迟约 170ms;接 ASIO 声卡能压到 90ms 左右,直播、游戏、K 歌都能用 - 批量推理:推理页有"批量推理"子页,丢一个文件夹进去整批转换,适合做整张专辑的翻唱
- 命令行推理:不想开界面可以用 tools/infer_cli.py,参数顺序是
变调 输入音频 索引 音高算法 输出音频 模型 索引率 设备 半精度 - Onnx 导出:模型推理页旁的"Onnx 导出"标签页可以把 pth 模型转成 onnx,配合 infer/lib/onnx_inference.py 在无 GPU 的环境跑
六、卡住了看这里:常见问题速查
docs/cn/faq.md 是官方 FAQ,下面挑几个最高频的:
- 报 ffmpeg error / utf8 error:多半是路径问题。音频路径含空格、括号会触发 ffmpeg error;训练集文件名带中文会触发 utf8 error,把路径改成纯英文数字最稳
- 显存爆(out of memory):训练就降 batch size,推理就调小
configs/config.py末尾的x_pad、x_query、x_center、x_max;4G 以下显存基本没救 - 训练完了没看到新音色:点"刷新音色"再看一次;还没有就去看
logs/实验名/下的训练日志 - 想分享模型:分享
weights/下 60MB 以上的小 pth + 对应added_xxx.index,不要分享logs/里几百 MB 的实验 pth——那是续训用的,直接拿去推理会报 key 不存在的错 - WebUI 连接不上(Connection Error):控制台黑窗口被关了;报 "Expecting value: line 1 column 1" 则是局域网代理在捣乱,关掉全局代理重试
- 一键训练后没有索引文件:训练集太大导致加索引卡住,回到界面再点一次"训练索引"即可
更详细的排障可以看 docs/cn/ 下的中文 FAQ 和更新日志。
写在最后
从装依赖到听到第一段转换结果,顺利的话半小时以内;一段 10 分钟的干净人声,训练半小时左右就能出可用音色。如果第一次没调出理想效果,先回到数据和 total_epoch 这两个变量上排查,比盲调其他参数有效得多。
【免费下载链接】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),仅供参考