Il modulo SpeechRecogniton è troppo lento in Python
Stavo cercando di utilizzare il riconoscimento vocale per il mio Deep Learning Chatbot per ottenere l'input dell'utente. In realtà il mio codice della funzione di riconoscimento vocale è questo:
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()
Bene, non ci sono errori e questo è l'errore più grande! Nessun problema con la mia connessione Internet in quanto potrei riprodurre in streaming video di alta qualità allo stesso tempo, e nemmeno questo video, è una stringa, quindi quale potrebbe essere il problema? Devo aspettare quasi 15 minuti per ricevere un messaggio.
Bene, ho provato anche un'API offline: il recognize_sphinix()metodo. È necessario creare il file di installazione binario (whl) di pocketphinix. Oh, ho dimenticato di menzionare, devi anche costruire pyaudio nella tua macchina per usare speech_recognition. Ho fatto tutte queste cose, anche lo stesso problema è con questa API offline ... La mattina recognize.sphinix()ho riconosciuto 2-3 volte quello che ho detto, ma ora non risponde nemmeno!
NOTA: ho monitorato il mio PC con il task manager con solo la funzione di riconoscimento vocale in esecuzione e Python stava prendendo solo 9 MB di RAM e 0,3% di utilizzo della CPU. Quindi non ci sono problemi con la potenza di calcolo limitata.
Qualcuno può risolverlo? Mi renderai felice se risolverai questo mal di testa. Grazie in anticipo!
Risposte
Il parametro della durata è ora deprecato. Domanda Ref StackOverflow .
Usa invece phrase_time_limito timeout.
Ecco il blocco di codice che utilizza 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
Funziona perfettamente bene.