2017-12-29 145 views
1

私は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_' 
+0

スレッドなしでpyttsx3を実行できましたか?サンプルコードは私のために正しく動作します。 – eyllanesc

+0

@eyllanesc本当ですか?はい、もちろんスレッドpyttsx3なしでうまく動作します –

+0

面白いです。おそらくそれはOSベースのものかもしれません。私は動作しません。そしてOPと私はどちらもMacを使用しています(私はそれらが自家製のパスのように見えるので仮定します)。 – rassar

答えて

1

エラーが、それはOSX上のスレッドで実行されないということのようです。ここではうまくいくかもしれないいくつかの例は次のとおりです。

あなただけのテキストを音声に変換する必要がある場合、あなたはos.system('say %s')を使用することができます。

import os 
def myfunc(): 
    os.system('say ok') 

gTTSやGoogleのテキスト読み上げエンジン、イタリア語を含む64の言語をサポートしています。使用法:

from gtts import gTTS 
import os 
tts = gTTS(text='Good morning', lang='it') 
tts.save("good.mp3") 
os.system("mpg321 good.mp3") 
+0

ありがとうございますが、それはクロスプラットフォームである必要があり、イタリア語をサポートする必要があります。 –

+0

@FrancescoPegoraro更新しました。 – rassar

+0

私はそれがオフラインになってほしいです。申し訳ありません;) –

関連する問題