Привет, Хабр. В рамках курса "Machine Learning. Advanced" подготовили для вас перевод интересного материала.
Также всех желающих приглашаем посмотреть открытый урок на тему «Multi-armed bandits для оптимизации AB тестирования».
Извлекаем разговоры из аудиозаписи с легкостью, используя Python.
В этой статье вы узнаете, как использовать IBM Speech to Text API для распознавания речи из файла аудиозаписи. Мы будем использовать бесплатную версию API, которая имеет некоторые ограничения, такие как, например, длина звукового файла. Подробнее об API я расскажу в этой статье чуть позже. Позвольте мне начать с предоставления вам некоторой справочной информации о применении распознавания речи в нашей повседневной жизни.
Предпосылки
Если вы читаете эту статью, я уверен, что вы знакомы с термином «искусственный интеллект» и осознаете его важность. Никого не повергнет в шок, если я скажу, что одно из лучших применений искусственного интеллекта в повседневной жизни — это распознавание речи.
Распознавание речи из аудио позволяет нам как минимум экономить время — мы говорим, вместо того, чтобы что-либо набирать. Это делает использование наших технологических устройств более увлекательным и простым. Эта технология также помогает нам взаимодействовать с этими устройствами без написания какого-либо кода. Представьте, что люди должны знать программирование, чтобы отдавать команды Алексе или Сири. Это было бы очень тупо.
Мне не терпится показать вам распознаватель речи в действии. Давай приступим к работе. Вот шаги, которым мы будем следовать в этом проекте.
Содержание:
Облачные сервисы распознавания речи
Шаг 1 - Библиотека
Шаг 2 - Импорт аудиоклипа
Шаг 3 - Определение распознавателя
Шаг 4 - Распознаватель речи в действии
Заключительный шаг - Экспорт результата
Облачные сервисы распознавания речи
Многие гигантские технологические компании имеют собственные распознавательные модели. Я поделюсь некоторыми из них здесь, чтобы вы увидели общую картину. Эти API-интерфейсы работают через облако и могут быть доступны из любой точки мира, если есть подключение к интернету. Кроме того, большинство из них являются платными, но их можно протестировать бесплатно. Например, Microsoft предлагает годовой бесплатный доступ для облачной учетной записи Azure.
Вот некоторые из наиболее популярных облачных сервисов преобразования речи в текст:
Шаг 1 — Библиотека
Для этого проекта нам понадобится всего одна библиотека. И это SpeechRecognition
. SpeechRecognition
распространяется бесплатно с открытым исходным кодом. Она поддерживает несколько механизмов распознавания речи и API. Такие как; Microsoft Azure Speech, Google Cloud Speech, API IBM Watson Speech to Text и другие. В этом проекте мы будем тестировать IBM Watson Speech to Text API. Не стесняйтесь изучить исходный код и документацию пакета SpeechRecognition здесь.
Начнем с установки пакета. Мы собираемся использовать pip, менеджер библиотек Python.
pip install SpeechRecognition
После завершения процесса установки мы можем открыть наш редактор кода. Вы также можете использовать Jupyter Notebook.
import speech_recognition as s_r
Шаг 2 - Импорт
Я записал голосовую заметку с помощью компьютера. Он был в формате m4a, но распознаватель не работает с форматом m4a. Вот почему мне пришлось преобразовать его в wav формат.
audio_file = s_r.AudioFile('my_clip.wav')
Шаг 3 - Определение распознавателя
На этом этапе все, что мы сделаем, это определим распознаватель речи. Ранее мы импортировали библиотеку. А теперь мы создадим новую переменную и присвоим ей атрибут распознавания.
rcgnzr = s_r.Recognizer()
Шаг 4 - Распознаватель речи в действии
Пришло время действия! Мы запустим IBM speech to text на нашем аудиофайле. Перед запуском распознавателя я запущу функции, называемые “adjust_for_ambient_noise
” и “record
”, которые подавят шум и улучшат звук. Таким образом, наш распознаватель сможет выдавать более точные результаты.
with audio_file as source:
rcgnzr.adjust_for_ambient_noise(source)
clean_audio = rcgnzr.record(source)
Отлично, теперь у нас есть достаточно чистая аудиозапись. А теперь давайте запустим распознаватель речи IBM. (Мне потребовалось несколько часов, чтобы понять, как IBM Speech-to-Text API интегрируется с библиотекой Python SpeechRecogniton
). Вот лучший способ вызвать распознаватель через API:
recognized_speech_ibm = r.recognize_ibm(clean_audio, username="apkikey", password= "your API Key")
Примечание: API IBM не работает без API-ключа. Нам нужно будет получить его на странице IBM Watson. Мне пришлось создать учетную запись для тестирования этой Speech-to-Text модели. Что мне понравилось в модели IBM, так это, что я могу обрабатывать 500 минут записей в месяц, используя триальную учетную запись, что более чем достаточно для учебных целей.
Последний шаг - экспорт результата
Мы почти закончили. Пора проверить результат. Наш распознаватель обнаружил речь в аудиофайле на предыдущем шаге. Мы продолжим и проверим, как это сработало. Если результат нас устроит, мы экспортируем его в текстовый документ.
Чтобы проверить распознанную речь, выведем переменную с распознанным текстом:
print(recognized_speech_ibm)
Выглядит хорошо. Мой аудиофайл был распознан как надо. Я читал абзац из этой статьи. Если вы не удовлетворены результатом, есть много способов предварительной обработки аудиофайла для получения лучших результатов. Вот хорошая статья, в которой представлена более подробная информация о распознавании речи и о том, как повысить качество распознавания.
Теперь я экспортирую распознанную речь в текстовый документ. Мы увидим сообщение «ready!» в нашем терминале по завершении экспорта.
with open('recognized_speech.txt',mode ='w') as file:
file.write("Recognized Speech:")
file.write("\n")
file.write(recognized)
print("ready!")
Поздравляю! Если вы читаете этот абзац, вы создали распознаватель речи. Надеемся, что вам понравилось это практическое руководство и вы узнали что-то новое сегодня. Лучший способ практиковать свои навыки программирования — заниматься интересными проектами. Я написал множеством других практических проектов, подобных этому. Не стесняйтесь обращаться ко мне, если у вас возникнут вопросы при реализации программы.
Подключайтесь. Посетите мой блог и YouTube, чтобы получить заряд вдохновения. Спасибо.
Узнать подробнее о курсе "Machine Learning. Advanced".
Посмотреть открытый урок на тему «Multi-armed bandits для оптимизации AB тестирования».