Распознавание речи в Python с использованием Google Speech API

Опубликовано: 14 Июля, 2021


Распознавание речи - важная функция в нескольких используемых приложениях, таких как домашняя автоматизация, искусственный интеллект и т. Д. Цель этой статьи - дать представление о том, как использовать библиотеку SpeechRecognition Python. Это полезно, поскольку его можно использовать на микроконтроллерах, таких как Raspberri Pis, с помощью внешнего микрофона.

Необходимые установки

Должно быть установлено следующее:

  1. Модуль распознавания речи Python:
     sudo pip установить SpeechRecognition
  2. PyAudio: используйте следующую команду для пользователей Linux
     sudo apt-get install python-pyaudio python3-pyaudio

    Если версии в репозиториях слишком старые, установите pyaudio, используя следующую команду

     sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && 
    sudo pip установить pyaudio

    Используйте pip3 вместо pip для python3.
    Пользователи Windows могут установить pyaudio, выполнив следующую команду в терминале

     pip install pyaudio

Речевой ввод с помощью микрофона и перевод речи в текст

  1. Настроить микрофон (для внешних микрофонов): желательно указать микрофон во время программы, чтобы избежать каких-либо сбоев.
    Введите в терминале lsusb. Появится список подключенных устройств. Имя микрофона будет выглядеть так
     USB-устройство 0x46d: 0x825: Аудио (hw: 1, 0)

    Запишите это, поскольку оно будет использоваться в программе.

  2. Установить размер блока: в основном это связано с указанием количества байтов данных, которые мы хотим прочитать за один раз. Обычно это значение указывается в степени 2, например 1024 или 2048.
  3. Установить частоту дискретизации: частота дискретизации определяет, как часто значения записываются для обработки.
  4. Установите идентификатор устройства для выбранного микрофона : на этом этапе мы указываем идентификатор устройства микрофона, который мы хотим использовать, чтобы избежать двусмысленности в случае наличия нескольких микрофонов. Это также помогает отладке в том смысле, что при запуске программы мы будем знать, распознается ли указанный микрофон. В процессе работы программы мы указываем параметр device_id. Программа скажет, что device_id не может быть найден, если микрофон не распознается.
  5. Разрешить регулировку окружающего шума: поскольку окружающий шум меняется, мы должны дать программе секунду или слишком много времени, чтобы отрегулировать энергетический порог записи, чтобы он регулировался в соответствии с уровнем внешнего шума.
  6. Преобразование речи в текст: это делается с помощью распознавания речи Google. Для работы требуется активное подключение к Интернету. Однако существуют определенные автономные системы распознавания, такие как PocketSphinx, но для них требуется очень строгий процесс установки, требующий нескольких зависимостей. Распознавание речи Google - одно из самых простых в использовании.

    Вышеуказанные шаги были реализованы ниже:




    #Python 2.x program for Speech Recognition
    import speech_recognition as sr
    #enter the name of usb microphone that you found
    #using lsusb
    #the following name is only used as an example
    mic_name = "USB Device 0x46d:0x825: Audio (hw:1, 0)"
    #Sample rate is how often values are recorded
    sample_rate = 48000
    #Chunk is like a buffer. It stores 2048 samples (bytes of data)
    #here.
    #it is advisable to use powers of 2 such as 1024 or 2048
    chunk_size = 2048
    #Initialize the recognizer
    r = sr.Recognizer()
    #generate a list of all audio cards/microphones
    mic_list = sr.Microphone.list_microphone_names()
    #the following loop aims to set the device ID of the mic that
    #we specifically want to use to avoid ambiguity.
    for i, microphone_name in enumerate (mic_list):
    if microphone_name = = mic_name:
    device_id = i
    #use the microphone as source for input. Here, we also specify
    #which device ID to specifically look for incase the microphone
    #is not working, an error will pop up saying "device_id undefined"
    with sr.Microphone(device_index = device_id, sample_rate = sample_rate,
    chunk_size = chunk_size) as source:
    #wait for a second to let the recognizer adjust the
    #energy threshold based on the surrounding noise level
    r.adjust_for_ambient_noise(source)
    print "Say Something"
    #listens for the user's input
    audio = r.listen(source)
    try :
    text = r.recognize_google(audio)
    print "you said: " + text
    #error occurs when google could not understand what was said
    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))

    Преобразование аудиофайла в текст

    Если у нас есть аудиофайл, который мы хотим перевести в текст, нам просто нужно заменить источник аудиофайлом вместо микрофона.
    Для удобства поместите аудиофайл и программу в одну папку. Это работает для файлов WAV, AIFF и FLAC.
    Реализация показана ниже




    #Python 2.x program to transcribe an Audio file
    import speech_recognition as sr
    AUDIO_FILE = ( "example.wav" )
    # use the audio file as the audio source
    r = sr.Recognizer()
    with sr.AudioFile(AUDIO_FILE) as source:
    #reads the audio file. Here we use record instead of
    #listen
    audio = r.record(source)
    try :
    print ( "The audio file contains: " + r.recognize_google(audio))
    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))

Поиск проблемы

Обычно встречаются следующие проблемы

  1. Приглушенный микрофон: это приводит к тому, что входной сигнал не принимается. Чтобы проверить это, вы можете использовать alsamixer.
    Его можно установить с помощью



     sudo apt-get install libasound2 alsa-utils alsa-oss

    Введите amixer . Результат будет выглядеть примерно так

    Простое управление микшером Master, 0
      Возможности: pvolume pswitch pswitch-connected
      Каналы воспроизведения: передний левый - передний правый
      Пределы: Воспроизведение 0 - 65536
      Мононуклеоз:
      Передний левый: воспроизведение 41855 [64%] [вкл]
      Спереди справа: воспроизведение 65536 [100%] [вкл]
    Простое управление микшером Capture, 0
      Возможности: cvolume cswitch cswitch-connected
      Каналы захвата: передний левый - передний правый
      Пределы: захват 0 - 65536
      Спереди слева: Захват 0 [0%] [выкл] # выключен
      Спереди справа: захват 0 [0%] [выкл.]
    

    Как видите, устройство захвата в настоящее время выключено. Чтобы включить его, введите alsamixer
    Как вы можете видеть на первом изображении, здесь показаны наши устройства воспроизведения. Нажмите F4, чтобы переключиться на Захват устройств.

    На втором изображении выделенная часть показывает, что устройство захвата отключено. Чтобы включить звук, нажмите пробел

    Как вы можете видеть на последнем изображении, выделенная часть подтверждает, что звук на устройстве захвата не отключен.

  2. Текущий микрофон не выбран в качестве устройства захвата:
    В этом случае микрофон можно настроить, набрав alsamixer и выбрав звуковые карты. Здесь вы можете выбрать микрофонное устройство по умолчанию.
    Как показано на рисунке, выделенная часть - это место, где вы должны выбрать звуковую карту.

    На втором рисунке показан экран выбора звуковой карты.

  3. Нет подключения к Интернету: преобразование речи в текст требует активного подключения к Интернету.

Эта статья предоставлена Дипаком Шриватсавом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.