Atri Website

Back

GPT-SoVITS 训练中 GPT 与 SoVITS 模型的选取策略#

本文基于日语角色 ATRI(约 827 条语音,约 1.5 小时数据)在 V100-32GB 上使用 v2ProPlus 架构、开启 DPO 训练的实际调参经验总结。

1. GPT 与 SoVITS 的分工#

GPT-SoVITS 的推理链路中,GPT 和 SoVITS 各司其职:

输入文本 → BERT → 文本特征 → GPT → 语义 token 序列 → SoVITS → 音频波形
                                ↑                        ↑
                          决定"怎么说"              决定"听起来像谁"
                      (韵律/停顿/语速/语气)      (音色/声线/音质)
plaintext
  • GPT:接收 BERT 文本特征,自回归预测语义 token 序列。它决定的是”怎么说”——韵律、停顿、语速、语气、情感节奏。
  • SoVITS:接收语义 token 序列,重建音频波形。它决定的是”听起来像谁”——音色质感、声线特征、音质清晰度。

两者的训练轮数(epoch)分别影响各自负责的维度,且互不替代。因此在评估模型效果时,必须分开考量。

2. 训练轮数对模型的影响#

2.1 GPT 侧:epoch 主要影响韵律与泛化#

阶段表现典型症状
欠拟合(epoch 过小)韵律平淡,情感表现力不足音色相似度低,语调单一
最佳区间韵律自然,情感跟随能力好停顿、语速、语气符合文本语境
过拟合(epoch 过大)泛化能力下降吞字、复读、拖长音,遇到训练集外文本韵律崩坏

GPT 模型在训练过程中会越来越强地拟合训练数据中的语义 token 转移模式。适度时韵律自然、情感跟随准确;过度时模型对训练集”背诵”太好,推理遇到未见过的文本组合就容易出问题。

值得注意的是,GPT 的 epoch 并非单调递增地变好或变差。在小数据集微调中,受学习率调度、损失曲面局部波动、DPO 正负例对比等因素影响,某些 epoch 可能恰好落在不稳定的中间状态。例如本项目中 GPT e8、e12、e14 表现都不错,但 e10 却明显变差——这并非整体过拟合,而是训练过程中的局部波动。

2.2 SoVITS 侧:epoch 主要影响音色与音质#

阶段表现典型症状
欠拟合(epoch 过小)音色偏底模,还原不足拖长音、发音含糊
最佳区间音色保真度高,音质清晰声线特征到位,辅音元音清晰
过拟合(epoch 过大)音质劣化电流音、高频伪影、底噪被学入

SoVITS 直接生成音频波形,过拟合后它会把训练音频中的底噪、气息声甚至录音环境的细微特征都学进去,反而降低生成质量。与 GPT 不同,SoVITS 的过拟合更多体现在音质而非韵律上。

2.3 简要总结#

epoch 小影响”学不够”,epoch 大影响”学过头”——两侧过拟合的症状不同:GPT 过拟合坏韵律,SoVITS 过拟合坏音质。

3. 如何评估与选取模型#

3.1 核心原则:控制变量#

GPT 和 SoVITS 各有独立的 epoch 参数,两者的效果是叠加的。如果同时更换两个模型,无法判断问题出在哪一侧。正确的评估方式是:

  1. 固定 SoVITS,逐个试听不同 GPT epoch——对比韵律、停顿、语速、情感表现力
  2. 固定 GPT,逐个试听不同 SoVITS epoch——对比音色、音质、清晰度、稳定性
  3. 分别选出各自最佳后,再交叉组合验证

3.2 GPT 模型的评估维度#

维度关注点判断方法
韵律自然度停顿位置、语调走向是否合理用长句和复杂句式测试
情感跟随能力切换不同情感参考音频时,语气是否相应变化分别用开心、悲伤、平静的参考音频测试同一句文本
泛化能力面对训练集外文本的表现用训练集中未出现的句子和词汇测试
稳定性多次推理同一句话,结果是否一致同一输入重复推理 3-5 次

GPT epoch 越大,情感还原度越高但泛化越窄。对于与大模型进行语音通话的场景(输入文本不可预测),应在情感表现力和泛化能力之间取平衡。

3.3 SoVITS 模型的评估维度#

维度关注点判断方法
音色保真度是否像目标角色与原始参考音频对比
音质清晰度辅音/元音是否清晰,有无电流音关注齿音、鼻音等细节
稳定性不同文本/情感下音质是否一致用多种场景测试,观察是否有突然劣化

SoVITS 的判断相对直观:听起来干净、像目标角色就对了。e4 以下有拖长音说明欠拟合,出现电流音说明过拟合。

3.4 save_every_epoch 的重要性#

由于 epoch 效果并非单调变化,save_every_epoch 设为 2 是关键。保存频率越高,可供对比的 checkpoint 越多,越容易找到最佳点。训练结束后逐个试听,挑选最佳——不一定是最后一轮。

4. 实际调参记录#

4.1 训练配置#

参数GPTSoVITS
架构版本v2ProPlusv2ProPlus
batch_size8(开 DPO)18
total_epoch1616
save_every_epoch22
DPO开启
底模s1v3.ckpts2Gv2Pro.pth

4.2 GPT 各 epoch 表现#

epoch表现备注
e2欠拟合,韵律不足已删除
e4偏弱已删除
e6欠拟合已删除
e8韵律自然,泛化好保留
e10情感丰富,与 e12 差距不大保留
e12情感丰富,表现稳定保留
e14搭配 SoVITS e10 表现一般已删除
e16泛化收窄已删除

4.3 SoVITS 各 epoch 表现#

epoch表现备注
e2拖长音,欠拟合已删除
e4拖长音,欠拟合已删除
e6偏弱已删除
e8音质尚可,但搭配高 epoch GPT 时有电流音和微拖长已删除
e10音色最像,容错性好,搭配任何 GPT epoch 均无电流音保留,唯一选择
e12表现不理想已删除
e14音质开始下降已删除
e16过拟合趋势已删除

4.4 完整交叉测评#

GPTSoVITS评价
e8e8较好,没有明显缺点,但音色稍浅
e10e8长句有电流音,且声音拖长
e12e8音质、语调更好,但偶尔有电流音和微拖长(约 0.2s)
e14e8一般
e10e10情感丰富,没有吞字等缺点(十分好)
e12e10情感足够丰富,无电流等缺点
e14e10一般
e8e10音色更像,无明显拖音

关键发现:GPT e10/e12 搭配 SoVITS e8 时出现的电流音,在换用 SoVITS e10 后完全消失。这说明电流音并非 GPT 侧的问题,而是 SoVITS e8 对某些语义 token 模式的还原能力不足,SoVITS e10 的容错性更好。

4.5 黄金组合#

优先级GPTSoVITS特点适用场景
主力e10e10情感最丰富,无任何缺点情感对话(首选)
备选 Ae12e10情感丰富,表现稳定通用对话
备选 Be8e10音色最像,泛化最好情感不敏感的日常对话

对于需要根据文本中不同 emotion 标签切换参考音频的场景,GPT e10 + SoVITS e10 是最佳选择——情感跟随能力最强且完全没有音质问题。GPT e10 与 e12 差距不大,但 e10 在”十分好”的评价下胜出。

5. 经验总结#

  1. GPT 和 SoVITS 要分开评估,控制变量逐个对比,切勿同时换两个模型
  2. 必须做交叉测评——单独评估某一侧可能得出错误结论(如电流音被误归因于 GPT,实际是 SoVITS 容错性不足)
  3. epoch 效果非单调,小数据集下存在局部波动,必须逐个试听而非盲信最后一轮
  4. GPT 管韵律、SoVITS 管音质,过拟合的症状不同,排查问题时先定位是哪一侧
  5. SoVITS 的容错性很关键——高 epoch SoVITS 能更好地处理 GPT 产出的各种语义 token 模式,减少电流音和拖长等伪影
  6. save_every_epoch 设小(建议 2),提供更多候选 checkpoint
  7. 根据应用场景选组合:重泛化选低 epoch GPT,重情感选高 epoch GPT;SoVITS 选容错性和音色还原的平衡点
  8. DPO 对 GPT 训练有显著帮助,能减少吞字和复读问题,V100-32GB 显存可以支持 batch_size=8
  9. 注意架构一致性 —— v2Pro 和 v2ProPlus 的权重目录不同,推理时必须确保 GPT 和 SoVITS 使用同一架构版本,混用会导致评估结果不可靠
GPT-SoVITS 模型选择完全指南 | 如何找到最佳训练 Epoch
Author Juyao Huang
Published at February 19, 2026
Comment seems to stuck. Try to refresh?✨