如何3步上手Retrieval-based-Voice-Conversion-WebUI:用不超过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
Retrieval-based-Voice-Conversion-WebUI(下称 RVC)是一个基于 VITS 的语音转换(变声)工具,靠"top1 检索替换源特征"来减少音色泄漏,官方推荐用至少 10 分钟低底噪语音即可训出可用模型。跟着本文操作,你可以完成三件事:准备一份最小训练集、在网页界面里跑通"训练 + 推理"全流程、并用推理界面听到第一段换音色后的音频。
先看清楚你会遇到的两个典型现象
第一次接触变声模型的人,通常卡在两个地方。
一是"训练完听不出来像谁":推理结果既不像目标人物,也丢了你自己录的声音特征,音色变得含糊。这多半是训练数据太少或太脏,模型没有抓住目标音色的稳定特征。二是"换了音色却漏了源音色":结果里残留了输入音频说话人的味道,社区把这种现象叫"音色泄漏"。RVC 的检索机制就是冲着第二个问题来的,第一个问题则主要靠数据质量解决——所以准备数据是整个流程里最值得花时间的一步。
最小数据准备:时长、底噪与切分
官方文档给出的训练集建议是 10 分钟到 50 分钟;如果音质高、底噪低且音色有个人特色,5 到 10 分钟也能出效果;1 到 2 分钟的成功案例存在,但要求音色特征非常鲜明,不具备普适参考价值,1 分钟以下不建议尝试(见 docs/cn/faq.md)。
数据准备上注意三点:
- 低底噪优先:录音环境安静、无背景音乐和电流声。底噪大的数据训出来音质上限很低。
- 音色统一:同一个声音来源,别把直播混响、清唱、朗读混在一起。
- 单条音频别太长:过长的音频文件在预处理阶段容易吃掉内存,切成几段存放更稳妥。
如果你手里只有完整歌曲,可以先用 WebUI 里的 UVR5 选项卡分离出纯人声,再进入训练流程。
环境准备与首次启动
需要 Python 3.8 以上。安装依赖按你的显卡选一份清单:N 卡用 requirements.txt,Windows 上的 A 卡/I 卡用 requirements-dml.txt,Linux 上 ROCm 用 requirements-amd.txt,IPEX 用 requirements-ipex.txt。N 卡的标准流程大致是:
pip install torch torchvision torchaudio pip install -r requirements.txt依赖之外还有几样必备物料,缺失时启动会直接失败:
- 预训练底模:
assets/hubert/、assets/pretrained/(想训 v2 模型还要assets/pretrained_v2/)和assets/uvr5_weights/。仓库提供下载脚本 tools/download_models.py,也可以直接跑tools/dlmodels.sh(Windows 用tools/dlmodels.bat)。 - ffmpeg:Windows 用户把 ffmpeg.exe、ffprobe.exe 放到项目根目录即可。
- rmvpe.pt:使用 RMVPE 音高提取算法时要放到根目录。
全部就绪后启动网页界面:
python infer-web.py启动脚本会自动检测设备并初始化配置,逻辑在 configs/config.py 里:显存小于 4G 时自动调小预处理参数,老架构显卡(1060、1080、P40 等)会自动切到 fp32,省得你手动改配置。浏览器打开本地 7865 端口就是操作界面。
从训练到听到结果:走通一遍最小流程
在网页界面里,一次完整任务分四步。
第一步,切分与预处理。把训练集音频放进实验目录,点"一键训练"会自动完成:切分音频、提取音高、提取特征、训练模型、训练索引。切分参数(如每段时长、静音阈值)在 configs/v1/48k.json 这类配置里,默认值对普通录音可用。
第二步,训练模型。训练脚本的入口在 infer/modules/train/train.py。关键参数是总轮数 total_epoch:如果训练集音质差、底噪大,20 到 30 轮就够;音质高、底噪低、时长充足时,官方说 200 轮也没问题。
第三步,训练索引。模型和索引是两样东西:模型负责"像不像目标音色",索引负责"推理时从训练集里借特征防泄漏"。一键流程末尾会自动生成added_开头的索引文件;如果卡住没生成,单独点一次"训练索引"即可。
第四步,推理听结果。选模型 pth 和索引文件,输入一段音频,调整音高和 index rate,点推理。常见音高提取算法各有所长:
| 算法 | 适用场景 |
|---|---|
| RMVPE | 官方推荐,效果好、资源占用低,需额外下载 rmvpe.pt |
| PM | 输入是歌声时提速明显 |
| Harvest | 低音效果好,但速度慢 |
| CREPE | 效果好,但 GPU 占用高 |
实时变声则用 tools/rvc_for_realtime.py(对应 go-realtime-gui.bat):官方数据是端到端 170ms 延迟,配合 ASIO 设备可到 90ms,具体取决于硬件驱动。
它为什么好用:top1检索与index rate
RVC 的命名就来自核心机制——检索。用白话说:推理时系统会去你的训练集特征库里找最接近当前输入的那条特征,把它"借"来替换源特征。类比一下,就像配音演员换嗓子前先把原唱的录音多听几遍,照着原声的音色条件去配,而不是凭自己习惯的音色去"演"原唱。这样就能从根源上压住源音色往结果里漏。
控制这个机制力度的是index rate(检索特征占比):
- 调到 1:理论上完全用训练集特征,不泄漏源音色,但音质会偏向训练集——训练集比输入音质量差时,音质会被拉低。
- 调到 0:完全不用检索,音质跟着输入走,但失去了保护训练集音色的能力。
- 中间值:在"像目标"和"好听"之间取平衡,具体效果以试听为准。
顺带一提:如果训练集本身音质高、时长长,把 total_epoch 调高之后,模型自身就不太会往底模或输入源靠,此时 index rate 和索引文件的重要性都会下降,分享模型时甚至可以不附索引。
最小可运行验证:命令行级别
不想用网页界面时,可以走 CLI。先跑通一次 WebUI 流程,控制台会打印出预处理和训练所用的完整命令行,直接照抄复现即可。推理侧官方给了一个参考脚本 myinfer.py,参数含义见 docs/cn/faq.md 的 Q7 条目;仓库里 tools/infer_cli.py 也提供了命令行推理的入口。验证成功的标志很简单:输入一段自己 1 分钟的录音,几秒后输出一条音色明显改变、但咬字和节奏与输入一致的音频。
常见坑位与对策
现象:ffmpeg error 或 utf8 error。原因:大概率不是 ffmpeg 本身的问题,而是音频路径带空格、括号等符号,或训练集路径含中文导致写 filelist.txt 时报 utf8 错误。处理:把音频挪到纯英文、无空格的路径下重试。
现象:训练时报 Cuda out of memory。原因:显存不够,常见于 4G 以下显存的显卡(1060 3G 这类基本放弃,4G 还能救)。处理:训练阶段把 batch size 往下调;推理阶段调小 configs/config.py 末尾的 x_pad、x_query、x_center、x_max 四个参数。启动时脚本也会自动根据显存大小做一轮降级。
现象:训练结束没有added_开头的索引文件。原因:训练集太大,添加索引那一步卡住;另外若提示 "Training is done",说明模型已训好,紧邻的报错是假报错。处理:单独再点一次"训练索引",仓库已用批量 add 索引的方式缓解内存压力。
下一步可以做什么
流程跑通之后,比较自然的扩展方向是模型融合:在 ckpt 处理选项卡里用 ckpt-merge 把两个已训模型按比例合并,可以在不重新训练的前提下微调音色。合并比例的取舍和更多参数细节,建议对照 docs/cn/faq.md 与官方文档按自己的数据实际试听确定。
【免费下载链接】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),仅供参考