Keyboard Pyttsx3 Остановился цикл on_release
Код примерно такой
class VoiceAssistant:
def __init__(self, lang="ru", rate=150, volume=0.8):
self.lang = lang
self.rate = rate
self.volume = volume
self.tts = pyttsx3.init()
self.tts.setProperty('voice', self.lang)
self.tts.setProperty('rate', self.rate)
self.tts.setProperty('volume', self.volume)
self._setVoice("Microsoft David Desktop - English (United States)")
self.start()
def _setVoice(self, name):
self.nVoiseName = name
self.voices = self.tts.getProperty("voices")
for voice in self.voices:
if self.nVoiseName == voice.name:
self.tts.setProperty("voice", voice.id)
def _say(self, msg):
self.tts.say(msg)
self.tts.runAndWait()
def callback(self, event):
name = event.name
print(name)
self._say(name)
def start(self):
keyboard.on_release(callback=self.callback)
keyboard.wait()
if __name__ == '__main__':
VoiceAssistant()
При нажатии любой клавиши она печатается на экране и воспроизводится "Дэвидом", но после этого больше ни на что не реагирует. Помогите в чём проблема? Может всё дело в runAndWait(), но без него не будет работать. Видел в Интернете решение этой задачи. Там советовали поменять на функцию speak, но она содержит в себе тот же зависающий код и по сути ничего не меняется.
Источник: Stack Overflow на русском