【发布时间】:2018-06-10 01:46:17
【问题描述】:
我正在使用 pyttsx3 进行文字转语音。我意识到我可以在一个线程中使用它(或者我做错了什么)。你知道为什么吗?
代码示例:
from threading import Thread
import pyttsx3
def myfunc():
engine = pyttsx3.init()
engine.say("ok")
engine.runAndWait()
t = Thread(target=myfunc)
t.start()
错误:
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "test.py", line 9, in myfunc
engine.runAndWait() #blocks
File "/usr/local/lib/python3.6/site-packages/pyttsx3/engine.py", line 188, in runAndWait
self.proxy.runAndWait()
File "/usr/local/lib/python3.6/site-packages/pyttsx3/driver.py", line 204, in runAndWait
self._driver.startLoop()
File "/usr/local/lib/python3.6/site-packages/pyttsx3/drivers/nsss.py", line 33, in startLoop
AppHelper.runConsoleEventLoop()
File "/usr/local/lib/python3.6/site-packages/PyObjCTools/AppHelper.py", line 241, in runConsoleEventLoop
nextfire = nextfire.earlierDate_(soon)
AttributeError: 'NoneType' object has no attribute 'earlierDate_'
【问题讨论】:
-
你能在没有线程的情况下运行 pyttsx3 吗?您示例的代码对我来说运行正确。
-
@eyllanesc 真的吗?是的,当然没有线程 pyttsx3 工作正常
-
有趣。也许它是基于操作系统的:我的不起作用,而且我和 OP 都在使用 Mac(我假设是因为那些看起来像自制路径)。
-
@rassar 是的,我正在使用 Mac 和 Homebrew...
-
你能推荐任何其他的多平台 tts 吗?
标签: multithreading python-3.x text-to-speech pyttsx