使用TTS.api包tts函数遇ImportError:weight_norm导入失败及版本兼容问题
解决ImportError: cannot import name 'weight_norm' from 'torch.nn.utils.parametrizations'
方案1:临时修改TTS源码导入路径
先通过pip show TTS查看TTS包的安装目录,找到导入weight_norm的文件(常见于TTS/layers/下的模型文件或__init__.py),把旧导入代码:
from torch.nn.utils.parametrizations import weight_norm
替换为:
from torch.nn.utils.weight_norm import weight_norm
保存后重新运行代码即可生效。
方案2:升级TTS到兼容PyTorch 2.0+的版本
TTS 0.22.0版本确实存在PyTorch 2.0适配问题,直接升级到0.23.0及以上版本就能修复导入错误。执行命令:
pip install TTS>=0.23.0 --upgrade
如果旧版本文件残留,加上--force-reinstall确保完全替换:
pip install TTS>=0.23.0 --upgrade --force-reinstall
方案3:降级PyTorch到1.x版本(备选)
如果暂时不想升级TTS,可将PyTorch降到1.13.x版本,该版本中weight_norm仍在torch.nn.utils.parametrizations模块下。根据CUDA版本执行对应命令,比如CUDA 11.7:
pip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 --index-url https://download.pytorch.org/whl/cu117
CPU版本直接用:
pip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1
验证修复
运行以下代码测试导入是否正常:
from TTS.api import TTS tts = TTS()
无报错则说明问题已解决。
内容的提问来源于stack exchange,提问作者MADDULA PALLAVI
相关产品推荐
相关产品推荐

