Ошибка в голосовом помощнике, Python

#Кузя
import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import pyttsx3
import datetime
opts = {

    'alias': ('кузя'),

    'tbr': {'объясни', 'скажи', 'расскажи', 'объяснуй', 'произнеси', 'сколько', ''},

    'cmds': {
        'ctime': ('который час', 'время', 'время', 'време', 'сколько время', 'сколько сейчас времени', 'какой сейчас час'),
        'radio': ('включи музыку', 'радио', 'включи радио', 'воспроизведи радио')
    }
}

# Функции

def speak(what):
    print(what)
    speak_engine.say(what)
    speak_engine.runAndWait()
    speak_engine.stop()


def callback(recognizer, audio):
    try:
        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'])
           
    except sr.UnknownValueError:
        print("[log] Голос не распознан!")
    except sr.RequestError as e:
        print("[log] Неизвестная ошибка, проверьте интернет!")
 
def recognize_cmd(cmd):
    RC = {'cmd': '', 'percent': 0}
    for c,v in opts["cmds"].items():

          for x in v:
            vrt = fuzz.ratio(cmd, x)
            if vrt > RC['percent']:
                RC['cmd'] = c
                RC['percent'] = vrt
    
    return RC           

def execute_cmd(cmd):
    if cmd == 'ctime':
        # Команда показывающяя время
        now = datetime.datetime.now()
        speak('Сейчас ' + str(now.hour) + ':' + str(now.minute))

    elif cmd == 'radio':
        # Включается песня
        os.system('E:\\Users\\Wottsan\\Desktop\\Кеша\\Love.mp3')

    else:
        print('Команда не распознана, повторите ')    

# Запуск
r = sr.Recognizer()
m = sr.Microphone(device_index = 1)

with m as source:
    r.adjust_for_ambient_noise(source)

speak_engine = pyttsx3.init()

#Если есть скачанный голос
# voices = speak_engine.getProperty('voices')
# speak_engine.setProperty('voice', voices[4].id)   

speak('Слушаю...')


stop_listening = r.listen_in_background(m, callback)
while True: time.sleep(0.1)# infinite Loop  


Ошибка заключается в том, что после команды 'speak('Сейчас ' + str(now.hour) + ':' + str(now.minute))' Код перестаёт слушать, тоесть, больше не выполняет другие команды

P.S После ' os.system('E:\Users\Wottsan\Desktop\Кеша\Love.mp3') ' Код может выполнять/повторять другие команды


Ответы (0 шт):