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 的开源变声框架,核心亮点只有一条:用不到 10 分钟的干净语音,就能在普通显卡上训练出一个能唱歌、能对话的音色模型。它的底模由接近 50 小时的开源 VCTK 语音集预训练而成,因此你不需要从零教模型"人声长什么样",只需要教它"某个人的声音长什么样"。配合 top1 检索机制、实时变声界面(端到端延迟 170ms,ASIO 环境下可达 90ms)和内置的人声分离工具,它把"克隆一个声音"的门槛从录音棚级拉到了卧室级。
痛点先行:传统语音转换的三道坎
数据量、音质、速度,传统方案怎么算都亏
传统音色克隆路线大致是"录几小时数据 → 从零训练一个 VITS → 祈祷不出电音"。这条路有三道坎:
- 数据门槛高:通常需要数小时纯净录音,对素人来说几乎不可完成;
- 效果容易翻车:训练不足的模型常带"金属音""机器人感",歌声场景尤其明显;
- 实时性难兼顾:能离线出好音质的方案往往慢,能实时的方案音质打折。
RVC 的应对思路:检索替代硬记
RVC 的破题方式不是"逼模型背下你的声音",而是边推理边查表:推理时把输入音频的音色特征换成训练集中最相似的特征片段(top1 检索),再交给声码器合成。这样模型只负责"像那个人一样发声",具体音色细节由检索库兜底——项目方正是用这套机制"杜绝音色泄漏"。数据量方面,官方推荐至少 10 分钟低底噪语音,常见问题文档给出的实用区间是 10 至 50 分钟。
一张表看懂 RVC 的核心组件
| 术语 | 通俗解释 |
|---|---|
| HuBERT 特征提取器 | 声音的"指纹仪",把每一帧音频压成 256 维特征向量 |
| top1 检索索引(faiss) | 音色的"卡片目录",用 IVF512 结构预组织训练集特征,推理时毫秒级查到最接近的音色 |
| VITS 声码器 | 声音的"3D 打印机",把特征数据逐帧打印成可听波形 |
| RMVPE 音高提取 | 旋律的"节拍器",逐帧读出音高 f0,专治歌声转换里的哑音问题 |
| UVR5 人声分离 | 音频的"手术刀",从整首歌里精准切出人声与伴奏 |
| ckpt-merge 模型融合 | 音色的"调色盘",把两个权重文件按比例混出第三种声音 |
它凭什么:四个设计决定成败
10 分钟数据 + 预训练底模,小数据也能出片
训练不是从随机权重开始,而是加载assets/pretrained/下的f0G40k.pth/f0D40k.pth继续训练,等于站在 50 小时底模的肩膀上微调音色。数据预处理也很省事:指定一个音频文件夹,RVC 自动完成静音切分(按 4 秒一段、0.3 秒重叠切块)、降噪、归一化,再统一转成 16k 的 wav 送进特征提取。
检索机制从根上堵住音色泄漏
没有检索的变声模型,往往把输入者自己的音色"漏"进输出里——你唱的是 A 的旋律,出来的却是 A 和 B 的杂交体。RVC 用检索索引把输入特征整体替换为训练集特征,推理端还有一个"检索特征占比"滑杆(在线 demo 默认 0.88),拉满则完全用训练集音色,调低则保留更多原声特征,给你留了手动权衡的余地。
老显卡友好:fp16 自动降级 + 4GB 显存保底
configs/config.py里有一套很实在的降级逻辑:检测到 P40、GTX 1060–1080、1650 等老卡时自动切到 fp32 并调整批处理参数;显存 ≤4GB 时自动收缩分段长度(x_pad/x_query/x_center/x_max)。官方 FAQ 的说法是"4G 以下显存可以直接放弃,4G 显存显卡还有救"。
全显卡覆盖 + 多语言界面
N 卡走 CUDA;A 卡/I 卡可走 DirectML(requirements-dml.txt);Linux 下 A 卡有 ROCm(requirements-amd.txt)、I 卡有 IPEX(requirements-ipex.txt)两条路。界面通过 i18n/locale/ 支持中、英、日、韩、法、俄、葡、土耳其等 13 种语言,官方文档同步覆盖 docs/ 下的 cn、en、jp、kr、fr、tr、pt 等目录。
手把手上手:从装环境到第一次变声
准备:三条命令装好依赖
环境要求 Python 大于 3.8。
# 获取代码 git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI # N 卡 pip install -r requirements.txt # A 卡 / I 卡(DirectML) pip install -r requirements-dml.txt # MacOS 可用 run.sh 一键装依赖 sh ./run.sh另需准备两样东西:ffmpeg(Ubuntu 用sudo apt install ffmpeg,Windows 把 ffmpeg.exe 放根目录即可),以及assets/下的预训练模型(hubert_base.pt、pretrained、uvr5_weights,v2 用户还需 pretrained_v2;仓库 tools/ 里附有下载脚本dlmodels.sh/dlmodels.bat)。
执行:启动 WebUI 并跑通一次训练
# 启动训练/推理网页界面(默认端口 7865) python infer-web.pyWindows 整合包用户双击 go-web.bat 即可(整合包占用端口 7897),实时变声界面则是 go-realtime-gui.bat。
训练路径按三步走:① 起个实验名并选择是否"考虑音高"(唱歌场景必须开,不开则模型更轻但不适合歌唱);② 指定音频文件夹,点一键提取——自动完成切分、降噪、f0 音高提取(可选 harvest / crepe / rmvpe)与 HuBERT 256 维特征提取,中间产物全部落在logs/实验名/下;③ 点一键训练——训练 VITS 权重后自动用 faiss 构建 IVF512 检索索引。详细的分步说明见 docs/en/training_tips_en.md,中文社区教程见 docs/cn/。
验证:用这些参数做第一次转换
推理页面上真正影响听感的参数其实就几个:
- 变调 f0up_key:半音数,男转女推荐 +12,女转男推荐 -12;
- 音高提取算法:歌声可选 rmvpe(效果最好且比 crepe 快、更省资源),harvest 低音好但极慢,pm 适合说话输入提速;
- 检索特征占比:默认 0.88,拉高更"像训练对象",调低保留更多原声;
- 保护清辅音 protect:默认 0.33,防止电音和撕裂感,调低保护更强但可能削弱检索效果;
- 中值滤波半径 filter_radius:默认 3,配合 harvest 可削弱哑音。
命令行党可以直接用 tools/infer_cli.py 做单条转换,例如指定模型、索引、f0 算法后输出 wav;批量处理用 tools/infer_batch_rvc.py。上传音频控制在 90 秒以内。
能用在哪儿:四类典型场景
音乐与 AI 歌手
这是 RVC 的主场。先用内置 UVR5(权重在assets/uvr5_weights/)把人声从伴奏中分离出来,训练音色模型,再把替换后的人声与原伴奏合回——社区里"5 毛钱在 AutoDL 上训练 AI 歌手"的玩法正是这条路。不想从零训练时,还可以用 ckpt 选项卡的 ckpt-merge 把两个模型按比例融合,快速调出"介于两人之间"的新音色。
实时变声:直播、游戏与通话
实时变声界面实现端到端 170ms 延迟,配合 ASIO 声卡输入输出可压到 90ms。对延迟敏感的直播推流、游戏内变声、语音通话场景,这组数字意味着"几乎感觉不到经过了一台机器"。
有声内容与多角色配音
10 分钟数据训一个角色的特性,让"一部小说五个角色各一个音色"的批量生产成本极低:每角色准备一小段参考语音,各训一个模型,再用批量推理脚本串行出片。
开发者:API 与二次开发
仓库提供了两套可直接调用的推理接口 api_231006.py 和 api_240604.py,底层就是 infer/modules/vc/ 里的VC类(vc_single方法即推理入口);需要轻量化部署时可用 tools/export_onnx.py 导出 ONNX,tools/onnx_inference_demo.py 给出对应推理示例。模型相似度对比可以用 tools/calc_rvc_model_similarity.py 量化两个权重文件的接近程度。
继续深挖:调参建议与常见报错
关键参数怎么设
| 参数 | 建议 | 依据 |
|---|---|---|
| 训练轮数 total_epoch | 底噪大的数据集 20~30 轮即可;高音质长数据集可上到 200 | docs/cn/faq.md Q9 |
| 学习率 | 初始 1e-4,衰减系数 0.999875 | configs/v1/40k.json |
| batch_size | 默认 4,显存富裕时调大更稳 | 同上 |
| 采样率版本 | v1 支持 32k/40k/48k,v2 支持 32k/48k | configs/ |
| 检索索引 | 一键训练后自动生成.index文件,位于logs/实验名/ | 训练指南 |
问题↔优化方案速查表
| 常见问题 | 处理方案 |
|---|---|
| 训练时 ffmpeg error / utf8 error | 多半是路径带空格、括号或中文,把数据集挪到纯英文无空格路径(FAQ Q1) |
一键训练结束没有.index索引 | 数据集过大卡在添加索引步骤,重新点一次"训练索引"按钮(FAQ Q2) |
| 推理页看不到刚训的音色 | 先点"刷新音色";仍没有则检查logs/实验名/下的报错日志(FAQ Q3) |
| CUDA out of memory | 训练缩小 batch_size;推理缩小config.py末尾的 x_pad / x_query 等参数;4GB 显存可继续跑(FAQ Q8) |
| 分享模型给别人 | 分享assets/weights/下 60+MB 的推理用 pth(可与.index打包成 zip),不要分享logs/下的训练态大文件(FAQ Q4) |
| 男转女/女转男音色怪 | 变调设 +12 / -12,音域失真时再手动微调半音数 |
训练数据怎么准备
官方口径是 10~50 分钟、低底噪。实操上优先保证干净而不是堆时长:底噪大的数据训再多轮也"带不高"。音频格式交给 ffmpeg 兼容即可,切分、降噪都由流水线自动完成;若源文件是"人声+伴奏"混音,先走一遍 UVR5 分离再进训练。
延伸资料:仓库内快速索引
- 中文文档与 FAQ:docs/cn/faq.md、docs/cn/Changelog_CN.md
- 多语言文档:docs/en/(训练技巧、FAQ、faiss 技巧)、docs/jp/、docs/kr/、docs/fr/、docs/pt/、docs/tr/
- 命令行工具集:tools/(单条推理、批量推理、ONNX 导出、模型下载、相似度计算)
- 预训练模型目录:assets/pretrained/、assets/pretrained_v2/
- 训练配置:configs/(v1/v2 各采样率参数,训练时自动复制到
configs/inuse/) - 推理核心源码:infer/modules/vc/(VC 主类)、infer/lib/infer_pack/modules/F0Predictor/(四种音高提取器:rmvpe / harvest / crepe / pm)
- 启动入口:infer-web.py(WebUI)、go-realtime-gui.bat(实时变声)、run.sh(MacOS 依赖安装)
【免费下载链接】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),仅供参考