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
先给你看个结果
一段不到 10 分钟的干声,喂给 RVC(Retrieval-based-Voice-Conversion-WebUI,一个基于 VITS 的开源 AI 变声与音色克隆框架),就能得到一个可以直接上实时推理的音色模型。不用棚录、不用小时级数据集,装好环境、拉下预训练权重、跑一次infer-web.py,整条链路就可以走通。这篇文章带你完成"装环境 → 拉模型 → 跑通推理"的最小路径,再把背后的原理和可调参数的杠杆讲清楚。
能力清单:RVC 能替你做哪些事
| 能力 | 你实际得到的东西 |
|---|---|
| 音色克隆 | 10 分钟以内语料即可训出目标音色,保留韵律与情感表达 |
| 实时变声 | 端到端约 170ms 延迟;换用 ASIO 声卡可压到 90ms 左右 |
| 批量转换 | 命令行一次性处理整目录音频,适合离线生产 |
| 人声分离 | 内置 UVR5 模型,从伴奏里拆出干声,作为训练料 |
| 多语言界面 | i18n 语言包覆盖中、英、日、韩等 12 种语言 |
| ONNX 部署 | 模型可导出为 onnx,脱离 PyTorch 运行时 |
| 检索式音色控制 | 索引文件 + 检索混合度,在"相似度"和"自然度"之间找平衡 |
一句话:克隆、实时、批量、部署四件事它都覆盖,且全部开源免费。
上手三连:装环境、拉模型、跑第一次推理
装环境
NVIDIA 显卡(主线方案):
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.txtAMD / Intel 核显(DirectML 路线):
pip install -r requirements-dml.txtmacOS:仓库自带脚本会自动建虚拟环境、装依赖并拉模型:
sh ./run.sh拉模型
RVC 依赖一批预训练权重(hubert 特征提取器、rmvpe 基频提取器、各采样率的 v1/v2 底模、UVR5 人声分离模型)。不用手动找文件,一条命令下到正确目录:
python tools/download_models.py逻辑见 tools/download_models.py,它会把 32k/40k/48k 三档采样率的 G/D 权重分别放进assets/pretrained和assets/pretrained_v2。
跑通第一次推理
Web 界面是最短路径,启动后浏览器访问http://localhost:7865:
python infer-web.py在界面里选一个底模、选一条音频、指定 F0 提取算法(默认 harvest),点推理即可出结果。纯命令行用户可以直接用 tools/infer_cli.py,参数有输入路径、模型名、F0 方法、检索混合度等。
它是怎么做到的
RVC 的生成端是 VITS 架构:输入语音先过内容编码器,再结合基频(F0)信息,由合成网络生成波形。整个管线是:
源音频 → 特征提取(hubert)→ 检索匹配(top1)→ F0 提取(rmvpe/harvest)→ VITS 合成 → 输出关键在第二步的top1 检索:训练时会为训练集构建声学特征索引;推理时,源音频对应的每一段特征都会去索引里检索,并用最接近的那一条(top1)替换掉原始特征,再交给 VITS 合成。因为输入模型的特征已经被"洗"成训练集里的内容,源说话人的音色痕迹在入口处就被切断了——这就是它叫"检索式"变声的原因,也是音色泄漏少的主要来源。
训练侧同样受益:模型只见过目标音色的特征分布,学习压力小,所以 10 分钟量级的数据就够用。
把效果调好的几个杠杆
想让音色更像本人 → 把数据做干净
- 时长凑够 10 分钟,尽量同一设备、同一录音环境录;
- 覆盖不同语速、音调、情绪,避免清一色平淡叙述;
- 混响、底噪、背景人声是头号杀手,必要时先过一遍 UVR5 分离再切段。
想让音质和训练速度平衡 → 动训练参数
训练超参数集中在 configs/config.py,配套的采样率档位配置在 configs/ 下(v1/v2 各有 32k、40k、48k 的 json)。常见做法:显存紧张就降 batch size;想要更干净的高频就上 48k 底模;训练轮数不必一次拉满,先跑几十轮听一版再决定加不加。
想微调"像不像 vs 自然度" → 用检索混合度
推理时的index_rate控制检索特征的混入比例:调高更贴目标音色但可能发闷,调低更自然但音色漂移。索引本身可以用 tools/infer/train-index.py(v1)或 tools/infer/train-index-v2.py(v2)重新训练,把不同来源的特征融合进同一个索引,做出混合音色。
想让实时更跟手 → 换声卡接口
默认走系统音频,端到端约 170ms;Windows 上换 ASIO 设备能压到 90ms 量级。实时入口在 go-realtime-gui.bat(DirectML 用户用go-realtime-gui-dml.bat),底层是 gui_v1.py。
想让训练料更纯 → 人声分离前置
tools/ 下的应用与 infer/modules/uvr5/ 里的 UVR5 模块配合,可以先把原曲拆成人声 + 伴奏,拿干声去做切片和训练。
绕不开的坑
坑一:训练特别慢,显卡吃不满。现象是利用率忽高忽低。先自查 CUDA / cuDNN 与 PyTorch 版本是否匹配;仍不行就把 batch size 调小,或打开混合精度(配置里is_half)。仓库还带了 tools/torchgate/ 用于在不同后端间切换,可用来验证是框架层还是数据层的问题。
坑二:出来的声音发闷、有电音。多半是数据问题而非模型问题。自查顺序:听训练集里最差的一段 → 确认有无声纹残留(底噪、混响)→ 换一个底模或 F0 提取算法(harvest / rmvpe)再跑一版。
坑三:显存爆掉。现象是 OOM 后进程被杀。处理:降 batch size、用 32k 档采样率(显存占用低于 48k)、必要时上梯度累积。数据切片别切太长,3~8 秒一段比较稳。
把能力接进你自己的项目
RVC 不只是个 Web 工具,它留了三个"出口":
- ONNX 部署:tools/export_onnx.py 把训好的模型导出为 onnx(fp32,输入 phone/pitch/ds 等张量),tools/onnx_inference_demo.py 展示脱离 PyTorch 的推理写法,模型结构见 infer/lib/infer_pack/models_onnx.py。适合嵌进 C++ 客户端或移动端。
- 批量推理 CLI:tools/infer_cli.py 和 tools/infer_batch_rvc.py 支持整目录批处理,参数(F0 方法、检索混合度、保护阈值等)都能从命令行传,适合写进 CI 或生产脚本。
- 多语言界面:界面文案全部走 i18n/ 下的语言包(zh_CN、en_US、ja_JP、ko_KR 等 12 种),你要给团队做多语言客户端,可以直接复用这套文案结构。
对外 HTTP 服务另有 api_240604.py 这样的接口脚本可参考。
代码地图
Retrieval-based-Voice-Conversion-WebUI/ ├── infer/ # 核心:训练 + 推理 │ ├── lib/infer_pack/ # 推理模型与组件(VITS 模块、F0 预测器、ONNX 结构) │ ├── lib/jit/ # hubert / rmvpe / synthesizer 的 JIT 封装 │ ├── modules/train/ # 训练主流程、F0 与特征提取 │ ├── modules/vc/ # 推理管线与工具函数 │ └── modules/uvr5/ # 人声分离 ├── configs/ # config.py + v1/v2 各采样率 json ├── tools/ # 下载、导出、CLI 推理、索引训练等脚本 ├── i18n/ # 12 种语言语言包 ├── assets/ # 权重落盘目录(pretrained / pretrained_v2 / hubert ...) └── docs/ # 多语言文档(含 faiss 检索、训练技巧)按用途速查:
| 想找什么 | 去哪 |
|---|---|
| 模型超参数 | configs/config.py |
| 推理核心模型 | infer/lib/infer_pack/ |
| 训练入口 | infer/modules/train/train.py |
| 实时变声 GUI | go-realtime-gui.bat / gui_v1.py |
| Web 入口 | infer-web.py |
| 训练技巧文档 | docs/en/training_tips_en.md |
说明:本文基于只读仓库撰写,未对任何文件做修改。
下一步
方向很清晰:先把 10 分钟数据训出第一版模型听个大概,再用检索混合度和索引迭代去逼近想要的音色,最后按场景选择 Web、CLI 批量或 ONNX 嵌入。现在就做一件事——按上面的命令克隆仓库、装依赖、跑python tools/download_models.py,半小时内你就能听到自己合成的第一条声音。
【免费下载链接】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),仅供参考