Как стать автором
Обновить
45.52
Открытая мобильная платформа
Российская мобильная доверенная ОС Аврора

Распознаем речь в Авроре

Время на прочтение4 мин
Количество просмотров3.2K

Аврора, созданная во многом с прицелом на корпоративное использование, часто используется в не совсем привычных для нормального человека условиях. Когда мобильное устройство — корпоративное, а передаваемая информация имеет не только ту ценность, которую охраняет закон о персональных данных №152-ФЗ, но и коммерческую составляющую, — на передний план выходит конфиденциальность и возможность обрабатывать данные, не отходя от кассы.

Пример, о котором мы говорим сегодня, — распознавание речи — сам по себе имеет несколько приложений. Их можно условно разделить на две группы: где важна только суть, а сам текст не столь важен (например, команды для переключения режимов работы устройства), и где важен именно текст как таковой (транскрибирование аудио).

Public vs Self-hosted vs Всё-своё-ношу-с-собой

Самый простой способ распознать аудио и превратить его в текст — отправить куда-то в облако. Например, сюда:

  • Google Cloud Speech-to-Text

  • Apple Speech Framework

  • Bing Voice Recognition

  • IBM Speech to Text

  • Яндекс SpeechKit

Все эти сервисы работают как публичные сетевые службы. Помимо очевидных сложностей с конфиденциальностью и хранением данных (в том числе персональных), такой путь требователен к интернет-соединению. Есть и приватные сетевые службы: 

  • SpeechPro

  • Jarvisen Translator (IFLYTEK)

  • Cheetah (Picovoice)

  • Центр речевых технологий (группа компаний ЦРТ)

Здесь, как это часто происходит, сталкиваются две альтернативы: либо пользоваться облаком с де-факто неограниченными ресурсами, но полностью зависеть от качества соединения (и от провайдера самого облачного решения), либо решать задачу на клиентском устройстве с максимальной автономностью и секьюрностью, ограничиваясь вычислительной мощностью устройства.

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

Вводные

ОС Аврора, на которой проводились тесты, представляет собой POSIX-совместимый дистрибутив Linux, использующий Linaro GNU Toolchain (C++ / gcc). С одной оговоркой: для быстродействия был исключен Fortran-компилятор.

Обзор существующих решений

Мы выделили пять: CMUSphinx, Kaldi, DeepSpeech, Facebook Flashlight и ESPNet. 

CMUSpinx

Поддержка этого модуля остановлена в пользу Kaldi в конце 2019 года.

Kaldi

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

DeepSpeech

По состоянию на лето 2021 года в этом решении ещё не готова модель для русского языка. Требование о поддержке русского — существенное. Хорошей иллюстрацией может служить тот факт, что библиотека Mozilla Common Voice, которой пользуется DeepSpeech, содержит около 130 часов речевых записей на русском (англоязычных при этом более 2000).

Facebook Flashlight

Более молодой и современный модуль, который, однако, также не поддерживает русский язык. Кроме того, Flashlight весьма ресурсоемкий и едва ли подойдет для мобильных устройств с низкой производительностью.

ESPNet

Ещё одна новинка, где используется сквозное распознавание речи — конечно, без поддержки русского.

Kaldi

По совокупности параметров мы, ожидаемо, остановили свой выбор на Kaldi.  Несмотря на то, что система построена аналогично Hidden Markov Model Toolkit (то есть на статистической модели, имеющей в основе марковские цепи), она позволяет сменить меру — например, чтобы перейти от статистической модели к нейронной сети. 

Для матричных вычислений и всевозможной работы с линейной алгеброй могут использоваться библиотеки OpenBLAS и LAPACK.

Кстати, portable-версия модели языка (если ограничиться каким-либо одним) занимает порядка 50 Mb. К слову, её (и остальные версии) подготовила и поддерживает команда Alpha Cephel. Она же поддерживает разработку Kaldi и высокоуровневую обертку VOSK. А без этих готовых открытых инструментов и данных не удалось бы в обозримые сроки проверить работу Kaldi на рассматриваемом устройстве.

Тесты

Тестовая Аврора версии 3.2.2.20 была развернута на INOI R7 с четырёхъядерным процессором Qualcomm Snapdragon 212 (1.2 Ghz) и 2 Gb оперативной памяти.

Результаты показали, что процесс занимает менее или порядка 10 секунд. При этом нагрузка первого ядра полная, а второго — около 20%. Стоит, однако, отметить, что глубокого исследования проведено не было и это первые полученные нами результаты, которыми спешим поделиться. Ожидаемые показатели соответствуют остальным платформам с этой же моделью — их можно проверить самому.

Заключение

Наиболее подходящее решение с поддержкой русского языка — Kaldi — требует сторонних реализаций библиотек для линейной алгебры. Открытая реализация для ARM и других платформ OpenBLAS написана на Фортране (а Аврора его не поддерживает на данный момент). Не смотря на это, нам удалось создать среду, позволяющую интегрировать Kaldi в операционную систему и успешно провести тестирование.

Этот случай, вероятно, ценен не только сам по себе: зачастую возникают ситуации, когда система не поддерживает Фортран, а тот или иной софт написан именно на нем. Из популярных примеров можно привести уже упомянутые библиотеки для работы с матричной алгеброй OpenBLAS и LAPACK, которые могут использоваться для работы с проектами в фреймворках для машинного обучения PyTorch и TensorFlow. Если есть вопросы или хотите поделиться мнениями, ждём ваших комментариев. 

Теги:
Хабы:
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Публикации

Информация

Сайт
omp.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия