El módulo SpeechRecogniton es demasiado lento en Python

Sep 04 2020

Estaba tratando de usar el reconocimiento de voz para mi chatbot de aprendizaje profundo para obtener la entrada del usuario. En realidad, mi código de función de reconocimiento de voz es este:

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()

Bueno, no hay errores, ¡y ese es el mayor error! No hay problema con mi conexión a Internet, ya que podría transmitir videos de alta calidad al mismo tiempo, y esto ni siquiera es un video, es una cadena, entonces, ¿cuál podría ser el problema? Tengo que esperar casi 15 minutos para recibir un mensaje de texto.

Bueno, también probé una API sin conexión: el recognize_sphinix()método. Necesita compilar el archivo de instalación binario (whl) de Pocketphinix. Oh, olvidé mencionar que también necesitas compilar pyaudio en tu máquina para usar speech_recognition. He hecho todas esas cosas, incluso el mismo problema es con esta API fuera de línea ... En la mañana recognize.sphinix()reconocí 2-3 veces lo que dije, ¡pero ahora, ni siquiera responde eso!

NOTA: He monitoreado mi PC con el administrador de tareas con solo la función de reconocimiento de voz ejecutándose, y Python solo estaba tomando 9 MB de RAM y un uso de CPU del 0.3%. Así que no hay problema con la potencia informática limitada.

¿Alguien puede resolver esto? Me alegrarás el día si resuelves este dolor de cabeza. ¡Gracias por adelantado!

Respuestas

2 HarshitRuwali Sep 04 2020 at 00:47

El parámetro de duración está obsoleto ahora. Pregunta de ref StackOverflow .
En su lugar, utilice phrase_time_limito timeout.

Aquí está el bloque de código que usa 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

Esto funciona perfectamente bien.