www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Учебное пособие: Асинхронное распознавание речи в Python

Дата публикации May 25, 2017

Посмотрим правде в глаза: трудно конкурировать с моделями машинного обучения Google. Компания имееттакмного данных о том, что это вырывает конкуренцию из воды в отношении точности и качества. К сожалению, Google не справился со своей задачей, предоставив легко усваиваемую и актуальную документацию для своих API, что затрудняет работу начинающих и средних программистов.

Я столкнулся с этой проблемой недавно, когда пытался использовать API распознавания речи для транскрипции около 1200 новостных передач. Поскольку Google недавно изменил свой облачный API, многие примеры, которые я нашел в Интернете, оказались не очень полезными. Даже когда я обновилоблачный SDKЯ все еще сталкивался с проблемами, просто пытаясь запустить их пример кода.

Одной из альтернатив было использованиеБиблиотека SpeechRecognition, но, насколько я могу судить, он работает только для синхронных запросов, продолжительность которых ограничена одной минутой. Возможно, лучший программист мог бы найти решение, используя Google Python API, но вы застряли со мной. :)

Чтобы пройти этот урок, вам понадобятся следующие инструменты:

  • Python 2.7
  • Учетная запись Google
  • носки
  • WAV-файл(скачатьВот)

Активация облачных сервисов

Перейти кГлавная страница Google Cloudи подписаться на бесплатную пробную версию. Вы получите бесплатный кредит в размере 300 долларов США за регистрацию.

1) Создайте «проект» для хранения ваших учетных данных и платежной информации

2) Включите Google Speech API и следуйте инструкциям, чтобы активировать биллинг. Не беспокойтесь - с вас не будут платить, пока вы не перейдете на платный аккаунт.

3) Создайте ключ API и сохраните его для дальнейшего использования.

4) Создать облачное хранилище «ведро». Здесь мы будем размещать файлы, которые хотим транскрибировать. К сожалению тыимеютразмещать файлы в Google Storage для использования асинхронного сервиса.

Установка Sox

Следующим шагом является установка Sox на нашу машину. Sox - это действительно простая в использовании утилита командной строки для работы с аудиофайлами.

Если вы намакинтошВы можете использовать Homebrew для установки Sox ​​и его зависимостей, запустив в терминале следующее:

brew install sox

Если вы используетеUbuntu, вы можете запустить следующее из терминала:

sudo apt-get install libasound2-plugins libasound2-python libsox-fmt-all
sudo apt-get install sox

Преобразование аудио в моно

Теперь, когда у нас установлен Sox, мы можем начать настройку нашего скрипта Python. Поскольку API распознавания речи Google принимает только одноканальное аудио, нам, вероятно, потребуется использовать Sox для преобразования нашего файла. Вы можете проверить, посмотрев свойства файла с вашего компьютера:

Если ваш файл уже моно, вы можете пропустить этот шаг. Если нет, мы можем легко конвертировать его из Python, используя Sox.

  • 1) Импортируйте библиотеку подпроцесса для доступа к нашим исполняемым программам
import subprocess
  • 2) Напишите и запустите команду Sox, чтобы записать новый файл только с одним каналом.
filename = "test/test.wav"
newfilename = "test/newtest.wav"
command = ['sox', filename, '-c', '1', newfilename]
subprocess.Popen(command)
  • 3) Убедитесь, что наш новый файл преобразован правильно.

Загрузка конвертированного файла

С нашим аудио, преобразованным в моно, все, что нам нужно сделать, это загрузить новое аудио в Google Storage, и мы можем приступить к работе над нашим скриптом Python. Хотя это то, что вы, вероятно, захотите сделать программно с помощью модуля API Google Storage, это немного выходит за рамки этого руководства.

Вместо этого мы просто будем использовать веб-интерфейс, который мы использовали ранее. Вы хотите проверить опцию «поделиться публично», как показано на рисунке. Имейте в виду, что это будет доступно всему миру, пока вы не удалите его из Google Storage или не измените разрешения.

1) Импортируйте библиотеку запросов для отправки запроса в API Google и библиотеку json для анализа ответа.

import requests
import json

2) Определите URL, который мы будем использовать при оформлении запроса. Вам нужно будет заполнить пробелы ключом API, который вы сделали ранее.

url = "https://speech.googleapis.com/v1/speech:longrunningrecognize?key=YOURAPIKEYHERE"

3) Создайте параметры для нашего JSON-запроса. Это лишь некоторые из возможных параметров, которые мы можем указать. Вы можете проверить другиеВот,

payload = {
"config": {
"encoding": "LINEAR16",
"sample_rate_hertz": 48000,
"language_code": "en-US" },
"audio": {
"uri": "gs://BUCKETNAMEHERE/FILENAMEHERE.wav" }
}

4) Отправьте запрос и сохраните ответ.

r = requests.post(url, data=json.dumps(payload))

Ответ должен содержать числовой токен, который мы будем использовать для доступа к нашим результатам транскрипции. Вывод будет выглядеть примерно так:

Out[1]: {u'name': u'5284939751989548804'}

Мы можем сохранить токен следующим образом:

json_resp = r.json()
token_resp = json_resp['name']

5) Получите результаты (вы хотите подождать несколько секунд).

url = "https://speech.googleapis.com/v1/operations/" + str(token_resp) + "?key=YOURAPIKEYHERE"
content_response = requests.get(url)
content_json = content_response.json()

Вывод должен выглядеть так:

Вуаля!

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map