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
直播时想实时换成另一种音色,市面上的变声器却总是电子味很重。这是一个很常见的痛点,而 RVC 声音克隆 是目前最成熟的开源解法之一。这个项目 Retrieval-based-Voice-Conversion-WebUI(下称 RVC WebUI)只需 10~30 分钟的低噪目标人声录音,就能训练出一个可用的声音转换模型,并提供离线转换与实时变声两套界面。下面按原理、安装实操、常用参数调优的顺序讲清楚,面向会用命令行但不熟悉语音 AI 方向的读者。
速览(给赶时间的人)
- 环境要求 Python 3.12 x64,依赖装
requirments_*.txt中的一个,预训练模型放在assets/目录 - 离线转换:
python webui.py,默认端口 7865 - 实时变声:另开
python realtime_gui.py,Windows 下可双击go-realtime_gui.bat - 最常调的参数是
index_rate(0~1),越大输出音色越贴近训练集
🎧 痛点切入:传统变声器为什么不够用
传统变声器基本靠变调、均衡这类简单处理,效果生硬,音调拉高后尤其刺耳。RVC 声音克隆 走的是另一条路线:先从一段录音里学习"目标人声模型",推理时把输入语音的音色特征替换掉,输出保留源音频的发音、语速与节奏,只改变音色本身。
项目有几个值得提前了解的点:
- 预训练底模用约 50 小时的开源 VCTK 数据集训练,没有版权顾虑
- 音高提取采用 Interspeech 2023 的 RMVPE 算法,速度快、资源占用小,基本避免哑音
- AMD / Intel 显卡也能跑:Windows 走 DirectML,Linux 走 CPU
🔍 原理:检索式特征替换如何杜绝音色泄漏
项目名里的 retrieval-based(基于检索)是核心。整条流水线可以简化为三步:
- 特征提取:从源音频里提取 Hubert 特征序列与音高曲线,音色信息主要承载在特征里;
- 检索替换:用训练集建立索引文件(
.index),推理时检索最相似的 top1 特征向量去替换输入源特征,避免原声音色"泄漏"到输出; - 合成:由声码器根据替换后的特征生成最终音频。
index_rate就是作用于第 2 步的旋钮,控制检索特征与原始特征的混合比例:越接近 0,保留越多源音频的音色特点;越接近 1,越贴近训练集的音色,但过度贴合训练集的风格也会更明显。第一次跑通时用默认值即可,听感不满意再微调。
🛠 上手实操:安装依赖并首次启动 WebUI
当前分支要求Python 3.12 x64(Ubuntu 推荐 24.04 x86_64),全部操作在仓库根目录完成:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI python -m pip install -r requirments_cpu_py312.txt python webui.py第三行是 CPU 环境的示例。有 NVIDIA 显卡时,需要先按 README 的两阶段方式装对应 CUDA 版本的 torch,再换用requirments_cu118_py312.txt(RTX 50 系以前的卡)或requirments_cu128_py312.txt(RTX 50 系)。
安装时注意三件事:
- 仓库里不带预训练模型,需按 README"下载模型"一节把
hubert_base、rmvpe、pretrained_v2等放入assets/;UVR5 人声分离的权重可以单独下载 - 启动后默认监听
7865端口,端口被占用时脚本会自动寻找下一个可用端口;无桌面服务器加--noautoopen参数 - 自己的产物按约定存放:
.pth模型放assets/weights/,.index文件放assets/indices/
界面上的典型流程是:音频预处理(切片、F0 提取、特征提取)→ 训练 → 推理。对应脚本都在train/dataset/下,如slicer2.py、extract_f0.py、extract_hubert_feature.py,通过界面按钮触发即可,不必手动执行。
⚙️ 进阶玩法:实时变声、模型融合与批量转换
跑通基础流程后,有三个进阶场景值得试:
- 跑实时变声窗口:单独运行
python realtime_gui.py。项目给出的端到端延迟约 170ms,使用 ASIO 输入输出设备时可做到约 90ms,但非常依赖硬件驱动支持。音高提取算法可选pm(较快)、rmvpe(默认)、fcpe(备选,结果不稳定时换算法对比是最直观的做法) - 用模型融合微调音色:在"ckpt 处理"选项卡里,
ckpt-merge可以把两个.pth模型按比例混合,用来微调音色细节,或得到介于两种音色之间的过渡效果 - 分离人声与伴奏:
tools/uvr5调用的 UVR5 能把整首歌拆成人声和伴奏,分离出的人声送进 RVC 转换,就能得到换声版本的整曲
批量处理直接用webui.py的离线推理选项卡,一次丢进多个文件即可。
📐 参数与硬件怎么选
面对"到底选哪个",可以按下面两个标准判断:
| 选择项 | 可选项 | 判断依据 |
|---|---|---|
| 依赖文件 | requirments_cpu_py312.txt/requirments_cu118_py312.txt/requirments_cu128_py312.txt | CPU、AMD、Intel 用 cpu 版;NVIDIA RTX 50 系以前用 cu118,RTX 50 系用 cu128 |
| 音高提取算法 | pm/rmvpe/fcpe | 默认rmvpe;资源紧张试pm;结果异常换fcpe对比 |
index_rate | 0~1 | 低值保留源声特点,高值贴合目标音色;从默认值起步,凭听感调整 |
| 半精度推理 | 开 / 关 | 显存紧张时开启;追求质量可关闭 |
一个常见误区是把index_rate拉满就更好。如果训练数据只有 10 分钟,过高的取值会放大训练集里的噪点与口癖,这种时候补录数据比调参数更有效。
🧭 常见问题与去哪里找帮助
- 启动失败、依赖报错:先确认 Python 是否为 3.12 x64,torch 与 requirements 文件是否匹配硬件;README 里有一行命令可以同时打印 torch 版本、CUDA 版本和可用性
- 转换效果差:最常见的原因是训练数据底噪大或时长不够,官方建议至少 10 分钟低噪语音;也可以检查 F0 提取结果是否有漏段
- 实时变声延迟高:优先换 ASIO 设备,其次降低采样率,再考虑开启半精度推理;这三项是项目文档中明确提到的手段
- 文档索引:中文 FAQ 在
docs/cn/faq.md,索引文件(faiss)的用法说明见docs/en/faiss_tips_en.md,界面本身支持 13 种语言,翻译文件集中在i18n/locale/下
往前看,团队已预告 RVCv3 底模,参数与训练数据都会更大,官方预期是推理速度基本持平的前提下效果更好、所需训练数据更少。如果你打算长期使用,可以定期看docs/cn/Changelog_CN.md了解更新节奏;遇到仓库文档没覆盖的问题,去项目的 issue 区提问通常是最快的解决路径。
【免费下载链接】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),仅供参考