Le module SpeechRecogniton est trop lent en python
J'essayais d'utiliser la reconnaissance vocale pour mon chatbot Deep Learning pour obtenir les commentaires de l'utilisateur. En fait, mon code de fonction de reconnaissance vocale est le suivant:
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()
Eh bien, il n'y a pas d'erreur, et c'est la plus grosse erreur! Pas de problème avec ma connexion Internet car je pouvais diffuser de la vidéo de haute qualité en même temps, et ce n'est même pas une vidéo, c'est une chaîne, alors quel pourrait être le problème? Je dois attendre près de 15 minutes pour recevoir un SMS.
Eh bien, j'ai également essayé une API hors ligne: la recognize_sphinix()méthode. Vous devez créer le fichier d'installation binaire (whl) de pocketphinix. Oh, j'ai oublié de mentionner, vous devez également créer pyaudio dans votre machine pour utiliser speech_recognition. J'ai fait toutes ces choses, même le même problème est avec cette API hors ligne ... Le matin, recognize.sphinix()j'ai reconnu 2-3 fois ce que j'ai dit, mais maintenant, ça ne répond même pas à ça!
REMARQUE: j'ai surveillé mon ordinateur avec le gestionnaire de tâches avec uniquement la fonction de reconnaissance vocale en cours d'exécution, et Python prenait juste 9 Mo de RAM et 0,3% d'utilisation du processeur. Il n'y a donc aucun problème avec une puissance de calcul limitée.
Quelqu'un peut-il résoudre ça? Vous ferez ma journée si vous résolvez ce mal de tête. Merci d'avance!
Réponses
Le paramètre de durée est désormais obsolète. Réf . Question StackOverflow .
Utilisez plutôt phrase_time_limitou timeout.
Voici le bloc de code utilisant 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
Cela fonctionne parfaitement bien.