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分钟目标音色的音频就能训出一个变声模型。读完本文,你能在网页界面完成训练、生成索引,并把一段普通录音转成目标音色。
一、准备工作:环境与数据清单
先对照下表检查机器和素材,全部满足后再进入安装。
| 组件 | 要求 | 为什么是这个值 |
|---|---|---|
| Python | 3.8~3.10,64位 | 依赖中的llvmlite固定在0.39.0,更新版本安装会冲突 |
| PyTorch | 2.0+,CUDA与显卡驱动匹配 | 训练和推理的核心,版本不匹配会在启动时报CUDA错误 |
| ffmpeg | 最新版并加入PATH | 切片、归一化、格式转换全靠它,缺失会导致音频处理失败 |
| 显卡 | N卡显存≥4GB;A卡/I卡可用DML方案 | 显存直接决定batch_size,4GB以下基本只能推理 |
| 训练数据 | 10~50分钟低底噪单人音频 | 太少音色不稳,太多只是拉长训练时间 |
| 磁盘空间 | ≥10GB可用 | 预训练底模加训练checkpoint要占几个GB |
数据侧建议:文件路径用纯英文,单段音频控制在10秒左右,混音歌曲先用工具抽干人声再进训练集。
二、核心流程:从代码到变声的6步
第1步 克隆项目
- 做什么:拿到源码,进入项目目录。
- 怎么做:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI- 怎么算成功:目录下能看到 infer-web.py、configs、assets 等条目。
第2步 安装依赖
- 做什么:建独立虚拟环境,装PyTorch和项目依赖。N卡装 requirements.txt,A卡/I卡改装 requirements-dml.txt。
- 怎么做:
python -m venv venv pip install torch torchvision torchaudio pip install -r requirements.txt- 怎么算成功:安装过程无报错,且命令行里 ffmpeg -version 能输出版本号。
第3步 下载预训练模型
- 做什么:拉取训练所需的hubert、rmvpe、底模和UVR5声伴分离模型。
- 怎么做:
python tools/download_models.py- 怎么算成功:assets/hubert、assets/pretrained、assets/pretrained_v2、assets/uvr5_weights 里出现对应的 .pt / .pth 文件。
第4步 启动WebUI
- 做什么:打开网页操作界面。
- 怎么做:
python infer-web.py- 怎么算成功:浏览器自动打开 http://localhost:7865,页面有"模型推理""训练""ckpt处理""Onnx导出"四个页签。注意这个控制台窗口不要关,关了页面就连不上了。
第5步 训练音色模型
- 做什么:在"训练"页签填写实验名(如 mi-test)、目标采样率选40k、勾选模型带音高指导(唱歌必选)、版本选v2,填入训练音频文件夹路径。
- 怎么做:直接点"一键训练",它按固定顺序执行——切片归一化→提取音高和特征→训练模型→训练索引。
- 怎么算成功:输出信息出现"全流程结束";logs/mi-test 下有 G、D 开头的checkpoint文件,且生成 added_ 开头的 .index 索引文件。
第6步 推理变声
- 做什么:把待转换的音频丢给新训的音色。
- 怎么做:切到"模型推理"页签,先点"刷新音色列表和索引路径",在下拉框选中 mi-test,填入输入音频路径,音高提取算法选rmvpe,点"转换"。
- 怎么算成功:输出区域出现可播放的音频,音色接近目标声线,且听不出原说话人的痕迹。
三、参数怎么调
| 参数 | 推荐值 | 作用 | 什么时候需要动 |
|---|---|---|---|
| total_epoch 总训练轮数 | 20(默认) | 训练轮数,越多越贴合训练集 | 数据干净且时长足可加到100~200;底噪大保持20~30 |
| batch_size | 界面自动按显存/2预填 | 每张卡的训练批次,决定显存占用 | 显存爆了就减半,降到1还爆只能换卡 |
| save_every_epoch | 5 | 每N轮存一次checkpoint | 想多留中间模型试听时调小 |
| 目标采样率 | 40k | 输出音质上限 | 追求更高音质选48k,代价是更吃显存 |
| 版本 | v2 | 底模代次,v2特征维度更高 | 新手直接选v2即可 |
| index_rate 检索特征占比(推理) | 0.75 | 混合训练集特征的强度,压制源音色泄露 | 输出还残留原音色就调高,音质变糙就调低 |
| protect 保护力度(推理) | 0.33 | 保护清辅音和呼吸声,防电音撕裂 | 听见撕裂声调低,音色发闷则调高 |
| CPU进程数 | 界面按核数预填 | 切片和特征提取的并行度 | 系统内存报error时往下拉低 |
其余滑块(变调、rms_mix_rate、resample_sr0等)先保持默认,确定基础流程跑通后再逐项对比试听。
四、出问题了
| 现象 | 原因 | 解法 |
|---|---|---|
| CUDA out of memory | 显存不够 | batch_size减半重训;4GB显存卡设1~2 |
| 提示找不到llvmlite.dll | 缺Windows C++运行库 | 安装Visual C++ Redistributable后重启WebUI |
| Expecting value: line 1 column 1 | 系统代理拦截了本地请求 | 关闭局域网/全局代理,含服务器端代理也要unset |
| 一键训练结束却没有索引文件 | 索引添加环节被大特征卡住 | 手动再点一次"训练特征索引"按钮 |
| 推理页选不到新训音色 | 音色列表未刷新 | 点"刷新音色列表和索引路径";仍没有则回查logs下的train.log |
五、一个完整案例
场景:把清唱录音换成某歌手音色做翻唱。
- 数据:18分钟从成品歌曲里用UVR5分离出的干人声,切成约100段
- 硬件:RTX 3060 12GB
- 配置:40k采样率、v2版本、带音高指导,total_epoch=20,batch_size=6
- 耗时:切片加特征提取约15分钟,训练约40分钟,建索引约5分钟
- 效果:推理端 index_rate=0.75、protect=0.33、变调0,音色贴合度高,无明显源音色泄露;人声再与伴奏重新混音即可成片
如果只想做说话场景的变声(不做唱歌),训练时可以不勾音高指导,模型会更轻,推理也更快。
六、延伸资料
- 中文常见问题:docs/cn/faq.md
- 英文文档目录:docs/en/
- 核心推理库:infer/lib/
- 训练脚本(预处理/特征提取/训练入口):infer/modules/train/
- WebUI主程序:infer-web.py
- 预训练模型下载脚本:tools/download_models.py
- 更新日志:docs/cn/Changelog_CN.md
收尾建议
- 首跑保持全部默认参数,只改实验名和训练文件夹路径,跑通后每次只动一个变量再对比试听。
- 混音歌曲先过UVR5抽干人声再训练,带伴奏的训练集会直接拉低音质。
- 把调出满意效果的那组 index_rate 和 protect 值记下来,复用它们比每次盲调更快。
- 训练有异常先看 logs/实验名/train.log,绝大多数报错都能在里面找到第一现场。
- 要分享的模型是 weights 文件夹里60MB以上的小模型,不是 logs 下几百MB的大checkpoint。
流程一旦跑通,剩下的只是数据积累和反复试听的功夫。
【免费下载链接】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),仅供参考