RVC 变声框架上手指南:用 10 分钟语音数据训练你自己的变声模型
【免费下载链接】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 的开源变声(Voice Conversion)框架:你只需准备约 10 分钟的语音样本,就能在普通显卡上训练出一个音色转换模型,把任意音频"变成"目标音色说话,并支持端到端 170ms 延迟的实时变声。
先看懂它的 5 个核心价值
- top1 检索防音色泄漏:推理时从训练集检索最接近的特征替换源特征,输出音色稳定不跑偏
- 训练门槛低:入门级显卡即可训练,官方 FAQ 明确 4GB 显存"还有救"
- 数据量小:推荐 10~50 分钟低底噪语音,高质量数据 5~10 分钟也能出可用结果
- 模型可融合:ckpt-merge 功能可以把多个模型权重按比例混合,微调音色
- 全平台支持:NVIDIA CUDA、AMD ROCm/DirectML、Intel IPEX 三条路线都能跑
环境门槛:装之前先看你的机器
软件与硬件要求
- Python 3.8+(若走 Poetry 路线建议 3.7~3.10,新版会与
llvmlite==0.39.0冲突) - 系统已安装 ffmpeg / ffprobe(Ubuntu 用
sudo apt install ffmpeg,macOS 用brew install ffmpeg,Windows 把 ffmpeg.exe 和 ffprobe.exe 放到项目根目录) - 显存参考:训练 4GB 起步(3GB 的 1060 及更低建议放弃);推理对显存要求更低
- 内存:训练和预处理会开多进程,内存紧张时先调低"提取音高和处理数据使用的 CPU 进程数"
最佳配置建议:8GB 以上显存的 N 卡 + fp16 半精度,可同时跑训练和实时推理,且能开最大检索缓存(见后文调优)。
三种显卡的安装步骤
先获取代码:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI然后按你的显卡选一条路线安装(先装 PyTorch 本体,已装可跳过):
NVIDIA 卡(推荐路线)
pip install torch torchvision torchaudio pip install -r requirements.txtWindows + Ampere 架构(RTX 30 系)建议指定 CUDA 11.7 的 wheel:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117AMD 卡
pip install -r requirements-dml.txtAMD 卡想走 ROCm(仅 Linux)则改用requirements-amd.txt,并按官方文档安装 ROCm 驱动。
Intel 卡(仅 Linux + IPEX)
pip install -r requirements-ipex.txt source /opt/intel/oneapi/setvars.sh下载预训练模型:RVC 运行还需要一批预模型(Hubert 特征提取器、VITS 底模、UVR5 人声分离权重等),清单如下,项目内tools/目录提供了download_models.py、dlmodels.sh等下载脚本,官方仓库也发布了RVC-beta.7z整合包可一步到位:
assets/hubert/hubert_base.ptassets/pretrained/(v2 模型还需assets/pretrained_v2/)assets/uvr5_weights/- RMVPE 音高提取参数
rmvpe.pt(放根目录;A/I 卡 DML 环境用rmvpe.onnx)
第一次跑通:从零到第一段转换音频
整体流程是:备料 → 一键训练 → 模型推理,全部在 WebUI 里点按钮完成。
第 1 步:启动 WebUI
python infer-web.pyWindows 整合包用户双击go-web.bat即可;macOS 可用sh ./run.sh。启动后浏览器自动打开界面(默认端口 7865,可用--port修改,--noautoopen可禁止自动打开)。界面包含数据处理/训练、模型推理、语音分离(UVR5)、ckpt 处理等选项卡。
第 2 步:准备训练集
收集 10~50 分钟低底噪、音色统一的语音,切成若干段放进一个文件夹。质量比数量重要:底噪大的数据,训练集再好也"带不高"音质。
第 3 步:一键训练
在训练选项卡填入训练集文件夹路径和实验名,执行一键训练。流程会自动串联:切片 → 提取音高(F0)→ 提取特征(Hubert)→ 训练 VITS 模型 → 训练检索索引。结束后你会得到两类产物:
logs/实验名/下的 checkpoint(G/D 文件,用于续训,几百 MB,不要拿它分享)weights/实验名.pth(约 60MB+,用于推理和分享的模型)logs/实验名/added_*.index(检索索引文件,推理时与 pth 配合使用)
epoch 建议:音质一般的训练集 20~30 轮足够;高音质、时长足的可拉到 200 轮。
第 4 步:推理出第一段音频
到模型推理选项卡刷新音色,选择刚训练的模型和对应 index,上传一段待转换音频,点转换。两个关键参数先记住:
- f0 移调(半音):不改变调就填 0
- index_rate:0~1 之间,控制音色向训练集靠拢的程度(原理见下一节)
听到输出,你就跑通了全流程。
目录结构导读:每个文件夹管什么
Retrieval-based-Voice-Conversion-WebUI/ ├── infer-web.py # WebUI 入口,组装各选项卡 ├── infer/ │ ├── modules/vc/ # 变声主逻辑(pipeline、模型加载、批量推理) │ ├── modules/train/ # 切片、F0 提取、特征提取、训练脚本 │ ├── modules/uvr5/ # 人声/伴奏分离 │ ├── lib/infer_pack/ # 推理模型定义、注意力、F0 预测器 │ └── lib/jit/ # JIT 加速的 Hubert/RMVPE/合成器封装 ├── configs/ # v1/v2 各采样率训练配置 + inuse/ 运行副本 ├── assets/ # 预训练权重、Hubert、UVR5 权重、训练产物 weights/ ├── tools/ # 批量推理、导出 ONNX、实时 GUI、模型下载脚本 ├── i18n/locale/ # 13 种语言的界面翻译 └── docs/ # 中英法日韩葡土 7 种语言文档与 FAQ两个值得知道的细节:
- configs/ 启动时会自动把
v1/、v2/配置复制到configs/inuse/,改参数要改 inuse 下的副本,否则下次启动被覆盖。v1 支持 32k/40k/48k 三档采样率,v2 支持 32k/48k。 - infer/modules/vc/pipeline.py 是推理主线的核心:音高提取、特征检索、模型合成三步都在这里串起来。
工作原理拆解:RVC 到底怎么"变声"
用大白话走一遍推理链路(训练同理):
- 音高提取(F0):从你的输入音频里逐帧提取基频曲线——就是"你说话时声音的高低"。可选 RMVPE(默认,速度最快、效果最好,InterSpeech 2023 算法)、Harvest、PM 等方法。
- 特征提取:用预训练的 HuBERT 模型把音频转成一串声学特征向量,描述"这段话说了什么内容"。
- top1 检索:拿源特征去训练集特征库(就是那个 .index 文件,用 FAISS 建的向量索引)里找最接近的一条,替换掉源特征——这一步是防"音色泄漏"的关键:如果只做第 2 步,输出的音色会被推理源和底模带偏,检索替换后音色锚定在训练集上。
- 模型合成:VITS 模型吃进"音高曲线 + 检索后的特征 + 目标说话人编号",直接生成波形。VITS 是自回归+声码器一体的架构,一次前向出音频,所以推理快。
- 细节修正:可选 RMS 响度混合、低通滤波(filter_radius)等后处理,让输出更自然。
训练侧则是:切片 → 提取 F0 与特征 → VITS 的判别器+生成器对抗训练(c_mel=45, c_kl=1.0的 mel 与 KL 损失,见 configs/v1/48k.json)→ 最后用训练集特征批量构建 FAISS 索引。
调参手册:显存、epoch 与 index_rate
按显存调推理缓存(configs/config.py 末尾的四个变量,代码会自动按显存档位设置,可手动覆盖):
| 档位 | x_pad | x_query | x_center | x_max |
|---|---|---|---|---|
| 6GB+(fp16) | 3 | 10 | 60 | 65 |
| 5GB(fp32) | 1 | 6 | 38 | 41 |
| 4GB | 1 | 5 | 30 | 32 |
旧卡(1060/1080/P40 等)会自动强制 fp32 并写入use_fp32_config,无需手动处理。
按数据质量调 epoch:底噪大的训练集 20~30 轮封顶,调再高底模也救不回来;高音质+时长足的数据可以给到 200 轮。
按需求调 index_rate:调高(趋近 1)→ 音色更贴训练集但音质上限被训练集锁死;调低(趋近 0)→ 音质可被高质量推理源拉高,但音色开始往推理源/底模漂。训练集本身优质且时长多时,index_rate 基本不重要。
其他常用开关:
resample_sr:推理时重采样,可进一步提亮音质protect:保护低频能量,减少破音- 多卡推理:
config.py里device = "cuda:N"选卡号,卡号映射在训练选项卡的显卡信息栏可见
排障手册:报错速查
| 现象 | 原因 | 解法 |
|---|---|---|
| ffmpeg error / utf8 error | 路径含空格、括号或中文 | 把训练集移到纯英文无特殊字符的路径 |
| 一键训练完成但没有 added 开头的索引 | 训练集太大,索引步骤卡死 | 再点一次"训练索引",或分批添加 |
| 训练完推理刷不到新音色 | 缓存未刷新 | 点刷新音色;仍没有则看logs/实验名下的日志找训练报错 |
| Cuda out of memory | 显存不足 | 训练时调小 batch size(降到 1 还不够就换卡);推理时调小 x_pad/x_query/x_center/x_max |
| Connection Error | 你关掉了黑色控制台窗口 | 保持终端开着运行 |
Expecting value: line 1 column 1 | 局域网/全局代理拦截了 localhost 请求 | 关掉系统代理;AutoDL 等环境的 http_proxy 也要 unset |
Could not load llvmlite.dll | Windows 缺 VC++ 运行库 | 安装 Visual C++ Redistributable (x64) 后重启 WebUI |
expanded size of the tensor (17280) must match (0) | 训练集里有异常小的音频文件 | 进 wavs16k 文件夹找出明显偏小的文件删掉,重新训练(需补点"训练索引") |
size of tensor a (24) must match b (16) | 中途改了采样率续训 | 换实验名从头训练(可拷贝 0/1/2/2b 文件夹加速) |
| 想中断/继续训练 | 只能重启进程 | 关控制台重新启动 WebUI,相同参数再点训练即从 checkpoint 续训 |
另外提醒:想分享模型,打包weights/实验名.pth+added_*.index,不要把logs/下几百 MB 的 checkpoint 直接拿去推理(会报 f0、tgt_sr 等 key 不存在的错);需要时可用 ckpt 选项卡做"小模型提取"。
落地场景:它适合做什么
- 实时变声:
go-realtime-gui.bat启动实时 GUI,端到端延迟 170ms,配 ASIO 声卡可压到约 90ms,适合游戏、直播、语音房 - 歌曲翻唱/有声内容:批量推理(vc_multi)一次转完整张专辑,配合 UVR5 先做人声伴奏分离,转完再合回伴奏
- 配音与角色音:用少量角色语音样本训练定制音色,批量替换配音稿
- 数据与科研:tools/infer_cli.py、tools/infer_batch_rvc.py 支持脚本化批量转换,tools/export_onnx.py 可导出 ONNX 部署到边缘设备
文档与社区:遇到问题去哪问
- 多语言文档齐全:docs/ 下有中文、英文、日文、韩文、法文、葡文、土文 7 个版本的 README、FAQ、训练技巧(training_tips)与 FAISS 索引说明,界面本身也随系统语言自动切换(i18n/locale/ 含 13 种语言)
- 版本节奏:跟随 docs/cn/Changelog_CN.md 查看每次更新;官方在 README 中预告了参数更大的 RVCv3 底模
- 反馈渠道:项目的 issue 跟踪、Discord 开发者社区(见 README 徽章)是主要反馈入口;训练/推理报错可截取控制台与 WebUI 画面一并提交
写在最后
RVC 把"训练一个可用变声模型"的门槛压到了 10 分钟录音 + 一次一键训练,音质、延迟和跨平台支持都给出了明确的工程答案。如果你手边有一段干净的人声样本,现在就可以把它放进训练集文件夹,跑通你的第一段转换音频。
【免费下载链接】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),仅供参考