Всем привет. Мне нужно написать голосового помощника, как у Хауди Хо, но я добавил в него новые функции и столкнулся с проблемой. После создания переменной с pyttsx.init(), создаётся функция speak(), которая преобразует текст в речь, выглядит она так:
def speak(what):
print(what)
speak_engine.say(what)
speak_engine.runAndWait()
speak_engine.stop()
what - это то, что должен преобразовать голосовой помощник.
Соответственно, если использовать эту функцию в открытом коде, то никаких проблем нет, текст произносится и код работает дальше, но если я хочу, например, узнать время, либо конвертировать валюту, то фоновое прослушивание идёт лишь один раз. Соответственно после ответа ассистента на мой запрос, после функции speak() вообще ничего не выполняется, даже если поставить любой print(). Я уже пробовал делать return у функций, у всех, всё тщетно. Я не могу понять, почему так происходит, в открытом коде никаких проблем нет, но в других функциях, почему-то, после функции speak() ничего не выполняется, и голосовой ассистент слушает лишь один раз, а дальше просто, так сказать, игнорирование.
Также есть функция callback:
def callback(recognizer, audio):
try:
global voice
voice = recognizer.recognize_google(audio, language="ru-RU").lower()
print("[log] Распознано: " + voice)
if voice.startswith(opts["alias"]):
cmd = voice
for x in opts['alias']:
cmd = cmd.replace(x, "").strip()
for x in opts['tbr']:
cmd = cmd.replace(x, "").strip()
# распознаем и выполняем команду
cmd = recognize_cmd(cmd)
execute_cmd(cmd['cmd'])
Она распознаёт голос, а далее ищет обращение в сообщении и подбирает команду по совместимости из словаря с командами, но при этом после execute_cmd() также ничего не выполняется, а эта функция отвечает за команды, которые выполняет ассистент, то есть переходит перенаправление на эту функцию (execute_cmd), а там уже прописаны все вариации команд через if, elif, и тут то же самое, если в if/elif есть speak(), то ничего не выполняется.
Я всё перепробовал, пересмотрел, но ничего не помогает. Можете ли помочь с этим?