Python ассистент не работает с webbrowser

import os
import time
import speech_recognition as sr
from fuzzywuzzy import fuzz
import pyttsx3
import datetime
import webbrowser

# настройки
opts = {
    "alias": ('саша', 'алекснадр', 'ассистент', 'иннокентий', 'кишун', 'киш',
              'кишаня', 'кяш', 'кяша', 'кэш', 'кэша'),
    "tbr": ('скажи', 'расскажи', 'покажи', 'сколько', 'произнеси', 'поищи в интернете', 'найди мне в интернете', 'найди', 'открой'),
    "cmds": {
        "ctime": ('текущее время', 'сейчас времени', 'который час'),
        "radio": ('включи музыку', 'воспроизведи радио', 'включи радио'),
        "stupid1": ('расскажи анекдот', 'рассмеши меня', 'ты знаешь анекдоты'),
        "youtube": ('ютуб', 'youtube', 'you tube')
    }
}


# функции
def speak(what):
    print(what)
    speak_engine.say(what)
    speak_engine.runAndWait()
    speak_engine.stop()


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'])

    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("music.mp3")

    elif cmd == 'stupid1':
        # рассказать анекдот
        speak("Как-то в полицейского стрельнули и из него пошла кровь, снимая свою рубашку он обнаружил маленького чёрного ребёнка в которого попала пуля и обрадовался ха ха ха ха")
#здесь не работает код
    elif cmd == 'youtube':
        speak('Уже открываю')
        webbrowser.open('https://www.youtube.com/', new=1)
#############################################################

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

with m as source:
    r.adjust_for_ambient_noise(source)

speak_engine = pyttsx3.init()


speak("Саша слушает")

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

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

Автор решения: John Longman

Я разобрался и решил. Оказалось, что проблема в функции speak() ее нельзя вставлять до поиска в браузере

→ Ссылка