You need to enable JavaScript to run this app. Windows系统下pyttsx3初始化报unknown voice id错误的求助
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下pyttsx3初始化报unknown voice id错误的求助

故障核心根因

你遇到的报错本质不是缺少语音组件,是pyttsx3 旧版本SAPI5驱动的路径兼容bug:

  • 驱动初始化阶段会自动读取系统当前设置的默认语音的注册表token
  • 2.71等老旧版本pyttsx3的_tokenFromId校验逻辑硬编码只识别HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens路径下的语音项
  • Win10 1809版本之后系统新增的内置语音,全部存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens路径下
  • 驱动拿到这个OneCore路径下的token(也就是你报错日志里的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens\MSTTS_V110_enGB_GeorgeM)时,完全不匹配校验规则,直接抛出unknown voice id错误。

你之前尝试的修改注册表补旧路径语音条目、降级Python版本、换旧版pyttsx3的操作,都没有改动驱动本身的校验逻辑,所以根本解决不了问题。

可直接落地的修复步骤
  • 最稳妥的永久修复:直接替换本地虚拟环境里的sapi5.py驱动文件为pyttsx3最新版的对应实现,新版代码已经补齐了对OneCore路径语音token的识别逻辑,替换后不需要改任何注册表配置,你原来写的测试代码即可正常运行。
  • 快速临时绕过方案:
    1. 打开「控制面板-语音识别-高级语音选项」
    2. 在「文本到语音」配置页,把默认语音切换到传统Speech路径下的已安装语音(如系统自带的Microsoft Huihui)
    3. 重启PyCharm后重新运行代码,让驱动初始化时读取不到OneCore路径的token值,即可跳过校验报错。
  • 之前操作无效的原因说明:你之前手动往旧Speech路径下新增MSGeorge、MSMike的注册表空键值没有作用,因为这些语音的实际安装路径就在OneCore目录下,没有绑定实际语音组件的空注册表键值根本不会被系统识别,驱动校验时依然会报错。

注:你之前检索不到同类问题,是因为Win10后续版本逐渐把所有内置语音迁移到OneCore路径后,很多用户没有关联到pyttsx3旧驱动的校验bug,大多误以为是自己缺语音组件配置。


内容的提问来源于stack exchange,提问作者Silent_storm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 08:36:03