GPT-SoVITS hps 未定义报错完整修复指南
【免费下载链接】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 这个少样本语音克隆项目,点一下"开始生成",控制台立刻弹出NameError: name 'hps' is not defined,合成直接中断。这篇指南带你一步步排查并修复 GPT-SoVITS hps 未定义的问题。
报错现场还原
NameError: name 'hps' is not defined File "GPT_SoVITS/inference_webui.py", in ... int(hps.data.sampling_rate * pause_second)
它卡在 WebUI 输出音频前计算尾部静音长度的那一步——代码已经要读 hps,但这个变量从来没被赋值过。
这错到底是怎么来的
hps 是模型的"参数说明书":加载 SoVITS 权重时,checkpoint 里的 config 会被转成 hps 对象,后续代码靠它拿到采样率、帧长这些关键参数。
hps = dict_s2["config"] hps = DictToAttrRecursive(hps)老版本的 inference_webui.py 里,这行赋值只发生在某个加载函数内部,主推理流程里看不到它。于是主流程后面用hps.data.sampling_rate算静音帧数时,解释器找不到这个变量,直接抛 NameError。一句话:这是"先使用、后声明"的代码版本问题,不是你环境配错了。
照着做的修复步骤
- 更新代码。
git pull拉到最新版本,或直接换成官方最新整合包。验证:git log -1显示提交时间已更新。 - 核对版本。Python 与 PyTorch 对照下表检查:
python -V验证:输出
Python 3.9.x说明环境这关过了。 - 重启验证。重新运行 webui.py,选一个已训练模型点生成。验证:日志出现
sovits版本: v2之类一行、能听到合成音频,说明 hps 已成功加载,修复完成。 ✅
版本与依赖核对表
| 组件 | 推荐版本 | 核对要点 |
|---|---|---|
| Python | 3.9.x | python -V确认;版本过高会让 phonemizer 等依赖不匹配 |
| PyTorch | 2.6.0 | torch.__version__确认;2.6 之后torch.load默认权重模式更严 |
| torchaudio | 与 PyTorch 匹配 | 与所用 CUDA 版本保持一致 |
| librosa | 0.10.2 | 已在 requirements.txt 锁死,pip show librosa复核即可 |
顺手避坑
- 现象:
ModuleNotFoundError: No module named 'text.LangSegmenter'→ 对策:代码是缺 text 子模块的旧版本,直接换最新整合包,别单文件补。 - 现象:更新后
torch.load报 pickle / weights_only 相关错误 → 对策:新版 PyTorch 默认weights_only=True,加载旧 checkpoint 时补上参数torch.load(path, weights_only=False)。 ⚠️ - 现象:v1 / v2 / v3 模型版本切换后无声或乱码 → 对策:界面里的 model_version 必须和模型文件真实版本一致,别混用。
下一步:如果你已走完上面流程仍卡住,别再零敲碎打,直接去项目 Releases 拉最新整合包,按 install.sh 重装环境,再核对一遍上方版本表。还不行就截完整日志,对照"模型版本 vs 代码版本"逐项排查。
【免费下载链接】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),仅供参考