Технологии и инструменты преобразования речи в текст

MLOps ML Распознавание речи, машинное обучение для дата-инженеры, курсы Machine Learning Kafka Spark AirFlow, Школа Больших Данных Учебный Центр Коммерсант

Чтобы добавить в наши курсы для дата-инженеров и специалистов по Machine Learning еще больше практических примеров, сегодня рассмотрим, как построить ETL-конвейер для преобразования речи в текст с использованием Apache Kafka, Airflow и Spark. А также познакомимся с популярными фреймворками и готовыми сервисами распознавания речи.

ETL-конвейер распознавания речи: используемые технологии

Предположим, требуется реализовать средство сбора речевых данных, их отправки в корпоративное озеро с последующим получением файлов, применяя распределенное преобразование аудио в текст с помощью моделей машинного обучения. Этот конвейер обучения ML-модели может выглядеть следующим образом: сперва текст для чтения отображается во внешнем интерфейсе, чтобы пользователи могли вслух прочитать его. Произнесенный текст отправляется в кластер Kafka, откуда его потребляет Spark-приложение, обрабатывает и сохраняет данные в корзине облачного объектного хранилища AWS S3.

Для реализации этого конвейера пригодятся следующие технологии:

  • Apache Kafka – распределенная платформа потоковой передачи событий, оптимизированная для приема и обработки данных в режиме реального времени. В случае масштабной ML-системы распознавания речи данные могут непрерывно генерироваться тысячами источников данных, которые отправляют записи почти одновременно. Kafka может обрабатывать миллионы сообщений в секунду, что достаточно для обработки аудиозаписей.
  • Apache Airflow нужен, чтобы запланировать задачу, как только сработает событие в Kafka.
  • Apache Spark используется в качестве вычислительного движка распределенной обработки данных, чтобы обрабатывать и очищать большие объемы аудио, а также сохранять их в корзине облачного объектного хранилища S3, которое играет роль озера данных.
  • AWS S3 обеспечивает доступность данных для других задач, например, обучение новой ML-модели, улучшение существующей и анализ данных.

В качестве обучающего датасета для ML-модели использовался набор данных из 6 классов, разделенных по темам: политика, спорт, международные новости, местные новости, бизнес и развлечения. Классификация данных выполнена на основе тэгов с веб-сайтов и вручную проверена. Из речевых данных удалены шумы.

Для реализации пользовательского интерфейса можно использовать Javascript, подключенный к Apache Kafka с помощью соответствующего API под названием kafkajs, о котором мы писали здесь. Этот open-source проект от Confluent выпускается под лицензией MIT и не связан с Apache Software Foundation.  KafkaJS представляет собой клиент Apache Kafka для Node.js, совместимый с Kafka 0.10+ и встроенной поддержкой функций 0.11. Это полная реализация клиента Kafka на чистом JavaScript без зависимостей, что дает преимущества небольшого размера и простого развертывания с удобным API.

Прочитав показываемый в пользовательском интерфейсе текст из CSV-файла, собранного из источника данных типа новостной ленты, пользователь может отправить запись голоса в Apache Kafka. Сохраненное аудио будет опубликовано в кластере Kafka и расшифровано с помощью Spark. API Pyspark позволяет подписаться на топики Kafka, чтобы получить метаданные, обработать их и сохранить в корзине AWS S3. Apache AirFlow нужен для планирования рабочего процесса конвейера данных: как только событие запускается, он обеспечивает продолжение следующего этапа. В частности, для управления моделью машинного обучения, Apache AirFlow поможет построить цепочку задач со сложными логическими ветвлениями. Например, запускать задачи которые публикуют модель, только в том случае, если после обучения достигается определенная точность. Это можно реализовать с помощью BranchPythonOperator, о чем мы рассказывали во вчерашней статье.

Впрочем, чтобы преобразовать речь в текст, совсем не обязательно разрабатывать собственное Machine Learning решение. Можно взять готовые инструменты, о которых мы поговорим далее.

Особенности распознавания речи: готовые ML-решения

Человеческая речь содержит несколько особенностей, которые слушатель интерпретирует: тон, энергию, скорость и другие акустические свойства, что помогает уловить подтекст или намерение и буквальные слова. Работа в области распознавания речи начинается с преобразования речи в текст. Такая расшифровка считается начальным уровнем, когда из потока голосовых данных выделяются слова и предложения. В более продвинутых ML-приложениях анализируются контекст и смыслы с учетом эмоций. Этим анализ тональности текста отличается от распознавания речевых эмоций. При анализе настроений эмоции передаются в тексте буквально (с использованием отрицательных или положительных слов), что облегчает понимание предполагаемого значения, например, положительного или отрицательного, гневного или грустного. Для распознавания речи и эмоций применяются различные методы обработки звука, чтобы захватить этот скрытый слой информации, который может усиливать и извлекать из речи тональные и акустические характеристики.

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

Некоторые методы преобразования аудиоданных в числовые включают спектрограммы Мела, которые визуализируют аудиосигналы на основе их частотных компонентов, чтобы изобразить в виде звуковой волны и передать для обучения сверточной нейросети (CNN) в качестве классификатора изображений. Это можно зафиксировать, используя кепстральные коэффициенты Mel-частоты (MFCC). Каждый из этих форматов данных имеет свои преимущества и недостатки в зависимости от приложения.

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

  • RNN/LSTM, которые выполняют вычисления в последовательности временных шагов, что означает, что они могут запоминать прошлые данные из той же выборки при обработке следующей временной метки. Числовые признаки передаются в нейросеть, которая генерирует выходной логит-вектор. Выходные функции могут быть сопоставлены с текстовыми данными с использованием метода декодирования, такого как HMM или CTC.
  • Модели, основанные на внимании для задач сопоставления двух форматов данных, чтобы использовать ранее предсказанные последовательности и изучать сопоставление новых, используя подход кодировщик-декодер.
  • Listen-Attend-Spell (LAS) — один из первых подходов к объединению двух вышеупомянутых методов путем создания кодировщика, который изучает функции с использованием двунаправленных LSTM. Декодер разработан как блок, основанный на внимании, который учится на изученном представлении кодировщика, чтобы произвести выходную вероятность для следующей последовательности символов.

Для проблемы классификации распознавания речи и эмоций используются LSTM или их более сложные версии при работе с MFCC как с данными временного ряда. Они фиксируют изменения характеристик с течением времени для данного образца речи и моделируют поведение, чтобы предсказать класс эмоций. Сверточные нейросети (CNN) могут работать с MFCC в одномерной форме или учиться классифицировать спектрограммы Mel с помощью 2D-фильтров.

Из готовых пакетов распознавания речи особенно популярными сегодня считаются следующие:

  • wav2letter – open-course набор инструментов с открытым исходным кодом от Facebook AI Research, объединенный с более крупной библиотекой под названием Flashlight.
  • DeepSpeech на базе Baidu DeepSpeech, который помоможет расшифровать аудиофайл, используя предварительно обученные модели, или настроить/обучить пользовательский набор данных.
  • TensorFlowASR – пакет с открытым исходным кодом от Tensorflow реализует некоторые эталонные модели, обученные с использованием RNN с CTC.
  • OpenSeq2Seq — исследовательский проект от NVIDIA по проблемам преобразования последовательностей в последовательности.
  • SpeechRecognition — проект предоставляет доступ к нескольким моделям автоматического распознавания речи, включая оболочки для речевых API от Google, Microsoft Azure и IBM.

В заключение отметим пару отечественных решений, которые представлют собой уже готовые сервисы по распознаванию речи: SmartSpeech от СберDevices и Yandex SpeechKit от Яндекса. Они предоставляют API для доступа к возможностям сервисов, от распознавания речи до генерации «естественных» голосовых данных. Возможно, под капотом эти решения используют выше рассмотренные технологии сбора и преобразования речевых данных в текст. Разумеется, при использовании как полностью готовых сервисов, так и самописных решений, нужно учитывать все особенности разработки и внедрения ML-решений, с которыми справляются специализированные MLOps-инструменты.

Как внедрить лучшие практики MLOps для распознавания речи и других задач Machine Learning в аналитике больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/@smlalene/speech-to-text-data-collection-with-kafka-airflow-and-spark-fd74d34c6c7e
  2. https://www.confluent.io/blog/getting-started-with-kafkajs/
  3. https://www.projectpro.io/article/speech-emotion-recognition-project-using-machine-learning/573
  4. https://sberdevices.ru/smartspeech/
  5. https://cloud.yandex.ru/docs/speechkit/
Поиск по сайту