Разрабатываем приложения для распознавания речи с помощью Python

Что такое распознавание речи?

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

Skillfactory.ru

Мы хорошо знаем все эти методы. Такие приложения, как Apple Siri, Google Assistant, Amazon Alexa, доступны большинству из нас. Конечно, они опережают себе подобные, в их основе лежит серьезная инженерия. Помимо синтеза осмысленных звуковых сигналов в них также используются алгоритмы NLP (обработки естественного языка).

Преобразование речи в текст — первый шаг к созданию голосового помощника. Итак, во-первых, мы ожидаем, что приложение поймет, о чем мы говорим, не так ли? Если он может синтезировать звуки, которые в его коде преобразуются в текст, то первый шаг в обработке этих звуковых данных уже сделан. В этой статье мы разработаем два приложения на Python с помощью нескольких библиотек и сосредоточимся на проблеме преобразования речи в текст.

1. Приложение для преобразования аудиофайлов в текст

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

Распознавать речь мы будем в основной библиотеке SpeechRecognition. Как можно понять из названия этой библиотеки, принцип ее работы основан на распознавании речи, и она взаимодействует со многими API.

API, поддерживаемые библиотекой:

Начнем писать код!

1. Для начала установим модуль SpeechRecognition:

pip install SpeechRecognition

2. Теперь подключим нашу библиотеку:

import speech_recognition as sr

3. Присвоим распознающее устройство переменной, с помощью которой будет происходить процесс распознавания:

r = sr.Recognizer()

4. Создадим аудиофайл.

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

  • WAV
  • AIFF
  • AIFF-C
  • FLAC

Также работать можно с mp3, m4a и файлами других типов. Для этого нам придется воспользоваться онлайн-конвертером аудиозаписи. Я выбрал zamzar. Загружаем файл и преобразуем его в формат .wav.

zamzar.com

Присвоим созданному нами аудиофайлу значение переменной файлового типа:

file = sr.AudioFile(‘deneme.wav’)

5. Теперь мы можем преобразовать звук в текст:

with file as source:
r.adjust_for_ambient_noise(source)
audio = r.record(source)
result = r.recognize_google(audio,language=’tr’)
print(result)

Для распознавания данных мы использовали метод recognize_google, реализованный с помощью Google Cloud Speech API. Кроме того, мы присвоили языку значение language = ‘tr’, чтобы программа лучше воспринимала звуки турецкого языка.

6. Выполняем код.

Мы протестировали код, обработав две секунды короткого аудиофайла под названием “deneme deneme” (турецкий язык). Результат полностью оправдал наши ожидания.

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

2. Приложение для мгновенного преобразования речи с микрофона в текст

В этом приложении мы постараемся преобразовать звуки в текст в режиме реального времени, используя микрофон компьютера. Для этого мы снова воспользуемся библиотекой SpeechRecognition. Также мы будем использовать новый модуль PyAudio. Он необходим для того, чтобы иметь возможность обрабатывать аудиовход.

Начнем писать код!

1. Установим модули:

pip install SpeechRecognition
pip install pyaudio

Если вы работаете на Mac, вам необходимо установить portaudio. Для этого используйте brew:

brew install portaudio
pip install pyaudio

Если вы уже скачали SpeechRecognition для предыдущего приложения, вам не нужно устанавливать его снова.

2. Подключим библиотеку и назначим метод для определения данных:

import speech_recognition as sr
r = sr.Recognizer()

Опять же, если вы выполняли эти шаги в предыдущем приложении, вам не нужно их повторять.

3. Преобразуем звук в текст.

Skillfactory.ru
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
data = r.record(source, duration=5)
print(“Sesinizi Tanımlıyor…”)
text = r.recognize_google(data,language=’tr’)
print(text)

В предыдущем приложении мы использовали аудиофайл в качестве источника звука. Для этого приложения источником является микрофон, для захвата звука мы используем метод sr.Microphone (). Аналогичным образом указываем, что отслеживаемый язык турецкий. При желании можно настроить время прослушивания звука. В этом примере оно составляет пять секунд. Однако, если нужно, время можно продлить.

4. Выполняем код.

Мы повторяли цикл “Merhaba Dünya” (турецкий язык) в течение пяти секунд и получили следующий результат. Программа так же справляется с более длинными предложениями:

Чтобы понять, как работает модуль, посмотрим, как код производит альтернативные выходные данные, используя опцию show_all = True.

text = r.recognize_google(data,show_all=True,language=’tr’)

Мы разработали два простых приложения, которые наглядно демонстрируют, как происходит преобразование звука. Сделали мы это с помощью Google Cloud Speech API

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

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

Спасибо за чтение!

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Onur Okyol: Creating a Voice Recognition Application with Python.

Предыдущая статьяВизуальная иерархия в дизайне
Следующая статьяMongoDB: запрос, обновление и удаление документа