Keyboard Pyttsx3 Остановился цикл on_release

Рейтинг: 0Ответов: 0Опубликовано: 10.01.2023

Код примерно такой

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, но она содержит в себе тот же зависающий код и по сути ничего не меняется.

Ответы

Ответов пока нет.