Сделайте распознавание речи Python быстрее

Я использую распознавание речи Google для Python. Вот мой код:

import speech_recognition as sr
r = sr.Recognizer()
with sr.Microphone() as source:
   print("Say something!")
   audio = r.listen(source)
   print(r.recognize_google(audio))

Хотя распознавание очень точное, требуется около 4-5 секунд, прежде чем он выдаст распознанный текст. Поскольку я создаю голосового помощника, я хочу изменить приведенный выше код, чтобы распознавание речи было намного быстрее.

Есть ли способ уменьшить это число примерно до 1-2 секунд? По возможности стараюсь сделать распознавание максимально быстрым, как такие сервисы, как Siri и Ok Google.

Я очень новичок в python, поэтому прошу прощения, если есть простой ответ на мой вопрос.


person Manan Shukla    schedule 27.05.2018    source источник
comment
У меня такая же проблема с wit.ai   -  person Dadu Khan    schedule 27.09.2019


Ответы (2)


Вы можете использовать другую программу распознавания речи. Например, вы можете создать учетную запись в IBM, чтобы использовать их Watson Speech To Text. Если возможно, попробуйте использовать их веб-интерфейс, потому что тогда он активно расшифровывает то, что вы говорите, пока вы еще говорите.

Пример (без использования веб-сокетов):

import speech_recognition as sr

# obtain audio from the microphone
r = sr.Recognizer()
with sr.Microphone() as source:
    print("Adjusting for background noise. One second")
    r.adjust_for_ambient_noise(source)
    print("Say something!")
    audio = r.listen(source)

IBM_USERNAME = "INSERT IBM SPEECH TO TEXT USERNAME HERE"  # IBM Speech to Text usernames are strings of the form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
IBM_PASSWORD = "INSERT IBM SPEECH TO TEXT PASSWORD HERE"  # IBM Speech to Text passwords are mixed-case alphanumeric strings
try:
    print("IBM Speech to Text thinks you said " + r.recognize_ibm(audio, username=IBM_USERNAME, password=IBM_PASSWORD))
except sr.UnknownValueError:
    print("IBM Speech to Text could not understand audio")
except sr.RequestError as e:
    print("Could not request results from IBM Speech to Text service; {0}".format(e))

Вы также можете попробовать использовать pocketsphinx, но лично у меня не было особенно хорошего опыта с ним. Это в автономном режиме (плюс), но для меня это не было особенно точным. Вероятно, вы могли бы настроить некоторые параметры обнаружения и убрать фоновый шум. Я считаю, что есть также вариант обучения, чтобы изменить его под свой голос, но это не выглядит простым.

Несколько полезных ссылок:

Распознавание речи

Пример распознавания микрофона

преобразование речи в текст IBM Watson

Удачи. Когда распознавание речи работает правильно, это очень полезно и полезно!

person O.Harris    schedule 14.11.2018
comment
Привет, О, Харрис, я работаю с речью в тексте в IBM Watson, и мне было интересно, как можно повысить точность модели для подбора слов в python. Пожалуйста, обратитесь к моему сообщению stackoverflow.com/questions/66769294/ . Пожалуйста, обратитесь только к разделу кода Python, где я использовал модель Watson. - person hartville zillow; 24.03.2021

Используйте правильный входной канал и настройку для достижения наилучших результатов:

def speech_to_text():

    required=-1
    for index, name in enumerate(sr.Microphone.list_microphone_names()):
        if "pulse" in name:
            required= index
    r = sr.Recognizer()
    with sr.Microphone(device_index=required) as source:
        r.adjust_for_ambient_noise(source)
        print("Say something!")
        audio = r.listen(source, phrase_time_limit=4)
    try:
        input = r.recognize_google(audio)
        print("You said: " + input)
        return str(input)
    except sr.UnknownValueError:
        print("Google Speech Recognition could not understand audio")
    except sr.RequestError as e:
        print("Could not request results from Google Speech Recognition service; {0}".format(e))
person Satyam Singh    schedule 20.03.2020
comment
Это действительно быстрее? - person Redgar Tech; 27.05.2020