RVC 训练 total_epoch 怎么根据训练集音质与时长选择?
【免费下载链接】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)里训练一个音色模型时,总训练轮数total_epoch是 step3 训练设置中最影响效果的参数之一。项目自带的 FAQ 给出了明确的取值原则:取值取决于训练集的音质和时长,而不是一味调大。本文说明这两类训练集分别该怎么设,以及在 WebUI 里如何填、怎么确认训练完成。
先判断你的训练集属于哪一类
docs/cn/faq.md 的 Q9 只给了两条分支,先对照自己手里的数据:
| 训练集条件 | total_epoch 建议 | 文档说明 |
|---|---|---|
| 音质差、底噪大 | 20~30 足够 | 调太高也没用,底模音质无法带高你的低音质训练集 |
| 音质高、底噪低、时长多 | 可以调高,200 是 ok 的 | 训练速度很快,高音质训练集通常意味着显卡条件也不差,多花训练时间问题不大 |
时长上可以参考同一份 FAQ 的 Q10 来判断"时长多"的门槛:推荐 10min 至 50min;音质高、底噪低且音色统一时多多益善;高水平训练集(精简且音色有特色)5min 至 10min 也可以。Q11 还补充了一条与total_epoch直接相关的结论:训练集优质、时长多时可调高total_epoch,此时模型本身不太会引用推理源和底模的音色,很少存在"音色泄露"问题,index_rate也就不重要,甚至可以不建立/分享 index 索引文件。
判断路径:先确认训练集音质和底噪水平,再看时长是否达到 Q10 的推荐区间,按上表落一个值。两类之外的极端数据(如 1min 以下)文档没有建议,不建议参考。
在 WebUI 中设置 total_epoch
打开 WebUI 后,训练选项卡分三步:step1 填实验名、step2 处理数据集并提取音高与特征、step3 填写训练设置并训练。total_epoch在 step3 里,webui.py 中对应的滑块范围是 2~1200,默认值 20;docs/cn/Changelog_CN.md 记录 20230409 版本将上限从 100 解锁到 1000、默认值从 10 提到 20。
操作要点:
- step2 完成后,在 step3 的"总训练轮数total_epoch"滑块上按上表取值。
- 同一行的"保存频率save_every_epoch"默认是 5,即每隔若干 epoch 在
logs/实验名/下保存一次G_xx.pth、D_xx.pth大检查点;FAQ Q2 提到大 checkpoint 体积较大,若只想保留最新一份可勾选"是否仅保存最新的ckpt文件以节省硬盘空间"。 - 点击"一键训练"按钮(会连续执行 step2b、训练模型和训练特征索引三步);如果只想分步执行,也可以点"训练模型",训练完成后再点"训练索引"。
不经过 WebUI 命令行训练时,total_epoch对应的参数是-te(--total_epoch),定义在 train/utils.py 中,为必传整数参数。FAQ Q7 的提示是:可先跑通 WebUI,消息窗内会显示数据集处理和训练所用的命令行,再照着改。
确认训练完成与产物
训练进入最后阶段时,train/train.py 在 epoch 达到total_epoch后会输出日志"训练已完成,正在保存最终模型",随后保存最终检查点并退出程序(文档中的退出行为即 Q13 所说的训练结束)。FAQ Q2 给出的成功判据是:显示 "Training is done. The program is closed." 则模型训练成功,后续紧邻的报错是假的。
训练结束后按用途检查两类产物:
rvc_root/logs/实验名/下的大 pth 文件:存储实验状态,用于复现和继续训练,不用于分享推理(FAQ Q4)。weights文件夹下 60+MB 的 pth 文件:用于分享和推理的模型。如果只有大 checkpoint,需用 ckpt 选项卡底部的"ckpt小模型提取"提取出小模型(FAQ Q4)。
推理时用训练好的模型 + index 文件验证效果:若发现结果音色偏向底模/推理源而不是训练集,属于 FAQ Q11 描述的"音色泄露"现象,对应手段是调高index_rate或在训练集优质时长多的前提下提高total_epoch重训。
两个边界情况
- 中断与继续训练(FAQ Q13):现阶段只能关闭 WebUI 控制台(双击 go-webui.bat 启动的那个窗口)后重启程序,网页参数需刷新重填;用相同网页参数点"训练模型",会接着上次的 checkpoint 继续训练。所以第一次把
total_epoch设低了也不用删实验,重启后可接着继续。 - 中途加数据(FAQ Q15):所有数据新建一个实验名,把上一次最新的 G 和 D 文件拷贝到新实验名下,再对新实验名一键训练,会继续上次进度。注意 Q18 的警告:不要中途变更采样率继续训练,一定要变更就换实验名从头训练(可以把上次提取的音高和特征 0/1/2/2b 文件夹拷过去加速)。
总结取值方法
- 训练集音质差、底噪大:
total_epoch设 20~30,别指望靠多训练轮次救音质。 - 训练集音质高、底噪低、时长达到 10min 以上:可以调高,200 在文档中是明确可行的取值;此时 index 文件甚至可以省略。
- 设好后在 step3 填值并一键训练,以 "Training is done. The program is closed." 和
weights下 60+MB 的 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),仅供参考