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)能把一段待处理音频换成另一个音色,而训出这个音色只需要 10 分钟低底噪录音。代价提前说清:N 卡显存至少4GB(低于 4GB 代码会自动放弃 GPU 退回 CPU),外加约 1 小时环境准备和一段干净录音。本文按"先出声 → 再训练 → 后调优"的路径走一遍,差哪条就回哪节。
动手前:十秒确认地基
先花十秒确认两件事,后面 90% 的环境问题能避开。
python --version # 本分支要求 Python 3.12 x64 ffmpeg -version # 音频解码全靠它判断标准:Python 必须是3.12(这是本分支的硬性要求,不是老教程里的 3.8~3.10),FFmpeg 能打印版本号即可。克隆仓库:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI| 要求项 | 具体值 | 为什么 |
|---|---|---|
| Python | 3.12 x64+ venv 虚拟环境 | 分支按 3.12 锁定依赖版本,混装系统 Python 易冲突 |
| 系统 | Ubuntu24.04x86_64 或 Windows | README 官方推荐组合 |
| 显卡 | N 卡显存≥4GB、SM≥5.3 | configs/config.py 按此规则选卡,不达标自动降级 CPU/DirectML |
| PyTorch | 2.7.1(cu118 / cu128 两套) | 必须与 CUDA 版本匹配;RTX 50 系用 cu128,更早的卡用 cu118 |
| FFmpeg | 任意能跑通的版本 | Windows 用户可把ffmpeg.exe放项目根目录 |
目标 1:先出声,确认整条链路是通的
按显卡挑依赖包,两阶段安装
根目录有三份依赖清单:CPU/AMD/Intel 用requirments_cpu_py312.txt,N 卡按 CUDA 选requirments_cu118_py312.txt或requirments_cu128_py312.txt。N 卡必须先装 Torch 再装清单,顺序反了装不上:
python -m venv .venv && source .venv/bin/activate python -m pip install torch==2.7.1+cu118 torchaudio==2.7.1+cu118 \ --index-url https://download.pytorch.org/whl/cu118 python -m pip install -r requirments_cu118_py312.txt python -c "import torch; print(torch.__version__, torch.cuda.is_available())"最后一条输出True才算过关;False说明 Torch 与 CUDA 没对上,先修这里再谈别的。
补齐预训练权重,缺一个都会罢工
推理和训练都依赖assets/下的底模文件,按 README 的 hf 命令下载即可,最少三组:
hf download lj1995/VoiceConversionWebUI --include "hubert_base/*" --local-dir assets hf download lj1995/VoiceConversionWebUI rmvpe.pt --local-dir assets/rmvpe hf download lj1995/VoiceConversionWebUI --include "pretrained/*" "pretrained_v2/*" --local-dir assets为什么是这几个:hubert_base/负责提取音色的 256 维特征,rmvpe.pt是音高提取模型(效果最好、最省资源),pretrained/与pretrained_v2/是 v1/v2 训练的起点权重。只想推理不想用 UVR5 分离人声的话,uvr5_weights/可以先跳过。
启动 WebUI 并确认端口
python webui.py默认监听7865端口,换端口用--port传参;无桌面环境的服务器加--noautoopen。Windows 双击 go-webui.bat 也行,但它指定的是7897端口,注意别混。判断标准:终端打印"当前设备"一行且浏览器自动打开页面;设备显示cuda:0说明走 GPU。
目标 2:把 10 分钟录音变成音色模型
录音先达到"低底噪"标准
官方 FAQ 给出的口径:总时长10~50 分钟最稳,底噪低、音色统一的话多多益善,精简到 5~10 分钟的高质量素材也有人训成功。两个易踩的细节:
- 音频要放在训练文件夹根目录,子文件夹里的文件不会被读取;
- 采样率训练全程统一,界面默认40k(v1 可选 40k/48k,v2 多一个 32k),中途改采样率等于白训。
一键训练的四个阶段
填好实验名(数据全部落在logs/实验名/下)、训练文件夹路径后点"一键训练",它按固定顺序跑四步:数据切分 → F0 与 HuBERT 特征提取 → 模型训练 → 索引训练。切分逻辑是静默检测 + 约 4 秒一段自动切片,所以长录音不用手切。
| 参数 | 默认值 | 怎么调 | 为什么 |
|---|---|---|---|
| 带音高指导 | 开 | 唱歌必开,纯语音可关 | 关则模型更轻,但无法跟旋律走 |
| 音高提取 | rmvpe | 一般不用动 | 速度最快、占用最小 |
| batch_size | 最小显存 ÷2(如 12GB →6) | 爆显存就往下降,最低1 | 由 webui.py 按显卡显存自动算出 |
| total_epoch | 按数据定 | 低质20~30,高质到200 | 底模带不动低质训练集,拉高只会过拟合 |
| 版本 | v2 | 新手默认 v2 | 底模参数更大、需要数据更少 |
训练配置的底稿在 configs/ 下,比如 configs/v2/48k.json 里learning_rate为1e-4。另外 configs/config.py 末尾的x_pad/x_query/x_center/x_max会按显存自动收缩(6G 以上一组、5G 一组、4G 及以下最保守一组),你不用手动动,知道它存在即可。
提取 60MB 小模型与索引
训练完有两个产物:logs/实验名/下的几百 MB pth 是实验状态,不能直接分享或推理;真正用于推理和分享的是在 ckpt 选项卡里从 G 开头文件提取出的60+MB小模型,会出现在assets/weights/。索引文件added_*.index落在assets/indices/,与模型配套使用。
关键数字:推理时最值钱的三个滑杆
模型选好后,单次推理页有三个滑杆决定听感,默认值分别是:
| 滑杆 | 默认 | 调节逻辑 |
|---|---|---|
| 检索特征占比 index_rate | 0.75 | 越高越杜绝推理源音色"泄露",但音质越贴训练集;训练集音质低于推理源时拉高只会更糊 |
| 保护清辅音 protect | 0.33 | 调低加大保护力度、防电音撕裂,代价是索引效果下降 |
| 音量包络融合 rms_mix_rate | 0.25 | 越靠近1输出越采用输出包络,听感更"稳" |
训练集优质且时长多时,模型本身不怎么会泄露音色,index_rate 反而不关键——优质数据比参数重要。
可选目标 3:游戏里实时变声
离线 WebUI 之外,realtime_gui.py(Windows 下双击 go-realtime_gui.bat)提供端到端170ms延迟的实时变声,换 ASIO 设备可压到90ms。它读取 configs/config.json 里的block_time(默认0.25秒)与静音阈值(默认-60dB)等参数,选好 pth 与 index 文件即可用麦克风实时转换。
跑不通时:症状对照速查
别乱试,按表对号入座:
| 症状 | 先查这个 | 解法 | 优先级 |
|---|---|---|---|
| 连不上 / Connection Error | 黑色控制台窗口被关了吗 | 保持终端存活;端口被占就--port换端口 | 高 |
Expecting value (char 0) | 本地/远端代理 | 关掉系统全局代理和学术加速的 http_proxy 再试 | 中 |
| ffmpeg error / utf8 error | 路径带空格、中文 | 训练集放纯英文无空格路径 | 高 |
llvmlite.dll缺失 | VC++ 运行库 | 装 VC++ 2015-2022 运行库后重启 | 高 |
| Cuda out of memory | 显存 | 训练降 batch_size 到 1;推理收缩 config.py 末尾 x_* | 高 |
| tensor size 不匹配 | 1_16k_wavs里有异常小的音频 | 删掉那几个小文件,重跑"训练模型 + 训练索引" | 中 |
| 推理页看不到新音色 | 没刷新 / 用了 logs 大 pth | 点"刷新音色",并用 ckpt 选项卡提取小模型 | 高 |
误区对照:五个容易翻车的地方
- ❌ 数据越多越好 / ✅ 精选 10~50 分钟低底噪音频,胜在质量;1 分钟以下基本不可复现
- ❌ 轮数拉满更稳 / ✅ 低质 20~30 轮就够,高质才值得往 200 走
- ❌ 把 logs 下几百 MB 的 pth 发给别人 / ✅ 分享
assets/weights/的 60+MB pth 配 index - ❌ 中途改采样率继续训 / ✅ 换新实验名从头训,可拷贝旧特征加速
- ❌ 拿系统 Python 直接装 / ✅ venv 隔离,依赖清单一次装全
完整走查:从录音到出声的剧本
假设条件:15 分钟清嗓录音、12GB 显存的 N 卡、Ubuntu 24.04。
| 阶段 | 动作 | 预估耗时 |
|---|---|---|
| 数据 | 剪掉静音与底噪,文件平铺进一个英文路径文件夹 | ~30 分钟 |
| 环境 | 克隆仓库、venv、两阶段装依赖、下 assets 权重 | ~1 小时 |
| 训练 | v2 / 40k / 带音高,batch_size6,epoch100起 | 数小时 |
| 验收 | 提取小模型、训练索引、推理试听 | ~30 分钟 |
"跑通"的三条判定标准,差哪条回哪节:
assets/weights/下新增 60+MB 的.pth—— 没有就回"提取小模型"一节;assets/indices/下有对应added_*.index—— 没有就重新点一次"训练索引";- 推理页刷新音色后选中新模型,出声且音色对得上 —— 听感不对就回"三个滑杆"一节调 index_rate 与 protect。
资源去向
- 官方文档与 FAQ:docs/,中文 docs/cn/faq.md、训练技巧 docs/en/training_tips_en.md
- 推理核心:infer/vc/(pipeline 与检索逻辑都在里面)
- 训练核心:train/(预处理、F0/特征提取、训练与索引)
- 配置入口:configs/(采样率配置与显存自适应规则)
- 社区:项目 Issue 与 Wiki 是报错求助的第一站,报错时把
logs/实验名/下的日志一起带上
【免费下载链接】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),仅供参考