私はpyttsx3
と一緒にテキスト読み上げを行っています。私はスレッド内で使うことができることに気づいた(または私は何か間違っている)。なぜなのかご存知ですか?Pythonスレッドでpyttsxを使用する方法
コード例:
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
@eyllanesc本当ですか?はい、もちろんスレッドpyttsx3なしでうまく動作します –
面白いです。おそらくそれはOSベースのものかもしれません。私は動作しません。そしてOPと私はどちらもMacを使用しています(私はそれらが自家製のパスのように見えるので仮定します)。 – rassar