You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的导入语句

如果重装依赖后仍报错,手动修正驱动文件的导入:

  1. 定位到报错中的nsss.py路径:/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/pyttsx3/drivers/nsss.py
  2. 打开文件,在开头添加以下导入代码:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:05:18