Pyttsx3的nsss.py报NameError:objc未定义问题求助
解决pyttsx3在macOS上出现
NameError: name 'objc' is not defined的问题 核心原因
报错根源是pyttsx3针对macOS的nsss语音驱动依赖pyobjc库调用系统语音接口,但该库未正确安装,或驱动文件nsss.py的导入语句缺失/错误。
解决方案步骤
1. 重装pyobjc依赖库
先卸载可能损坏的pyobjc组件,再重新安装适配当前Python版本的包:
pip uninstall -y pyobjc pyobjc-core pyobjc-framework-Cocoa pip install pyobjc-core pyobjc-framework-Cocoa
2. 修复nsss.py的导入语句
如果重装依赖后仍报错,手动修正驱动文件的导入:
- 定位到报错中的
nsss.py路径:/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyttsx3/drivers/nsss.py - 打开文件,在开头添加以下导入代码:
import objc from Foundation import NSObject
保存后重新运行测试脚本。
3. 明确指定驱动初始化
尝试显式指定nsss驱动初始化引擎,确保调用正确的驱动:
import pyttsx3 engine = pyttsx3.init(driverName='nsss') engine.say("测试语音输出") engine.runAndWait()
补充说明
- 若尝试过pyttsx4仍有问题,本质是pyttsx4同样依赖pyobjc库,需先解决依赖问题。
- 更换驱动后无报错但不运行,大概率是所选驱动未适配当前系统,macOS下优先使用
nsss驱动。
内容的提问来源于stack exchange,提问作者Abdul Saboor Islam
相关产品推荐
相关产品推荐

