如何用10分钟音频训练专属AI音色: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
如果你手头只有一小段录音,却想让AI用这个声音唱歌、配音甚至实时说话,RVC变声器(Retrieval-based-Voice-Conversion-WebUI)就是为此而生的:它基于检索式语音转换技术,让你用不超过10分钟的语音数据就能训练出一个可用的音色模型,并通过网页界面完成从切片、训练到变声的全部流程。
🎬 从一个真实需求说起:你只需要几分钟素材
假设你在做一个游戏角色,配音演员没法反复进棚。你只需要录几分钟角色原声,丢进RVC,它就能学出这个角色的音色,之后任何输入音频都可以"变成"这个角色在说。
它的核心思路其实就一句话:先检索,再转换。系统从参考音色库里找到与你输入音频"最像"的片段作为检索锚点,再用训练好的模型完成音色迁移。这就是项目名里 Retrieval-based(基于检索)的由来,检索质量直接决定转换的稳定性。
音色转换的推理逻辑在 infer/modules/vc/ 中,多语言使用说明(含中日英韩等)放在 docs/ 目录,遇到问题可以先翻对应语言的FAQ。
场景讲清楚了,接下来把它跑起来。
📦 环境准备与一键安装
硬件:有独立NVIDIA显卡体验最好,显存4GB以上即可跑(项目会自动检测显存并下调精度参数);没有显卡时会自动回退到MPS或CPU,速度会慢但流程不变。
软件:Python 3.8(run.sh脚本就是按3.8来准备虚拟环境的),以及FFmpeg用于音频处理。
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,里面固定了faiss-cpu(检索索引)、torchcrepe、pyworld等关键版本,建议不要随意改动。
启动方式按平台选一个即可:
# Windows:双击 go-web.bat(端口7897) # Linux / macOS:执行 run.sh(自动建venv、下模型、启动) ./run.sh首次启动会自动下载预训练权重到assets/下的pretrained、hubert等目录,启动成功后浏览器打开http://127.0.0.1:7865就能看到训练+推理一体的Web界面。环境就绪后,我们走一遍完整流程。
🔄 核心流程:从原始录音到可换声模型
整个流程在Web界面里按编号分成两大块:0-前置处理和训练、1-推理。逐步来看:
- 批量切片:把长录音切成小段。默认按
preprocess_per = 3.7秒自动切分(逻辑在 infer/lib/slicer2.py),切出来的片段会存到logs/对应目录。片段控制在3-10秒最理想,太短信息不足,太长难对齐。 - 打标:快速确认切分质量,把含混响、旁人说话的坏片段删掉。这一步最省时间的做法是边听边用键盘快捷键跳过,训练质量80%取决于这里。
- 前置处理(预处理):系统对打标后的音频做归一化和特征准备。
- 提取音高(F0):可选RMVPE、Harvest、Dio、PM四种算法,RMVPE精度和速度综合最优,是默认推荐。音高序列决定变声后唱腔的走向。
- 提取Hubert特征:用预训练Hubert模型提取音色特征,这是"音色"真正被数字化的一步。
- 模型训练:训练入口在 infer/modules/train/。模型默认按48kHz采样、
epochs: 20000的迭代上限训练,实际中数据量小的话训练几十轮后听感就趋稳,可以提前停。训练完成得到.pth大模型。 - 模型拆分:训练产物约数百MB,界面里点"提取小模型"可拆出约60-100MB的
.pth,便于部署和分享。 - 训练索引:对目标音色做faiss检索索引(v1/v2两种版本),这一步让推理时的检索更准,10分钟数据训练出像样的检索索引通常只需几分钟。
- 推理变声:切到"1-推理"页,选择刚训练好的模型和索引,上传想转换的音频,勾选"保护清辅音和呼吸"可减少爆破音失真,调好变调滑杆(男转女一般-12到-8,女转男反向),点击合成即可试听。
训练配置来自 configs/ 下的json(如configs/v2/48k.json),这些数字对新手意味着什么,看下一节。
🎛️ 关键参数速查表
| 参数 | 推荐值 | 说明 |
|---|---|---|
采样率sampling_rate | 48000 | v2默认48k,音质最好;40k/32k仅v1支持且速度更快 |
批量大小batch_size | 4 | 显存紧张就降到2,爆显存时优先调它 |
学习率learning_rate | 1e-4(默认) | 一般无需改动 |
训练轮数epochs | 按数据量试听决定 | 上限20000只是保险,小数据集几百轮内即可收敛,用试听判断 |
| 音高算法 | RMVPE | 四种F0算法中综合最优 |
切片时长preprocess_per | 3.7秒 | 自动切分默认值,可按素材节奏微调 |
| 变调滑杆 | 男→女 -12 ~ -8 | 推理时实时调整,正值为升调 |
其中显存相关的一组参数(x_pad / x_query / x_center / x_max)不用手动改:configs/config.py会按显存自动选择,6GB以上用半精度大参数组,4GB以下自动降为1/5/30/32的小参数组并切FP32,老显卡(1060/1080等)也会自动强制FP32保证稳定。
参数会调了,下面是一些超出"跑通流程"的玩法。
🚀 进阶玩法
- 多模型融合:界面"模型融合"功能支持把两个角色的
.pth按权重混合,做出介于两者之间的新音色,适合需要"原创AI声线"的创作者。 - v2索引换音色稳定性:同一模型分别训练 index v1 和 v2 两套索引对比,v2检索更稳、拖影更少;追求稳定输出时优先用v2索引。
- 实时变声与API:仓库提供
rvc_for_realtime.py(实时变声入口)和api_240604.py(HTTP API),可把它接到直播、游戏语音链路里;命令行批处理可用tools/infer_cli.py。 - 旧模型迁移:把v1训练的模型给v2界面用之前,先用界面里的"ckpt处理/转换"功能做版本转换,避免特征维度不匹配。
玩法到这儿,剩下的就是踩坑问题了,这几个最常见。
🛠️ 排错指南
现象:训练时爆显存(CUDA out of memory)→ 原因:batch_size或半精度参数组对当前显存偏大 → 解决:把batch_size降到2;4GB及以下显存时确认configs/config.py已自动走FP32小参数分支;仍不够就关闭其他占用显存的程序。
现象:变声后出现电流声、破音或"电音感"→ 原因:源音频底噪大,或音高提取不准 → 解决:训练前先用界面内置的UVR5(人声分离)把伴奏/噪音去掉;F0算法改用RMVPE;推理时打开"保护清辅音和呼吸"开关。
现象:浏览器打不开Web界面→ 原因:端口被占用或脚本用了错误Python启动 → 解决:默认端口是7865(go-web.bat里改成了7897,以启动日志实际打印的地址为准);Linux/macOS直接走run.sh,它会用固定的python3.8创建虚拟环境再启动,避免版本错乱。
问题都处理完了,最后给你一份行动清单。
✅ 你的下一步
- 按上文完成 clone 与安装,启动 WebUI 并确认
assets/下预训练模型下载完整 - 录或找10分钟干净干声(安静环境、无BGM),先用批量切片+打标走一遍流程
- 用48k + RMVPE默认参数完成第一次训练,拆出小模型并训练 v2 索引
- 在推理页用同一个人说/唱的两条音频做 A/B 试听,记录变调值,建立你的"参数基线"
- 效果满意后尝试
api_240604.py接入你自己的应用,或去tools/infer_batch_rvc.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),仅供参考