2017-05-07 1 views
0

Also, ich versuche, eine sprechende Maschine mit pyttsx in Python3 zu erstellen, wenn ich zuerst die Funktion anrufe, etwas zu sagen, es funktioniert gut, wenn ich es noch einmal anrufe, es sagt nur die erstes Wort des Satzes und nichts passiert.Python Text in Rede nicht den Satz beenden

import pyttsx 


class Speech(object): 

    def __init__(self): 
     self.engine = pyttsx.init() 
     self.engine.setProperty('rate', 150) 

    def say_song(self): 
     """ Tell user to choose song """ 
     self.engine.say("Please choose song. ") 
     self.engine.runAndWait() 

    def say_alarm(self): 
     """ Tell user to set up the alarm """ 
     self.engine.say("Please set up the alarm, after the beep.") 
     self.engine.runAndWait() 

    def beep(self): 
     self.engine.say("beep") 
     self.engine.runAndWait() 

>>> from voices import Speech 
>>> s = Speech() 
>>> s.say_song() 
>>> s.beep() 
>>> s.say_alarm() 

Antwort

1

Es scheint ein bekanntes Problem mit pyttsx zu sein: https://github.com/RapidWareTech/pyttsx/issues/45

ich eine Hilfsmethode auf Speech schreiben würde, die im Grunde das Setup + tun Funktionalität sagen.

def init_and_say(self, text): 
    self.engine = pyttsx.init() 
    self.engine.setProperty('rate', 150) 
    self.engine.say(text) 
    self.engine.runAndWait() 

dann rufen Sie es von jeder Ihrer Methoden. z.B .:

def say_song(self): 
    init_and_say("Please choose song. ") 

oder direkt anrufen:

s.init_and_say("Please choose song. ") 
+0

Es ist immer noch das gleiche Problem hat. –