#工作记录

问题总结

报错摘录1:

Traceback (most recent call last):
  File "F:\PythonProjects\CosyVoice\webui.py", line 188, in <module>
    cosyvoice = CosyVoice(args.model_dir)
  File "F:\PythonProjects\CosyVoice\cosyvoice\cli\cosyvoice.py", line 41, in __init__
    self.frontend = CosyVoiceFrontEnd(configs['get_tokenizer'],
  File "F:\PythonProjects\CosyVoice\cosyvoice\cli\frontend.py", line 71, in __init__
    self.zh_tn_model = ZhNormalizer(remove_erhua=False, full_to_half=False, overwrite_cache=True)
NameError: name 'ZhNormalizer' is not defined

报错摘录2:

Traceback (most recent call last):
  File "F:\PythonProjects\CosyVoice\webui.py", line 25, in <module>
    from cosyvoice.cli.cosyvoice import CosyVoice, CosyVoice2
  File "F:\PythonProjects\CosyVoice\cosyvoice\cli\cosyvoice.py", line 21, in <module>
    from cosyvoice.cli.frontend import CosyVoiceFrontEnd
  File "F:\PythonProjects\CosyVoice\cosyvoice\cli\frontend.py", line 16, in <module>
    from tn.english.normalizer import EnNormalizer
ImportError: cannot import name 'EnNormalizer' from 'tn.english.normalizer' (D:\ProgramData\anaconda3\envs\cosyvoice310\lib\site-packages\tn\english\normalizer.py) 

在尝试在Windows部署并运行 CosyVoice 开源项目时,遇到了以下两个主要错误:

  1. NameError: name 'ZhNormalizer' is not defined
    • 原因:代码试图从 tn.chinese.normalizer 模块导入一个名为 ZhNormalizer 的类,但实际上该模块中定义的是 Normalizer 类。
  2. ImportError: cannot import name 'EnNormalizer' from 'tn.english.normalizer'
    • 原因:与第一个问题相似,代码试图从 tn.english.normalizer 模块导入一个名为 EnNormalizer 的类,但实际存在的类名为 Normalizer

这两个问题的根本原因是使用的库 WeTextProcessing 中定义的类名与代码中预期的类名不匹配。

解决方案

对于 ZhNormalizer 错误:
  • 将原始导入语句:
    from tn.chinese.normalizer import ZhNormalizer
    修改为:
    from tn.chinese.normalizer import Normalizer as ZhNormalizer
对于 EnNormalizer 错误:
  • 将原始导入语句:
    from tn.english.normalizer import EnNormalizer
    修改为:
    from tn.english.normalizer import Normalizer as EnNormalizer

通过上述修改,我们实际上是将 Normalizer 类重命名为代码中所需的 ZhNormalizerEnNormalizer,从而解决了命名冲突的问题。

验证步骤

为了确保更改有效,可以通过以下命令进行验证:

python -c "from tn.chinese.normalizer import Normalizer as ZhNormalizer; print(ZhNormalizer)"
python -c "from tn.english.normalizer import Normalizer as EnNormalizer; print(EnNormalizer)"

如果输出显示了正确的类信息(例如 <class 'tn.chinese.normalizer.Normalizer'>),则说明导入成功,可以继续运行项目。

最终结果

经过以上调整,我们的 CosyVoice 项目应该能够正常启动并运行。希望这次的经验能为你提供有价值的参考。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐