Модуль SpeechRecogniton работает слишком медленно в Python
Я пытался использовать распознавание речи для своего чат-бота с глубоким обучением, чтобы получить ввод от пользователя. На самом деле мой код функции распознавания речи таков:
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% использования ЦП. Так что проблем с ограниченной вычислительной мощностью нет.
Кто-нибудь может это решить? Ты сделаешь мой день лучше, если решишь эту головную боль. Заранее спасибо!
Ответы
Параметр длительности устарел. Ссылка на вопрос о 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
Это прекрасно работает.