Задать вопрос
UMFUCHI
@UMFUCHI
НедоПайтонист

Как можно ускорить код?

Иногда код может затупить так на минут 7 и ничего не делать. а просто слушать то что я говорю, например я сказал Привет несколько раз, а потом спустя некоторое время он мне показывает то что я сказал и так те самые несколько Привет вместо одного на который он должен был ответить сразу. Короче, вопрос вот в чем, как можно ускорить сам питон чтобы после того как ответил бот не нужно было ждать к примеру секунду чтобы активизировался распознаватель речи?

import speech_recognition as sr
from gtts import gTTS
import random
import time
import datetime
import playsound

#Распознаватель речи
def listen_command(): 

    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Скажите вашу команду: ")
        audio = r.listen(source)

    try:
        our_speech = r.recognize_google(audio, language="ru")
        print("Вы сказали: " + our_speech)
        return our_speech
    except sr.UnknownValueError:
        return "ошибка"
    except sr.RequestError:
        return "ошибка"


class VoiceCommandList:
    def __init__(self):
        self.actions = list()

    def on(self, condition):
        if isinstance(condition, str):
            condition = condition.lower()
            predicate = lambda text: condition in text
        elif callable(condition):
            predicate = condition
        else:
            raise TypeError('Condition must be either string or function!')

        def decorator(command_func):
            self.actions.append((predicate, command_func))
            return command_func

        return decorator

    def run_command(self, text):
        text = text.lower()
        for predicate, command in self.actions:
            if predicate(text):
                try:
                    response = command(text)
                    if response is None:
                        response = "Команда выполнена"
                except Exception as err:
                    response = "Ошибка при выполнении команды"
                    print(err)
                if response:
                    m.say_message(response)
                break
        else:
            m.say_message("Неизвестная команда")


vcl = VoiceCommandList()

#сама команда
@vcl.on('привет')
def hello(text):
    return "Здравствуйте, сэр!"

#То что говорит бот
def say_message(message):
    voice = gTTS(message, lang="ru")
    file_voice_name = "_audio_" + str(time.time()) + "_" + str(random.randint(0, 100000)) + ".mp3"
    voice.save(file_voice_name)
    playsound.playsound(file_voice_name)
    print("Голосовой ассистент: " + message)


if __name__ == '__main__':
    while True:
        command = listen_command()
        vcl.run_command(command)
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Лобовой ответ - фоновый шум есть? Может, Recognizer его принимает за речь, и думает что ты все эти несколько минут говоришь.
В параметрах метода listen() есть кое-что интересное, почитай.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы