☰
GPT-SoVITS “hps is not defined“ 报错修复:5 分钟定位并恢复语音合成
2026/10/7 2:00:33 网站建设 项目流程

GPT-SoVITS "hps is not defined" 报错修复:5 分钟定位并恢复语音合成

【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS

在 GPT-SoVITS WebUI 里合成语音,弹出NameError: name 'hps' is not defined时,先别急着改变量本身——它多半是启动阶段某次静默失败留下的"余波"。按下面三条分支排查,5 分钟内能定位根因并恢复合成。

hps存的是 SoVITS 模型的超参数(hparams,可以理解为模型运行时的配置文件),推理时采样率等关键设置都从它读取。它只在 inference_webui.py 的change_sovits_weights里、权重文件加载成功之后才被赋值——这一步只要没跑完,hps 永远是未定义状态,后面所有读它的推理代码都会炸出 NameError。

🌳 报错出现在哪个环节?三条分支排查

堆栈通常都指向 inference_webui.py 里计算hps.data.sampling_rate的那几行(比如 842 行,用来分配 0.3 秒的静音垫音),报错位置长得像,但根因取决于触发时机。对号入座:

  • 点"合成语音"立刻报 hps 未定义→ 分支 A(最常见)
  • 切换过权重下拉框之后才报错→ 分支 B
  • 更新代码后依然报错→ 分支 C

分支 A:SoVITS 模型在启动时就加载失败了

先看 inference_webui.py 第 403-406 行:

try: next(change_sovits_weights(sovits_path)) except: pass

这个裸except会把启动时的加载异常整个吞掉。所以 SoVITS 文件加载失败时控制台毫无提示,直到你点合成,才第一次看见 NameError。

为什么加载会失败?最常见的是 PyTorch 2.6 及以上跑旧代码。torch 2.6 把torch.load()的默认值改成了weights_only=True(只允许加载张量权重,禁止反序列化任意 Python 对象),而 SoVITS 检查点里带的 hparams 配置对象恰好是"任意对象",unpickling 直接失败。

修复步骤:

  1. 把代码更新到最新 commit——新代码在load_sovits_new里已显式加了weights_only=False。本地没有仓库的话,先git clone https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS
  2. 暂时没法更新就把 torch 降到 2.6 以下(如 2.4.x)应急,这只是权宜之计
  3. 更新后重看启动日志,若出现UnpicklingError或WeightsOnlyUnpickler字样,即可坐实本分支根因

分支 B:切换权重后才报错——换回原组合复核

在下拉框选新的 SoVITS 文件会重新执行change_sovits_weights,hps 只有加载成功才赋值。训练版本不匹配(v1 与 v2/v3 文件混用)或文件路径写错,都会在这一步抛异常,hps 依旧没定义。

  1. 核对./weight.json里记录的路径是否指向存在的文件
  2. 切回之前能正常合成的 GPT + SoVITS 权重组合验证
  3. 新下载的权重,对照模型目录里的文件清单和命名逐一检查

分支 C:更新代码后还报错——两个高频原因

  1. 代码不完整:GPT_SoVITS/text/LangSegmenter/目录缺失会导致启动时ModuleNotFoundError,异常被吞后回到分支 A 的症状。换官方最新完整整合包即可
  2. 版本组合漂移:Python 3.9.x + PyTorch 2.6 + 最新代码是最稳的组合,混用旧依赖容易出现这类"看起来不相关"的错

三步验证恢复

  1. 重启 WebUI,控制台应输出loading sovits_vX ...和loading vocoder
  2. 确认weight.json里 GPT / SoVITS 路径均为最新的权重文件
  3. 用 3~10 秒的参考音频合成一句话,能出声即恢复正常

防复发:锁版本,别手改变量

  • 环境搭好后pip freeze留一份版本快照,日后升级 torch 要放在最后动
  • 别手动补全局hps去"修" NameError——真正的问题是加载异常被吞掉,修复靠更新代码而不是掩盖报错
  • 切换模型版本(v1/v2/v3)时按文档整套替换权重,新旧文件不要混放

如果还有别的报错,把完整堆栈贴出来,咱们一起看。

【免费下载链接】GPT-SoVITS1 min voice data can also be used to train a good TTS model! (few shot voice cloning)项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询