Python модуль распознавания речи Google не работает через некоторое время - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать приложение типа Alexa для компьютера под названием "Эмма", используя Python. Используя модуль Speech Recognition , он будет использовать микрофон в качестве источника для прослушивания пользователя. он работает нормально, но после ответа или выполнения каких-либо действий, таких как поиск, он зависает и больше не работает.

Я подумал, что, возможно, для распознавания речи требуется некоторое ограниченное время, но после поиска я ничего не нашел о Это. Теперь я просто не знаю, это из-за распознавания речи или некоторых других модулей, таких как GTTS (Google Text To Speech).

Вот ссылка на мой репозиторий, если вам нужно увидеть весь код: https://github.com/sina1mhi/emma_virtual_assistant

Пожалуйста, дайте мне знать ваши способы решения проблемы.

Вот часть кода распознавания речи:

def record_audio(ask=False, lang="en-US"):
    with sr.Microphone() as source:  # microphone as source
        print("Emma: I'm listening")
        if ask:
            speak(ask)
        time.sleep(1)
        audio = r.listen(source)  # listen for the audio via source
        voice_data = ''
        try:
            voice_data = r.recognize_google(
                audio, language=lang)  # convert audio to text
        except sr.UnknownValueError:  # error: recognizer does not understand
            speak("I did'nt get that")
            exit()
        except sr.RequestError:
            # error: recognizer is not connected
            speak('Sorry, the service is down')
            exit()
        print(f">> {voice_data.lower()}")  # print what user said
        return voice_data.lower()

1 Ответ

0 голосов
/ 12 февраля 2020

После прочтения Ссылка на библиотеку распознавания речи Я обнаружил, что вместо использования listen метода распознавателя я должен использовать метод записи и установить аргумент продолжительности.


Вот код:

def record_audio(ask=False, lang="en-US"):
    # Change the sample_rate to 16000 good quality and better recognition
    # higher sample rate means slower app.
    with sr.Microphone(sample_rate=12000) as source:  # microphone as source
        print("Emma: I'm listening")
        audio = r.record(source, duration=5)  # listen for the audio via source
        print("Emma: Microphone turned off, processing...")
        voice_data = ''
        try:
            voice_data = r.recognize_google(
                audio, language=lang)  # convert audio to text
        except sr.UnknownValueError:  # error: recognizer does not understand
            speak("I did'nt get that")
            exit()
        except sr.RequestError:
            # error: recognizer is not connected
            speak('Sorry, the service is down')
            exit()
        print(f">> {voice_data.lower()}")  # print what user said
        return voice_data.lower()
...