Модуль SpeechRecogniton работает слишком медленно в Python

Sep 04 2020

Я пытался использовать распознавание речи для своего чат-бота с глубоким обучением, чтобы получить ввод от пользователя. На самом деле мой код функции распознавания речи таков:

def get_audio():
    r = sr.Recognizer()

    with sr.Microphone() as source:
        r.pause_threshold = 1
        r.adjust_for_ambient_noise(source, duration=1)
        audio = r.listen(source)
        said = ""

        try:
            print("Listening...")
            said = r.recognize_google(audio)
            print("You said: " + said)
        except Exception as e:
            print("Exception: " + str(e))

    return said.lower()

Что ж, ошибок нет, и это самая большая ошибка! Нет проблем с моим интернет-соединением, так как я могу одновременно транслировать высококачественное видео, и это даже не видео, это строка, так в чем может быть проблема? Мне нужно ждать почти 15 минут, чтобы получить текст.

Ну, я также пробовал автономный API: recognize_sphinix()метод. Вам необходимо собрать двоичный установочный файл (whl) pocketsphinix. О, я забыл упомянуть, что вам также необходимо построить pyaudio на вашем компьютере, чтобы использовать Speech_recognition. Я проделал все это, даже та же проблема с этим офлайновым API ... Утром recognize.sphinix()2-3 раза узнал то, что я сказал, но теперь он даже не отвечает!

ПРИМЕЧАНИЕ. Я контролировал свой компьютер с помощью диспетчера задач, при этом работала только функция распознавания речи, а Python занимал всего 9 МБ ОЗУ и 0,3% использования ЦП. Так что проблем с ограниченной вычислительной мощностью нет.

Кто-нибудь может это решить? Ты сделаешь мой день лучше, если решишь эту головную боль. Заранее спасибо!

Ответы

2 HarshitRuwali Sep 04 2020 at 00:47

Параметр длительности устарел. Ссылка на вопрос о StackOverflow .
Вместо этого используйте phrase_time_limitили timeout.

Вот блок кода, использующий phrase_time_limit:

import speech_recognition as sr
def myCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source, phrase_time_limit = 5)  
    try:
        command = r.recognize_google(audio).lower()
        print("you said: " + command)
        
    except sr.UnknownValueError:
        print("Sorry, Cant understand, Please say again")
        command = myCommand()
    return command

Это прекрасно работает.