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
RVC(检索式语音转换)是一个基于 VITS 的开源 AI 语音克隆框架:喂给它 10 分钟左右的干净人声,就能训练出一个可推理、可实时变声的音色模型。唱歌、配音、做个性化语音助手,走的是同一条训练管线。这篇文章按"先跑通 → 出第一个成果 → 自己训一个 → 卡住了怎么办"的路径带你走一遍,命令都能直接复制。
🚀 把环境装好,界面先亮起来
先通:三步装完
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI pip install -r requirements.txt依赖文件按硬件区分,选错装不出效果:
| 文件 | 适用对象 |
|---|---|
requirements.txt | NVIDIA 显卡(大多数人的情况) |
requirements-dml.txt | Windows + AMD 显卡(DirectML) |
requirements-ipex.txt | Intel 显卡(Linux) |
再稳:装完依赖还缺一步——下载预训练底模。仓库里提供了现成脚本(tools/download_models.py 走 pip 网络即可,tools/dlmodels.sh需要系统里先装好 aria2),把底模拉到assets/pretrained等目录后再启动:
python infer-web.py --port 7865 # 默认端口就是 7865,不是 7860 python infer-web.py --port 7865 --dml # AMD 用户加上 --dml浏览器打开http://localhost:7865,能看到"模型推理 / 训练 / ckpt处理"等标签页就成功了。
过来人提醒:脚本默认 Python 3.8(见
run.sh、venv.sh),版本别乱升级,依赖链是按 3.8 配的。
🎤 先用现成音色转换出第一段音频
启动界面进"模型推理"标签页,流程就四步:
- 推理音色下拉框选一个模型。如果下拉是空的,说明
assets/weights里还没有任何.pth小模型——先用上面的脚本把预训练底模下下来,或在"ckpt处理"页从logs下提取一个 - 填入待处理音频的路径,或指定特征检索库(.index)路径
- 选音高提取算法(默认 rmvpe 就够,各算法差异见文末速记卡)
- 点"转换",右下角音频组件里直接试听、下载
两个最影响听感的滑块,默认值先用着:
- 检索特征占比 index_rate(默认 0.75):越接近 1,音色越像训练时的目标音色,越偏离你原音频的演绎细节
- 保护参数 protect(默认 0.33):保护清辅音和呼吸声,拉满 0.5 等于关闭;如果输出有"电音撕裂",把它调小一点
变调参数按半音计,0 保持原音高,男声转女声常见的做法是 -12 或 -10 起步再微调。
📝 喂 10 分钟数据,训练出自己的音色模型
数据准备:找一个文件夹,放目标人声 10–30 分钟,尽量干净、无伴奏、无大段静音。训练页"step2a"会自动遍历该文件夹下所有能解码的音频,做切片和归一化,你不用自己预处理。
训练页配置(step1):
- 实验名:自定义,所有产物都进
logs/实验名/ - 目标采样率:默认 40k;v2 支持 32k/40k/48k,v1 只有 40k/48k(32k 仅 v2)
- 模型版本默认 v2;"是否带音高指导"唱歌必须开
- 预训练底模路径会随版本和采样率自动切换,一般不用动
然后点"一键训练",它依次跑:处理数据 → 提取音高和特征 → 训练模型 → 训练特征索引,四步全绿即结束。想分步验证就分别点"处理数据""特征提取""训练模型""训练特征索引"。
训练设置的默认值(保存频率 5、总轮数 20、batch_size 按显存自动算)对小数据集是合理起点,小数据可以把"缓存至显存"设为是来提速。
训练完成后:大文件 checkpoint(G_轮数.pth)留在logs/实验名/里,但推理界面只认assets/weights/下的小模型。去"ckpt处理"页把 logs 下的 checkpoint 填进"模型提取",点提取即可;以后想省事,训练时把"是否在每次保存时间点将最终小模型保存至weights文件夹"设为是,就不用手动提取了。
过来人提醒:换采样率不能在旧实验上续训,起一个新实验名从头练。
🩺 卡点了:按阶段对号入座
启动阶段
界面打不开:先确认终端里的实际端口,再试python infer-web.py --port 7861换个端口;仍不行就查防火墙。
音色下拉为空:九成是没下底模,或下错了目录。确认assets/pretrained、assets/pretrained_v2下有对应.pth,然后在推理页点"刷新音色列表和索引路径"。
音频处理失败/报 ffmpeg 相关错误:音频处理依赖系统的 ffmpeg,ffmpeg -version能出版本号才算装好;同时保证音频路径里没有中文、空格和特殊符号,这两条能排掉大半报错。
训练阶段
CUDA out of memory:第一步把 batch_size 调小,或关闭"缓存所有训练集至显存";再深入一点,显存档位参数在 configs/ 的32k.json/40k.json/48k.json里,实际生效的是自动复制出来的 configs/inuse/ 目录(改动后需要重启 WebUI)。
特征提取失败 / tensor 尺寸不匹配:通常是训练文件夹里混进了坏文件或极短音频。清掉异常文件,重新"处理数据"再走一遍特征提取。
推理阶段
训完的模型不显示:记住那条规则——推理只读assets/weights。把 logs 下对应轮数的G_xxx.pth用"ckpt处理 → 模型提取"转成小模型,再点刷新。
索引文件找不到:训练特征索引生成的.index会在logs/实验名/下,并软链到assets/indices(外部索引目录名是outside_index_root),推理页下拉会自动检测;没有对应索引也能推理,只是音色还原度差一些。
🧪 进阶玩法:批量转换、模型融合与调参
- 批量推理:同一标签页下的第二个子页签,给一个文件夹(或上传多个文件),选输出目录(默认
opt)和导出格式(wav/flac/mp3/m4a),一次转完 - 伴奏人声分离:单独的 UVR5 标签页,把带伴奏的音频先分离出纯人声,是拿到干净训练数据最实用的前置步骤
- 模型融合:在"ckpt处理"页填两个模型路径 + A 模型权重(0–1),得到一个混合音色的新模型,适合拿两个相近音色做交叉测试
- ONNX 导出:同一标签页最下方,把小模型转成 onnx 用于更轻量的推理部署
推理调参速记卡:
| 参数 | 默认 | 作用与调整方向 |
|---|---|---|
| index_rate | 0.75 | 音色相似度 vs 演绎保真度;像但"死"→调低 |
| protect | 0.33 | 防电音撕裂;有撕裂→调小,没音色感→调大 |
| f0up_key | 0 | 半音数;-12 降八度,12 升八度 |
| 音高提取算法 | rmvpe | 见下表 |
| 算法 | 特点 |
|---|---|
| rmvpe | 效果最好,微吃 GPU,默认首选 |
| harvest | 低音表现好,但很慢 |
| dio | 高质量语音 + CPU 偏弱时提速 |
| pm | 最快,精度低,歌声场景可用 |
过来人提醒:数据质量比数据量重要。10 分钟干净人声,胜过 1 小时带噪音的音频;先分离、去静音、挑片段,再进训练。
✅ 下一步行动清单
- 环境已通:
assets/pretrained*底模齐全,界面能在 7865 端口打开 - 用现成音色转出第一段音频,动手拖过 index_rate 和 protect,听出区别
- 准备 10 分钟干净人声 → 一键训练 → ckpt 提取 → 推理页刷新,完成从数据到音色闭环
- 有余力再试:批量推理、模型融合、onnx 导出
常用入口:推理入口 infer-web.py、训练与推理核心代码 infer/、采样率配置 configs/、中文常见问题 docs/cn/faq.md(WebUI 里也内置了同一份 FAQ 标签页)。
【免费下载链接】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),仅供参考