Распознавание речи - это часть Обработки естественного языка, которая является подполем Искусственный интеллект. В распознавании речи произнесенные слова / предложения переводятся в текст с помощью компьютера. Он также известен как преобразование речи в текст (STT).

Если вы хотите начать создавать распознавание речи / расшифровку аудио на Python, то это небольшое руководство может быть очень полезным и предоставит базовые идеи для начала работы.

Почему Python?

Python предлагает богатые библиотеки, которые значительно облегчат вам жизнь при разработке сложных приложений. Многие из этих вещей вы найдете уже встроенными, и на их основе вы можете построить свою функциональность.

Для распознавания речи Python также имеет множество библиотек, которые упрощают и ускоряют процесс разработки.

И еще одно: если вы знакомы с C / C ++, PHP или любым другим базовым языком, тогда изучение Python станет довольно простым. У него легкая кривая обучения.

Использование распознавания речи

Распознавание речи может быть очень полезным в ряде приложений. Особенно в личном помощнике-боте, диктовке, системе управления на основе голосовых команд, транскрипции аудио, быстрых заметках с поддержкой звука, аутентификации на основе голоса и т. Д.

Давайте начнем

Установить Python

Хорошо, если вы мало знакомы с Python. Если нет, то не беспокойтесь. Это займет немного больше времени, но вы сможете успешно дойти до конца, приложив дополнительные усилия.

В этом руководстве мы будем использовать Python 3.x. Начнем с уровня 0, установив python. Если в вашей системе уже установлен Python, вы можете пропустить этот шаг и перейти к следующему.

Теперь установить Python можно несколькими способами. Либо вы можете установить Python автономно, либо установить дистрибутив, например Anaconda, который поставляется с Python.

Чтобы установить python, запустите sudo apt install python3.7, если вы используете Ubuntu, или следуйте https://www.youtube.com/watch?v=dX2-V2BocqQ, если вы работаете в Windows.

Или, если вы решите использовать Anaconda, вы можете следовать инструкциям на странице https://conda.io/docs/user-guide/install/index.html

В приведенном ниже руководстве мы использовали python3.x в Ubuntu 18.04.

Установите необходимые библиотеки

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

Установите пакеты с помощью следующих команд (если pip3 еще не установлен, сначала установите его с помощью команды «sudo apt install python3-pip»):

pip3 install SpeechRecognition

Теперь, прежде чем устанавливать pyaudio для аудиопотока ввода / вывода, убедитесь, что вы установили portaudio с помощью следующей команды

sudo apt-get install portaudio19-dev

«Portaudio» - это независимая от Python библиотека C, поэтому ее нельзя установить с помощью pip. Если у вас не установлено portaudio, вы можете столкнуться со следующей ошибкой:
ОШИБКА: Не удалось построить колесо для pyaudio.

Выполните команду ниже, чтобы установить библиотеку pyaudio python после успешной установки portaudio.

pip3 install pyaudio

Теперь ваша общая настройка готова.

В библиотеке SpeechRecognition есть разные методы распознавания речи из аудиоисточника с использованием различных API. Эти API-интерфейсы используют различные сторонние сервисы для обнаружения речи. Мы собираемся изучить ниже методы библиотеки SpeechRecognition:

  • признать_google () для Google Web Speech API: с помощью Google Web Speech API (этот API по умолчанию включает некоторые функции)
  • признать_google_cloud () для Google Cloud Speech API: с помощью Google Cloud Speech API.
  • признать_sphinx () для CMUSphinx: Использование CMU Sphinx - требуется установка PocketSphinx
  • признать_wit () для WIT.AI: с помощью службы распознавания речи, предоставляемой wit.ai
  • IBM Speech to Text: метод recgonize_ibm () SpeechRecognition не работал из-за проблемы с учетными данными, поскольку IBM обновила систему учетных данных. Так что мы не использовали его. Вместо этого мы использовали для этого библиотеку IBM.

1. GOOGLE WEB SPEECH API

Если вы хотите использовать Google Web Speech API, вам не нужно устанавливать никаких дополнительных пакетов / библиотек, кроме упомянутых выше.

Ниже приведен фрагмент кода для преобразования речи в текст с использованием API Google Web Speech с вводом звука с помощью микрофона:

import speech_recognition as sr

r = sr.Recognizer()
speech = sr.Microphone(device_index=0)
# for recognizing speech
with speech as source:
    print("say something!…")
    audio = r.adjust_for_ambient_noise(source)
    audio = r.listen(source)
# Speech recognition using Google Speech Recognition
try:
    recog = r.recognize_google(audio, language = 'en-US')
    # for testing purposes, we're just using the default API key
    # to use another API key, use r.recognize_google(audio)
    # instead of r.recognize_google(audio)

    print("You said: " + recog)
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))

Если вы хотите расшифровать речь из аудиофайла, вы можете легко сделать это, предоставив аудиофайл и обработав его через Google Web Speech API.

Ниже приведен фрагмент кода преобразования речи в текст с использованием Google Web Speech API для расшифровки аудиофайла:

import speech_recognition as sr
r = sr.Recognizer()
file = sr.AudioFile('FILE_NAME.wav')
# for transcripting audio
with file as source:
    audio = r.record(source)
# Speech recognition using Google Speech Recognition
try:
    recog = r.recognize_google(audio, language = 'en-US')
    # for testing purposes, we're just using the default API key
    # to use another API key, use r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")
    # instead of `r.recognize_google(audio)`` 
    print("You said: " + recog)
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, AIFF-C, FLAC.

Очень важным преимуществом Google Cloud Speech API является его точность. Но ограничение этого Web Speech API состоит в том, что вы можете делать максимум 50 запросов в день. Кроме того, доступ по умолчанию, предоставляемый Google, может быть отменен в любое время. Поэтому не рекомендуется использовать это в проекте производственного уровня.

2. GOOGLE CLOUD SPEECH TO TEXT API

Другой вариант, предоставляемый Google, - это их сервис Speech To Text API, который можно использовать для живых проектов. Чтобы использовать Google Cloud Speech To Text API, нам нужно будет установить библиотеки, необходимые для его работы.

Установите ниже библиотеки

pip3 install google-api-python-client
pip3 install google-cloud-speech
pip3 install oauth2client

После установки необходимых библиотек нам нужно создать проект в Google Cloud и скачать файл JSON с ключом сервисного аккаунта.

Чтобы скачать файл ключа JSON для сервисного аккаунта, откройте Google Cloud Platform:

  • Нажмите на меню гамбургеров в верхнем левом углу.
  • Выберите IAM & Admin.
  • Выберите учетные записи служб
  • Затем загрузите ключ JSON, нажав на 3 точки и кнопку «Создать ключ».

После загрузки ключа поместите его в тот же каталог, что и ваш файл кода.

Теперь мы готовы звонить в Google Cloud Speech To Text API.

Ниже приведен фрагмент кода для преобразования речи в текст с использованием Google Cloud Speech API с вводом звука с помощью микрофона:

import speech_recognition as sr 
import os  
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="SERVICE_ACCOUNT_KEY.JSON"
r = sr.Recognizer() 
file = sr.Microphone(device_index=0 )  
with file as source:  
    print("say something!!.....")  
    audio = r.adjust_for_ambient_noise(source)  
    audio = r.listen(source)      
try: 
    recog = r.recognize_google_cloud(audio, language = 'en-US')     print("You said: " + recog)
except sr.UnknownValueError as u:
    print(u)
    print("Google Cloud Speech Recognition could not understand audio")
except sr.RequestError as e:
    print("Could not request results from Google Cloud Speech Recognition service; {0}".format(e))

Ниже приведен фрагмент кода для преобразования речи в текст с использованием Google Cloud Speech API для расшифровки аудиофайла:

import speech_recognition as sr
import os

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="SERVICE_ACCOUNT_KEY.JSON"

r = sr.Recognizer()
file = sr.AudioFile('AUDIO_FILE.wav')

with file as source:
    audio = r.record(source)

try:
    recog = r.recognize_google_cloud(audio, language = 'en-US')
    print("You said: " + recog)
except sr.UnknownValueError as u:
    print(u)
    print("Google Cloud Speech Recognition could not understand audio")
except sr.RequestError as e:
    print("Could not request results from Google Cloud Speech Recognition service; {0}".format(e))

Google Cloud Speech API предоставляется бесплатно до 60 минут. За большее использование с вашей учетной записи будет взиматься плата в соответствии с их моделью ценообразования.

3. CMUSPHINX

Итак, еще одна альтернатива Google API - CMUSphinx. Это API-интерфейс распознавания речи в автономном режиме, который является его USP. Но он менее точен, чем Google Cloud Speech API.

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

sudo apt-get install -y python python-dev python-pip build-essential swig git libpulse-dev

тогда:

pip3 install pocketsphinx

pocketsphinx будет успешно установлен.

Ниже приведен фрагмент кода для преобразования речи в текст с использованием PocketSphinx с вводом звука с помощью микрофона:

import speech_recognition as sr

r = sr.Recognizer()
speech = sr.Microphone(device_index=0)
# for speech recognition
with speech as source:
    print("say something!…")
    audio = r.adjust_for_ambient_noise(source)
    audio = r.listen(source)
# recognize speech using Sphinx
try:
    recog = r.recognize_sphinx(audio)  
    print("Sphinx thinks you said '" + recog + "'")  
except sr.UnknownValueError:  
    print("Sphinx could not understand audio")  
except sr.RequestError as e:  
    print("Sphinx error; {0}".format(e))

Ниже приведен фрагмент кода для преобразования речи в текст с использованием PocketSpinx для расшифровки аудиофайла:

import speech_recognition as sr
r = sr.Recognizer()
file = sr.AudioFile('FILE_NAME.wav')
# for audio transcription
with file as source:
    audio = r.record(source)
# recognize audio using Sphinx
try:
    recog = r.recognize_sphinx(audio)  
    print("Sphinx thinks you said '" + recog + "'") 
 
except sr.UnknownValueError:  
    print("Sphinx could not understand audio")  
except sr.RequestError as e:  
    print("Sphinx error; {0}".format(e))

Неточность - главный недостаток PocketSphinx API.

4. Преобразование речи в текст IBM Watson

IBM Watson Speech to Text API также является основным механизмом распознавания речи, который можно включить в приложение, требующее распознавания речи или транскрипции звука.

Чтобы начать работу с API IBM, вам сначала потребуется учетная запись IBM Cloud. После создания учетной записи выполните следующие действия.

  1. в верхнем левом меню навигации на панели инструментов перейдите к списку ресурсов.
  2. затем нажмите «Создать ресурс».
  3. затем в разделе категорий выберите AI и выберите «Преобразование речи в текст». Создайте свой сервис, ничего не меняя.
  4. после того, как ваша служба будет создана, щелкните по ней.
  5. выберите «Управление» в меню навигации и нажмите «Показать учетные данные».
  6. скопируйте ключ API и сгенерированный URL.

Выполните следующие команды в терминале.

pip3 install ibm-watson

Ниже приведен фрагмент кода для преобразования речи в текст с использованием службы IBM Speech To Text с вводом звука с помощью микрофона:

import speech_recognition as sr
from ibm_watson import SpeechToTextV1
import json
r = sr.Recognizer()
speech = sr.Microphone()
speech_to_text = SpeechToTextV1(
    iam_apikey = "YOUR_API_KEY",
    url = "YOUR_URL"
)
with speech as source:
    print("say something!!…")
    audio_file = r.adjust_for_ambient_noise(source)
    audio_file = r.listen(source)
speech_recognition_results = speech_to_text.recognize(audio=audio_file.get_wav_data(), content_type='audio/wav').get_result()
print(json.dumps(speech_recognition_results, indent=2))

Вам нужно будет обновить свой ключ API и URL-адрес.

Ниже приведен фрагмент кода для преобразования речи в текст с использованием службы IBM Speech to Text для расшифровки аудиофайла:

import speech_recognition as sr
from ibm_watson import SpeechToTextV1
import json
r = sr.Recognizer()
speech_to_text = SpeechToTextV1(
    iam_apikey = "YOUR_API_KEY",
    url = "YOUR_URL"
)
with open('FILE_NAME.wav', 'rb') as audio_file:
    speech_recognition_results = speech_to_text.recognize(
        audio=audio_file,
        content_type='audio/wav'
    ).get_result()
print(json.dumps(speech_recognition_results, indent=2))

5. WIT.AI

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

Чтобы использовать wit.ai, выполните следующие действия:

  1. в вашем браузере доступ wit.ai
  2. войдите, используя свою учетную запись github. если у вас его нет, создайте его.
  3. щелкните каталог MYFirstApp, затем перейдите в настройки.
  4. там вы найдете свой токен доступа к серверу или токен клиентского доступа. Скопируйте его, так как он понадобится для аутентификации в скрипте python.

Выполните следующую команду, чтобы установить пакеты остроумия.

pip3 install wit

остроумие будет успешно установлено.

Ниже приведен фрагмент кода для преобразования речи в текст с использованием WIT.AI с вводом звука с помощью микрофона:

import speech_recognition as sr
r = sr.Recognizer()
speech = sr.Microphone()
with speech as source:
    print("say something!!….")
    audio = r.adjust_for_ambient_noise(source)
    audio = r.listen(source)
try:
    recog = r.recognize_wit(audio, key = "your key")
    print("You said: " + recog)
except sr.UnknownValueError:
    print("could not understand audio")
except sr.RequestError as e:
    print("Could not request results ; {0}".format(e))

Ниже приведен фрагмент кода для преобразования речи в текст с использованием WIT.AI для расшифровки аудиофайла:

import speech_recognition as sr
r = sr.Recognizer()
file = sr.AudioFile("FILE_NAME.wav")
with file as source:
    audio = r.record(source)
try:
    recog = r.recognize_wit(audio, key = "your key")
    print("You said: " + recog)
except sr.UnknownValueError:
    print("could not understand audio")
except sr.RequestError as e:
    print("Could not request results ; {0}".format(e))

Вывод: это довольно базовый уровень распознавания речи, еще далеко не готовый к производству. Мы создали это руководство, чтобы вы начали работу с распознаванием речи в Python. Многих это пугает, когда они начинают, и они вообще отказываются от этого. Но, как видите, это не так уж и сложно.

Используя эти базовые знания, мы теперь можем придумать лучшие способы сделать его готовым к работе и использовать в реальных приложениях. Следите за обновлениями, чтобы увидеть больше уроков, которыми мы поделимся, чтобы показать, как мы использовали это распознавание речи в реальных приложениях.

Первоначально опубликовано на конференции Распознавание речи - преобразование речи в текст в Python с использованием Google API, Wit.AI, IBM Watson, CMUSphinx 9 мая 2019 г.