УДК 004.522

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

А.С. Пильненький*1, О.И. Федяев*2

*1 магистрант, Донецкий национальный технический университет, pi.16b.alex@gmail.com

*2 к.т.н, доцент, Донецкий национальный технический университет, fedyaev@donntu.org, OrcID: 0000-0001-6822-7306, SPIN-код: 7777-3791

Пильненький А.С., Федяев О.И. Технология построения речевого командного управления программами на базе платформы Android. В работе рассматриваются основные механизмы распознавания голосовых команд, подходы к эффективному распознаванию речи, разница работы приложения в онлайн и оффлайн режимах. Анализ выявил проблемы, возникающие на этапе проектирования распознавателя речи. В качестве платформы будущей программы выбран Xamarin - фреймворк для кроссплатформенной разработки мобильных приложений (iOS, Android, Windows Phone) с использованием языка C#.

Ключевые слова: фреймворк Xamarin, распознавание речи, MVS19, .Net.

Введение

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

Для оценки качества технологии распознавания речи применяются такие показатели, как степень точности, т. е. процент неправильно распознанных слов (WER), и скорость распознавания. На точность распознавания влияет множество факторов, включая произношение, акцент, тон, громкость и фоновые помехи. Главная цель системы распознавания речи - обеспечить такой коэффициент ошибок, который соответствовал бы разговору двух людей.

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

  • модуль шумоочистки и отделение полезного сигнала;
  • акустическую модель, которая позволяет оценить распознавание речевого сегмента с точки зрения схожести на звуковом уровне. Для каждого звука изначально строится сложная статистическая модель, которая описывает произнесение этого звука в речи;
  • языковую модель, которая позволяет определить наиболее вероятные последовательности слов. Сложность построения языковой модели во многом зависит от конкретного языка. Так, для английского языка, достаточно использовать статистические модели (так называемые N-граммы). Для высокофлективных языков (языков, в которых существует много форм одного и того же слова), к которым относится и русский, языковые модели, построенные только с использованием статистики, уже не дают такого эффекта - слишком много нужно данных, чтобы достоверно оценить статистические связи между словами. Для таких языков применяют гибридные языковые модели, использующие правила русского языка, информацию о части речи и форме слова и классическую статистическую модель;
  • декодер - программный компонент системы распознавания, который совмещает данные, получаемые в ходе распознавания от акустических и языковых моделей, и на основании их объединения, определяет наиболее вероятную последовательность слов, которая и является конечным результатом распознавания слитной речи.

Стоит отметить, что нагрузочное тестирование созданной системы распознавания очень трудно провести вручную.

Процесс распознавания включает следующие этапы:

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

Основной целью данной работы является выбор современной технологии для создания программной компоненты распознавания речевых команд управления мобильным телефоном на платформе Android, которая позволит интеллектуализировать осуществление звонков, отправку SMS-сообщений и других функций.

Анализ перспективной технологии распознавания речи

Распознавание речи или Speech-to-Text (STT) -- это очень востребованная в настоящее время технология преобразования речи в текст. Как было уже отмечено, это многоуровневый процесс анализа акустических сигналов, их структурирование в слова, фразы, предложения и преобразование в текстовый формат. Технологию распознавания речи иногда называют технологией распознавания голоса [1].

Speech-to-Text используется, когда необходимо создавать много письменного контента, но при этом не использовать ручной набор текста. Также распознавание речи помогает людям с ограниченными возможностями, которым сложно печатать текст вручную.

Технология распознавания голоса существует уже около 70 лет. Раньше всё сводилось к распознаванию простых слов и построению акустической модели. Речь представлялась статично и сравнивалась с готовыми шаблонами в словарях, что часто вело к ошибкам. Сейчас уровень точности и использование Speech-to-Text в повседневной жизни вышли на новый уровень. Благодаря машинному обучению системы распознавания постоянно совершенствуются. Каждое новое распознавание определяет точность следующего [7].

Когда голосовой запрос поступает в систему, она воспринимает его как последовательность акустических сигналов, которые плавно переходят друг в друга без чётких границ. Распознавание речи - это процесс восстановления по этим сигналам того, что было сказано. Обычно этот процесс делится на несколько этапов, выполняемых компьютером:

  1. Анализ сигнала. Компьютер отправляет полученный запрос на сервер, где он очищается от шумов и помех. После этого запись сжимается: делится на фрагменты длиной 25 миллисекунд. Каждый фрагмент пропускается через акустическую модель, которая определяет, какие именно звуки были произнесены, для последующего распознавания.
  2. Распознавание сигнала. Эталонные произношения, которые хранятся в акустической модели, сравниваются с каждым речевым фрагментом записи. Система с помощью методами машинного обучения подбирает варианты произнесенных слов и их контекст и собирает из звуков предполагаемые слова.
  3. Преобразование сигнала в текст. После этого, используя языковую модель, система определяет порядок слов и подбирает нераспознанные слова по контексту. Полученная информация поступает в декодер, который объединяет данные от акустической и языковой моделей и преобразует их в текст с наиболее вероятной последовательностью слов.

Описанный процесс можно представить в виде схемы на рис. 1.

Схема типичного процесса распознавания речи

Рисунок 1 — Схема типичного процесса распознавания речи

Одной из самых популярных систем распознавания речи является Yandex SpeechKit. Мобильный голосовой поиск на основе этой платформы доступен для смартфонов под управлением iOS, «Андроид» и Windows Phone, и понимает запросы на русском и турецком языках. Поддерживаются две темы запросов: «общая» (обычные запросы) и «гео» (адреса и названия организаций), причём, по словам разработчиков, точность распознавания составляет 84% и 94% соответственно. Скорость распознавания -- 1.1 секунды [5].

SpeechKit используется в приложениях «Яндекс.Браузер», «Яндекс.Город», «Яндекс.Карты», «Яндекс.Навигатор» и ещё в около 400 приложениях.

Система распознавания речи в миниатюре даёт возможность привязывать к любому слову или фразе любую команду для устройства; не требует доступа в Интернет; для запуска не нужно нажимать какие-либо кнопки; программа постоянно работает в фоновом режиме. Система способна извлекать из слов смысл и анализировать контекст: к примеру, система поймёт, что во фразе «Позвони Владимиру» имеется в виду человек, а во фразе «Поехали во Владимир» - город.

Преобразование текста в речь строится на базе скрытых Марковских моделей. Скрытая Марковская модель (СММ) - статистическая модель, имитирующая работу процесса, похожего на марковский процесс с неизвестными параметрами, и задачей ставится разгадывание неизвестных параметров на основе наблюдаемых. Полученные параметры могут быть использованы в дальнейшем анализе, например, для распознавания образов или речи [6].

Пример простейшей Марковской диаграммы изображён на рис. 2.

В данной графической модели использованы следующие обозначения: xi - скрытые состояния; yi - наблюдаемые результаты; aij - вероятности переходов; bi - вероятность результата.

Диаграмма переходов в скрытой Марковской модели

Рисунок 2 — Диаграмма переходов в скрытой Марковской модели

Распознавание речи средствами языка C#

На платформе .Net для распознавания речи целесообразно использовать библиотеку Microsoft Speech Platform SDK 11, которая в настоящее время поддерживает 26 языков [7].

Особенно интересно пространство имён Microsoft.Speech.Recognition, которое обеспечивает функциональные возможности для создания речевых грамматик [2].

Движки распознавания используют семантическую информацию в грамматиках для интерпретации результатов распознавания.

Грамматика маршрутной команды

Рисунок 3 — Грамматика маршрутной команды

Грамматики - это специальные правила на языке разметки XML, определяющие синтаксис слов и фраз, которые движок распознавания речи должен распознать. Фразы и подвыражения, как правило, представлены отдельными правилами, которые могут объединяться в более крупные фразы и предложения по правилам более высокого уровня [2].

Рассмотрим пример голосовой команды прокладки маршрута от точки А к точке Б. Грамматика такой команды будет выглядеть как показано на рис. 3. Грамматика состоит из элементов и атрибутов. Фразы помещаются в атрибут item списка one-of. В элемент tag можно записать семантическую информацию, которую при распознавании фразы можно извлечь. Для ссылки на другие правила используется элемент ruleref, результат от ссылочного правила можно получить, используя специальный префикс $$ [3].

Таким образом, если результат распознавания успешный, то в переменных получаем следующую информацию: cmd -- имя команды route, from -- точку А, to -- точку Б. Значения элемента tag можно получить с помощью исходного кода, описывающего семантику процесса на рис. 4:

Получение кода управляющей команды, вводимой голосом

Рисунок 4 — Получение кода управляющей команды, вводимой голосом

Таким способом можно управлять различными приложениями или объектами операционной системы с помощью голоса, создавать интерактивные диалоговые системы. В нашем случае, будет осуществляться управление звонками и текстовыми сообщениями. Учитывая особенности разработки программного обеспечения для мобильных телефонов, целесообразнее будет применить расширение Android.Speech, и тогда программный код будет изменён [4].

Рассмотрим простейший пример перемещения объекта в плоскости (X,Y) с помощью голосового ввода команды управления перемещением по оси X или Y. Вариант упрощённого кода показан на рис. 5:

Пример программного кода с учётом Android Activity

Рисунок 5 — Пример программного кода с учётом Android Activity

Как видно из примера, с помощью голосового управления, реализованного по описанной технологии, можно осуществлять перемещение объекта по оси Y (north - south).

Заключение

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

В качестве основных средств для реализации процесса автоматического распознавания речи на современном уровне программной инженерии можно рекомендовать библиотеки Microsoft Speech Platform SDK 11 и технологию Android.Speech.

Литература

  1. Распознавание речи без подключения к сети -- Режим доступа: https://www.cyberforum.ru/delphi/thread604358.html - Загл. с экрана;
  2. Распознавание речи в C#. -- Режим доступа: https://habr.com/ru/sandbox/103574/ - Загл. с экрана;
  3. Speech recognition using Azure Speech Service -- Режим доступа: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/azure-cognitive-services/speech-recognition - Загл. с экрана;
  4. Android Speech -- Режим доступа: https://docs-microsoft-com.translate.goog/en-us/xamarin/android/platform/speech?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=nui,sc - Загл. с экрана;
  5. Основные возможности эффективных решений для распознавания речи -- Режим доступа: https://www.ibm.com/ru-ru/cloud/learn/speech-recognition - Загл. с экрана;
  6. Скрытая марковская модель -- Режим доступа: https://ru.wikipedia.org/wiki/Скрытая_марковская_модель - Загл. с экрана;
  7. Речевые технологии. Часть 2. Speech-to-Text: как работает распознавание речи -- Режим доступа: https://voximplant.ru/blog/how_does_speech_to_text_work - Загл. с экрана.

Пильненький А.С., Федяев О.И. Технология построения речевого командного управления программами на базе платформы Android. В работе рассматриваются основные механизмы распознавания голосовых команд, подходы к эффективному распознаванию речи, разница работы приложения в онлайн и оффлайн режимах. Анализ выявил проблемы, возникающие на этапе проектирования распознавателя речи. В качестве платформы будущей программы выбран Xamarin - фреймворк для кроссплатформенной разработки мобильных приложений (iOS, Android, Windows Phone) с использованием языка C#.

Ключевые слова: фреймворк Xamarin, распознавание речи, MVS19, .Net.

Pilnenky A.S., Fedyaev O.I. Technology for building speech command control programs based on the Android platform. The paper discusses the main mechanisms of voice command recognition, approaches to effective speech recognition, the difference between the operation of the application in online and offline modes. The analysis revealed problems that arise at the design stage of the speech recognizer. Xamarin, a framework for cross-platform development of mobile applications (iOS, Android, Windows Phone) using the C# language, was chosen as the platform of the future program.

Keywords: Xamarin Framework, speech recognition, MVS19, .Net.