如何用 RVC ckpt 处理从训练 checkpoint 提取 60+MB 可分享的推理模型?
【免费下载链接】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)里训练完成后,logs/实验名目录下会留下一个几百 MB 的 pth 文件。这个文件不是用来分享或推理的——FAQ Q4 明确说明:logs 下存储的 pth 是为了保存实验状态、供复现和继续训练;如果你把它复制到 weights 文件夹强行用于推理,可能会出现f0、tgt_sr等各种 key 不存在的报错。真正用来分享的,是 weights 文件夹下大小为 60+MB 的 pth 文件。
本文的操作目标就是:通过 WebUI「ckpt处理」选项卡最下面的「模型提取」功能,从训练保存的G_*.pthcheckpoint 提取出 60+MB 的可分享推理模型,并验证它已出现在音色列表中可用于推理。前提是你已按 README 完成环境配置(Python 3.12、安装依赖、下载底模)并能打开 WebUI,且训练已经产生过 checkpoint(训练中途或完成后的logs/实验名下有 G 开头的 pth 文件均可)。
先分清两类 pth 文件
| 文件 | 位置 | 用途 |
|---|---|---|
| 大 checkpoint(几百 MB) | logs/实验名/G_*.pth | 保存实验状态,供复现、继续训练 |
| 小模型(60+MB) | assets/weights/(即 weights 文件夹) | 分享、用于推理 |
提取操作把前者转成后者:process_ckpt.py 中的extract_small_model会过滤掉enc_q相关权重、将权重转为半精度,并按你选择的采样率写入对应的config,最终保存到assets/weights/<保存名>.pth。
在「ckpt处理」选项卡执行提取
打开 WebUI,进入「ckpt处理」选项卡,滚动到最下面的「模型提取」区域(webui.py 中标注为"模型提取(输入logs文件夹下大文件模型路径),适用于训一半不想训了模型没有自动提取保存小文件模型,或者想测试中间模型的情况")。依次填写:
- 模型路径:填
logs/实验名下 G 开头的大文件。文档中的默认示例为E:\codes\py39\logs\mi-test_f0_48k\G_23333.pth,替换为你自己的实际路径即可。 - 保存名:小模型保存的文件名(最终保存为
assets/weights/<保存名>.pth)。 - 目标采样率:
32k/40k/48k三选一,界面默认40k。选哪个应与该 checkpoint 训练时使用的采样率一致。 - 模型是否带音高指导:
1是0否,默认1。 - 模型版本型号:
v1或v2,默认v2。 - 要置入的模型信息:可选。留空时代码默认写入"从训练检查点提取的模型"。
点击「提取」。点击后「输出信息」显示"成功"即表示提取完成(失败时会显示异常堆栈)。
关于采样率、音高、版本这三项,FAQ 说可以手工选择,也可以自动:当模型路径所在的logs/实验名目录下存在train.log时,填入模型路径后界面会自动从 train.log 读取并回填目标采样率、是否带音高和模型版本(实现见 webui.py 的change_info_);找不到 train.log 或解析失败时不会自动填写,需要按训练时的实际设置手工选择。
验证提取结果
按 FAQ Q4 与 webui.py 的界面逻辑,验证有两步:
- 文件出现:提取完成后,weights 文件夹(
assets/weights/)下会出现一个新的 60+MB 的 pth 文件,文件名即你填的保存名。 - 进入推理列表:点击「刷新音色列表」按钮,该模型出现在可选音色中,即可选择用于推理。
如果想核对模型元信息,可以用同一选项卡的「查看模型信息」功能(仅支持 weights 文件夹下提取的小模型文件):填小模型路径,点「查看」,输出信息会显示模型信息、采样率、是否使用音高指导、版本四项(对应 process_ckpt.py 的show_info)。若此处显示的采样率、音高与你的训练设置不符,说明提取时选项选错,重新提取并核对选项即可。
适用场景与限制
- 推理训练中间保存的 pth:FAQ Q12 给出的答案就是"通过 ckpt选项卡最下面提取小模型",与本文是同一操作。想测试不同 epoch 的中间模型时,也可以对不同的
G_*.pth各提取一份,用不同保存名区分。 - 训练时自动提取:更新日志 提到 WebUI 支持"按照指定频率保存提取的小模型",用途是尝试不同 epoch 的推理效果而不必每次都手工从大 checkpoint 提取;若你训练时已启用该项,weights 下可能已有小模型,提取中间 checkpoint 只是补充手段。
- 日志大文件不能直接推理:再次强调,几百 MB 的 logs pth 直接丢进 weights 使用会报
f0、tgt_sr等 key 不存在的错误,必须经此提取流程。 - 分享建议:FAQ Q4 指出用于分享的模型是 weights 下 60+MB 的 pth;后续版本计划将
weights/exp_name.pth和logs/exp_name/added_xxx.index合并打包成 zip 分享,届时 zip 才是分享物,单独分享 pth 只适用于想换机器继续训练的情况。
提取并确认音色列表可选之后,这个模型文件就可以直接拿去推理或分享了。
【免费下载链接】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),仅供参考