RVC变声器14个高频报错的实战排查指南与避坑清单
【免费下载链接】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 分钟的低底噪音频就能训练出可用的变声模型。本文覆盖从安装部署、数据预处理、模型训练到推理使用的 14 个高频故障,按环节分组、按小节闭环。打开本文后,先定位你屏幕上出现的报错,跳到对应小节,照「修复步骤」逐条执行即可;每个小节都给出报错原文、根因和一条可落地的命令,无需通读。
安装部署阶段
ffmpeg 读不了音频或路径报 utf8 error 的修复步骤
报错表现:处理音频时报ffmpeg error,或训练集写入filelist.txt时报utf8 error。
根因:多数不是 ffmpeg 没装,而是音频路径里带空格、括号或中文,ffmpeg 解析路径失败。
修复步骤:
- 把数据集整个目录改到纯英文、无空格、无括号的路径下
- 用
ffmpeg -version确认已安装;Windows 用户把ffmpeg.exe与ffprobe.exe放到项目根目录
ffmpeg -version # 确认 ffmpeg 可用避坑提醒:
- 数据集目录统一用英文命名,避免中文与全角符号
- 把 ffmpeg 加入系统环境变量,保证全局可调用
启动报 OSError: llvmlite.dll 找不到的修复步骤
报错表现:启动 WebUI 时抛出OSError: Could not load shared object file: llvmlite.dll。
根因:Windows 缺少 Visual C++ 运行库,llvmlite 依赖的底层 dll 加载失败。
修复步骤:
- 安装 64 位系统的
vc_redist.x64.exe运行库 - 重装 llvmlite 并清缓存
pip install llvmlite --no-cache-dir # 强制重装 llvmlite避坑提醒:
- 安装运行库后重启 WebUI 再试
- 依赖统一用
requirements.txt安装,避免版本冲突
WebUI 弹 Expecting value: line 1 column 1 的修复步骤
报错表现:页面弹窗Expecting value: line 1 column 1 (char 0)。
根因:客户端或服务器端开了代理(如 http_proxy/https_proxy),JSON 响应被代理截断。
修复步骤:
- 关闭系统局域网代理与全局代理
- 云服务器上的代理变量也要清掉
unset http_proxy && unset https_proxy # 清除 Linux/macOS 代理避坑提醒:
- 改配置文件前先备份
configs目录 - 网络不稳时不要跑模型下载
浏览器提示 Connection Error 打不开界面的修复步骤
报错表现:浏览器访问端口却提示Connection Error,或页面一直转圈。
根因:启动 RVC 的黑色控制台被关掉了,服务随之终止。
修复步骤:
- 确认控制台窗口保持开启(最小化即可,别关)
- 检查端口占用并重启服务
python infer-web.py --port 7897 # 用指定端口重启 WebUI避坑提醒:
- 不要同时跑多个 RVC 实例
- 换
--port值避开端口冲突
⚠️注意:控制台是 WebUI 的宿主进程,窗口一关服务立刻掉线,这是 Connection Error 的头号原因。
数据与预处理阶段
Tensor 尺寸不匹配(size must match)的修复步骤
报错表现:训练时报The size of tensor a (24) must match the size of tensor b (16)或 expanded size 报错。
根因:wavs16k里混进了个别显著偏小的坏音频文件,切分后帧数对不齐。
修复步骤:
- 进
logs/实验名/1_16k_wavs找出大小明显偏小的文件删掉 - 不要中途改采样率续训;要换采样率就换新实验名从头训
避坑提醒:
- 预处理前检查音频完整性,剔除过短片段
- 同一批数据保持采样率、帧长一致
→ 涉及数据集组织,见「ffmpeg 读不了音频或路径报 utf8 error 的修复步骤」
训练阶段
训练或推理报 CUDA out of memory 的修复步骤
报错表现:训练或推理时报Cuda out of memory,显存不够。
根因:batch size 过大,或推理时检索参数x_pad/x_query/x_center/x_max偏高。
修复步骤:
- 训练把「batch size」调到 1
- 推理按显存改
configs/config.py里的四个参数,4G 显存用1 / 5 / 30 / 32
grep -n "x_pad\|x_max" configs/config.py # 查看当前显存档位参数避坑提醒:
- 4G 以下显存建议转 CPU 推理
- 旧卡(1060/1070/1080)会被强制 fp32,属正常现象
→ 显存吃紧也常和进程数相关,见「训练时文件/内存 error 的修复步骤」
一键训练结束找不到 added 索引文件的修复步骤
报错表现:日志显示Training is done. The program is closed.,却没有added_开头的.index。
根因:训练其实成功,是后续「添加索引」这一步因内存不足卡住了(报错是假的)。
修复步骤:
- 回到训练选项卡,再次点击「训练索引」按钮
- 训练集太大时,用批处理
tools/infer/train-index.py分批加索引
避坑提醒:
- 索引文件可达数百 MB 到数 GB,先留足磁盘空间
- 训练完成后等程序走完索引再关窗口
训练时文件/内存 error 的修复步骤
报错表现:预处理或训练阶段报文件读取错误、内存溢出(memory error)。
根因:「提取音高和处理数据使用的 CPU 进程数」开得太多,内存被撑爆。
修复步骤:
- 在设置里把 CPU 进程数拉低到核心数的一半
- 手工把过长的训练音频切短
避坑提醒:
- 单段音频别太长,切到几秒
- 关掉其它吃内存的程序再训
提示:进程数并非越大越快,8 核设 4 通常比设满更稳,内存紧张时尤其明显。
total_epoch 和 index_rate 怎么调的修复步骤
报错表现:不是报错,而是「训完效果不好、音色跑偏或音质上不去」。
根因:epoch 和 index_rate 与训练集质量不匹配,导致过拟合或音色泄露。
修复步骤:
- 音质差、底噪大的训练集,
total_epoch设 20~30 即可 - 音质高、时长多的训练集可提到 200;
index_rate设 1 最防泄露,设 0.6~0.8 求平衡
避坑提醒:
- 推荐 10~50 分钟数据,5~10 分钟精简高质量也够用
- 高质量训练集可少依赖 index,甚至不建索引
→ 调完参数跑不动时,先排除显存问题,见「训练或推理报 CUDA out of memory 的修复步骤」
推理与模型使用阶段
推理列表里看不到新训音色的修复步骤
报错表现:训练完成后,推理界面下拉框里没有刚训的音色,或选了没反应。
根因:音色列表未刷新,或模型没真正训完。
修复步骤:
- 点「刷新音色」按钮,等 2~3 秒
- 确认
weights里出现了约 60MB 的.pth文件;没有就是没训成,查logs/实验名日志
避坑提醒:
- 训练全程别关控制台
- 定期备份
weights里的模型
→ 若你只拿到了几百 MB 的日志文件,见「分享/使用模型时 f0 等 key 缺失的修复步骤」
分享或使用模型时 f0、tgt_sr 等 key 缺失的修复步骤
报错表现:把logs下几百 MB 的.pth直接拖进weights推理,报f0、tgt_sr等 key 不存在。
根因:logs/实验名存的是含完整训练状态的复现文件,不是给推理用的轻量模型。
修复步骤:
- 进「ckpt」选项卡,把输入路径填
G开头的那个文件 - 选择是否携带音高、目标采样率,点「ckpt 小模型提取」,在
weights得到 60+MB 的.pth - 分享时只发
weights/实验名.pth(配合.index),别发整个 logs
避坑提醒:
- 推理模型只认
weights里的轻量.pth - 换机器续训才需要搬
logs里的完整 checkpoint
想用训练中间保存的 G_xxx.pth 推理的修复步骤
报错表现:训练中断或想提前试听,直接加载G_500.pth却报 key 缺失。
根因:中间 checkpoint 同样带训练状态,不能直接推理。
修复步骤:
- 进「ckpt」选项卡,选实验名与迭代数(如
G_500) - 点「提取」,选择是否携带音高与采样率信息
避坑提醒:
- 训练时开启定期保存中间模型,便于随时提取
- 续训:新建实验名,把最新的
G/D拷过去再一键训练
→ 提取完仍看不到音色,见「推理列表里看不到新训音色的修复步骤」
不用 WebUI 用命令行跑推理的修复步骤
报错表现:无图形界面的服务器上想批量/自动推理,找不到入口。
根因:没用到仓库自带的tools/infer_cli.py。
修复步骤:
- 先用 WebUI 跑通一遍,记下参数
- 用
infer_cli.py传入模型名、索引、音高方法等
python tools/infer_cli.py --f0up_key 0 --input_path in.wav --index_path added_IVF677_Flat_nprobe_7.index --f0method rmvpe --opt_path out.wav --model_name mymodel --index_rate 0.66 --device cuda:0 # 命令行推理避坑提醒:
--model_name是weights里的模型名,不是完整路径- 长任务用 nohup/screen 挂后台跑
✅提示:
--f0method支持rmvpe(推荐,最快最准)、harvest、pm,效果与资源占用依次不同,优先选 rmvpe。
高频问题速查表
| 问题现象 | 根因 | 一句话解法 |
|---|---|---|
| ffmpeg / utf8 error | 路径含空格或中文 | 数据集改纯英文路径,确认 ffmpeg 已装 |
| OSError: llvmlite.dll | 缺 VC++ 运行库 | 装 64 位运行库后重装 llvmlite |
| Expecting value: char 0 | 开了代理 | 关闭代理并 unset http/https_proxy |
| Connection Error | 控制台被关 | 保持控制台开启,--port避冲突 |
| tensor size 不匹配 | 混入过短坏音频 | 删掉wavs16k里偏小的文件 |
| CUDA out of memory | 显存不足 | 训练 batch=1,推理调小 x_pad/x_max |
| 训练完没有 added 索引 | 内存不足卡住 | 重按「训练索引」或批处理加索引 |
| 文件/内存 error | 进程数太多 | 把 CPU 进程数降到核心数一半 |
| 推理看不到音色 | 列表未刷新/没训成 | 点「刷新音色」,确认 weights 有 60MB pth |
| f0/tgt_sr key 缺失 | 误用 logs 大文件 | 用「ckpt 小模型提取」生成轻量 pth |
| 中间 G_xxx.pth 报错 | checkpoint 非推理格式 | ckpt 选项卡提取小模型 |
| 无界面批量推理 | 未用命令行入口 | 用tools/infer_cli.py传参推理 |
以上是 RVC 从装到用的全部高频坑,按环节定位、照步骤执行基本都能解掉。若遇到本文没覆盖的报错,建议查阅仓库内的中文 FAQ 与训练小贴士文档,或在开发者社区贴出控制台与 WebUI 截图求助。
【免费下载链接】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),仅供参考