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(Retrieval-based-Voice-Conversion-WebUI)是一个基于 VITS 的开源语音转换框架,核心能力是用 10 分钟以内的语音数据训练出一个可用的 AI 音色模型,再对任意音频做离线或实时变声。它适合想做 AI 歌手、给游戏角色配音、或研究语音合成的人。整套流程在一台普通显卡的电脑上就能跑通,训练数据量小、耗时短,是开源变声方案里上手门槛较低的一种。下面按"准备环境 → 备数据 → 训练 → 推理 → 调效果"的真实操作顺序走一遍。
环境准备与首次运行
RVC 对硬件的最低要求并不高:一张 4G 以上显存的 N 卡(或 CPU)就能训练和推理,A 卡 / I 卡也能通过 DirectML 或 IPEX 跑起来。软件上需要 Python 3.8–3.10、FFmpeg,以及一批预训练模型文件。
先克隆并装依赖。N 卡走默认 requirements,A 卡 / I 卡换成对应的 dml 文件:
git clone https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-WebUI cd Retrieval-based-Voice-Conversion-WebUI pip install torch torchvision torchaudio pip install -r requirements.txt接着安装 FFmpeg(sudo apt install ffmpeg或brew install ffmpeg,Windows 可把 ffmpeg.exe / ffprobe.exe 放到根目录),然后下载 RVC 依赖的预训练模型,放到assets/下:
sh tools/dlmodels.sh # Linux / macOSWindows 用户执行tools/dlmodels.bat。这一步会把hubert_base.pt、pretrained、pretrained_v2、uvr5_weights、rmvpe.pt等文件拉下来,缺了任何一项训练或推理都会报找不到文件。
装好之后用下面命令启动 WebUI(Windows 直接双击go-web.bat):
python infer-web.py浏览器会自动打开 7865 端口。能打开界面、看到"训练 / 推理 / 人声分离"等选项卡,就说明环境跑通了。
常见坑
- 启动报
llvmlite.dll找不到:Windows 上装一次 VC++ 运行库(x64)再重启即可。 - 界面连不上(Connection Error):多半是黑色控制台窗口被关掉了,保持它开着。
- 弹
Expecting value: line 1 column 1:关闭本地或云端的 HTTP 代理后重试。 - 4G 以下显存(如 1060 3G)训练会很吃力,能跑但建议换 4G 以上显卡。
训练数据怎么备
数据质量直接决定模型上限,RVC 的推荐量是 10–50 分钟高质量语音;如果音色统一、底噪低,5–10 分钟精简数据也能训出不错的效果。准备时盯住三点:
- 采样率:目标 48kHz 音质最好(对应 48k 模型),数据不够精细可用 32k。
- 切分长度:WebUI 会自动把长音频切成约 5–10 秒的片段,无需手动切,但每段别太长。
- 底噪与音量:安静环境录制,统一响度,去掉明显杂音、电流声、旁人说话。
操作路径放在 WebUI 的"训练"选项卡里:先填音频所在目录,点"生成训练集",RVC 会自动完成切分、转 16k/48k、提取音高和特征这几步预处理。数据放在 infer/modules/train/ 里处理,音高提取默认用的是 RMVPE,比老算法速度更快、哑音更少,无需手动指定。
常见坑
- 音频路径带空格、括号或中文,切分时会报 ffmpeg / utf8 错误——把音频挪到纯英文无空格的路径下重跑。
- 出现
The expanded size of the tensor (17280) must match (0):说明wavs16k里有明显偏小的坏片段,删掉再重新训练。 - 预处理时报文件 / 内存 error:CPU 进程数开太多导致内存爆了,把"提取音高和处理数据使用的 CPU 进程数"调低,或手动把音频切短些。
训练流程与参数怎么定
一键训练会依次执行"提取音高 → 提取特征 → 训练模型 → 训练索引",中途参数在网页上填好即可。真正需要动的主要是两个数:
batch_size(显存不够就降)。默认在configs/v1/48k.json、configs/v2/48k.json里是 4:
"train": { "batch_size": 4, "learning_rate": 1e-4, "epochs": 20000 }显存吃紧就降到 2 甚至 1;learning_rate保持 1e-4 不用动。
总轮数(total_epoch / epochs)。按数据质量定:底噪大、音质一般时 20–30 轮足够,调太高反而带不动低质数据;音质高、时长充足时可以放到 100–200。别盲目追求轮数多,过训会让音色发虚。
音高算法用默认的 RMVPE 即可,它精度和速度的平衡最好;Harvest 更准但更慢、更吃显存,低配机器可以退而选 PM 或 Dio,这几套实现都放在 infer/lib/infer_pack/modules/F0Predictor/ 下。
常见坑
- 训练中途改采样率接着练,会报
The size of tensor a (24) must match (16)——中途别换采样率,要换就换新实验名从头训。 - 想中断再续:关闭控制台重启
go-web.bat,用相同参数点"训练模型"就会接着上次的 checkpoint 继续,不需要重填全部流程。
跑通第一次推理
训练完成后,模型和索引分别落在两个位置:能分享给别人的是assets/weights/下约 60MB 的.pth文件,配套的added_*.index在assets/indices/下;而logs/实验名/里那个几百 MB 的大.pth是实验状态,只用于续训和复现,不要拿去推理或分享。
推理入口在"推理"选项卡,也可以走命令行 tools/infer_cli.py,关键参数如下:
python tools/infer_cli.py --f0up_key 0 \ --input_path 输入.wav --index_path assets/indices/added_xxx.index \ --f0method rmvpe --model_name 模型名 --index_rate 0.66 \ --device cuda:0index_rate是控制"音色泄露"的核心参数,默认 0.66。它越高,输出越贴近训练集音色、抗泄露越强,但音质会被训练集拉低;越低则越依赖推理源和底模的音质。第一次推理先跑通流程,再进入调优。推理的完整流水线在 infer/modules/vc/(pipeline.py)里。
常见坑
- 推理音色对不上、像换了个人:把
index_rate往 0.6–0.8 调,训练集好就调高。 - 训练完"一键训练"结束后没有
added_开头的索引:多半是数据太大卡在加索引那步,点一次"训练索引"按钮重新补即可。 - 找不到的模型其实存在:推理界面右上角点刷新音色,再选一次。
效果调优与常见坑
调效果基本围绕"音色不够像"和"音质差 / 有杂音"两类问题,对应不同的旋钮:
- 音色偏、像底模或推理源:调高
index_rate;训练集本身优质且时长够时,模型天然抗泄露,此时index_rate不那么关键,甚至可以不建索引。 - 音质差、有杂音:优先回到数据端——换更干净的源音频、提高采样率到 48k,比在推理参数上反复试更有效。
- 杂音 / 哑音多:确认音高提取用了 RMVPE;低配设备若切到 PM,杂音会增多。
- 想融合两个音色:用"ckpt 处理"选项卡里的模型融合(ckpt-merge),能混合多个模型的优点。
- 推理显存不足:到 configs/config.py 下调
x_pad / x_query / x_center / x_max,按显存分档:
# 6G 显存:x_pad=3, x_query=10, x_center=60, x_max=65 # 4G 显存:x_pad=1, x_query=5, x_center=30, x_max=32多卡时config.py里device的cuda:后跟卡号即可切换推理卡。更细的排障(如中途加数据、提取中间保存的模型)官方文档整理得比较全,可直接查 docs/cn/faq.md。
硬件与性能建议
不同显卡决定了 batch_size、能否用半精度,以及单次训练的大致耗时,选卡时参考下表:
| 显卡档位 | 显存 | 训练 batch_size | 半精度 | 适用场景 |
|---|---|---|---|---|
| 入门 | 4G(P10/P40/1050 级) | 1–2 | 否(强制 fp32) | 学习跑通、小数据集 |
| 主流 | 6–8G(1060 6G/3060) | 2–4 | 是 | 常规训练,10–50 分钟数据 |
| 高性能 | 12–24G(3060 12G/4090) | 4–8 | 是 | 大数据集、多模型并行、批量 |
经验上,10 分钟左右的干净数据在 6G 以上显卡上训练单模型通常在数十分钟内完成;数据量和轮数上去后时间线性增长。实时变声(go-realtime-gui.bat/gui_v1.py)对 CPU 和声卡驱动更敏感,默认端到端延迟约 170ms,配 ASIO 设备可压到 90ms 上下,输入输出设备尽量选同一类型(如都用 MME)。
两条最容易踩的提醒:一是分享和推理要用assets/weights/下 60MB 的小模型加索引,别拿logs/里的实验大文件;二是数据质量比轮数更决定效果,先把音频备干净再谈调参。下一步建议就用一段自己的 10 分钟语音完整跑一遍上面流程,拿到第一个能用的模型,再回到"效果调优"那节对着index_rate和采样率微调。
【免费下载链接】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),仅供参考