Mac上运行pyttsx3时出现KeyError和NameError问题求助
Mac上运行pyttsx3时出现KeyError和NameError问题求助
Hey,我之前在Ventura系统上也遇到过一模一样的问题,给你几个亲测有效的解决办法:
首先得明确你的报错根源:
- 最底层的问题是
NameError: name 'objc' is not defined,这是因为pyttsx3在Mac上用的nsss驱动依赖pyobjc模块,但这个模块没安装或者版本和Ventura不兼容; - 前面的
KeyError: None是因为找不到可用的语音驱动,本质也是依赖缺失导致的。
方案一:补全兼容的依赖包
先卸载可能冲突的旧包,再重新安装兼容版本:
- 卸载现有相关包:
pip uninstall -y pyttsx3 pyobjc-core pyobjc-framework-Cocoa
- 重新安装适配Ventura的版本,推荐指定pyobjc的版本(9.0.1亲测在Ventura上稳定):
pip install pyobjc-core==9.0.1 pyobjc-framework-Cocoa==9.0.1 pyttsx3
- 测试你的代码,也可以试试明确指定驱动:
import pyttsx3 as pt engine = pt.init(driverName='nsss') # 明确指定Mac的nsss驱动 engine.say("hi this is python") engine.runAndWait()
方案二:用系统原生命令替代(快速解决)
如果还是搞不定pyttsx3的依赖,可以直接调用Mac自带的say命令,完全不用第三方库:
import subprocess subprocess.run(['say', 'hi this is python'])
这个是系统原生的语音工具,不会有任何兼容问题,适合快速实现需求。
为什么你克隆改代码没用?
因为这个问题不是pyttsx3代码本身的小问题,而是依赖库和Ventura系统的兼容性问题,单纯改代码没法补全缺失的objc模块依赖,所以得从安装依赖入手。
备注:内容来源于stack exchange,提问作者Archit Anant
相关产品推荐
相关产品推荐

