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

Сложности, с которыми сталкиваются разработчики систем распознавания речи:

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

  • Зависимость от домена

    a)     Разные дикторы

    b)    «акустический» канал записи звука: кодеки, искажения

    c)     Разное окружение: шум в телефоне, в городе, фоновые дикторы

    d)    Разный темп и подготовленность речи

    e)    Разная стилистика и тематика речи 

  • Большие и «неудобные» наборы данных

  • Не всегда интуитивно понятная метрика качества

Метрика качества

Качество распознавания измеряется по метрике WER (Word Error Rate).

WER=100*(Insertions+Substitutions+Deletions)/TotalWord

Insertions – вставки слов, которых нет в исходной аудиозаписи

Substitutions – замены слов на некорректные  

Deletions – система слово не распознала и сделала пропуск

Пример расчета

Исходные данные: Стационарный (неразборчивая речь) телефон зазвонил поздней ночью

Гипотеза: Стационарный синийi айфонs прозвонилsпоздней ночью

WER = 100*(1+2+0)/5 = 60% (т.е. ошибка равна 60%).

При этом есть как простые заблуждения при подсчете метрики, так и более сложные.

Пример простых заблуждений при подсчете метрики

  • Е/е с точками. Система переводит речь в текст и везде использует букву Е без точек, в то время как эталон, с которым сравнивается транскрипция, содержит Е с точками. Это  неправомерно увеличивает количество Substitutions и увеличивает WER на 1%.

  • разное написание таких слов, как алло, але, алле и т.д.

  • строчные и заглавные буквы

  • усреднение по текстам, а не подсчет общего количества слов. Бывает, что в одном тексте WER 0,6, в другом 0,5, а в третьем – 0,8. Неверно будет вывести WER как среднее арифметическое из этих значений. Правильнее – подсчитать общее количество слов на всех текстах и на основе этого рассчитать WER.

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

Типы систем распознавания речи

Системы распознавания речи бывают двух видов – гибридные и end2end. End2end переводят последовательность звуков в последовательность букв. Гибридные системы содержат акустическую и языковую модель, работающие независимо. Решение Amvera Speech построено на гибридной архитектуре.

Устройство гибридной системы распознавания речи

Принцип работы гибридной системы распознавания речи:

  • Нейронная сеть классифицирует каждый конкретный фрейм звука,

  • HMM моделирует «динамику», «лексикон», «лексику», опираясь на постериоры NN,

  • Алгоритм Viterbi (Viterbi decoder, beam-search) занимается поиском по HMM   оптимального пути, с учетом постериоров классификатора.

Общая схема построения гибридной системы распознавания речи
Общая схема построения гибридной системы распознавания речи

Первым шагом в гибридной модели распознавания речи выделяются признаки. Как правило, это MFCC коэффициенты.

Затем акустическая модель решает задачу классификации фреймов. Далее используется Viterbi-decoder (поиск по лучу). Он использует предсказание акустической модели и статистику языковой модели, которая по ngram показывает вероятность встречаемости звуков и слов. Затем производится рескоринг и выдается наиболее вероятное слово.

Устройство гибридной архитектуры
Устройство гибридной архитектуры

Ниже – иллюстрация классификации фреймов. Продемонстрированы фонемы в фреймах для слов «да и нет». Вероятность каждой из фонем записана в соответствующую ячейку.

№ фрейма/графема

0

1

2

3

4

5

6

7

8

Д

0

0

0,6

0,7

0

0

0

0

0

А

0

0.1

0

0.1

0.4

0.5

0.4

0.1

0

Н

0

0

0

0

0

0

0

0

0

Е

0

0.1

0.1

0.1

0.6

0.5

0.4

0

0

Т

0

0

0.3

0

0

0

0.1

0

0

Тишина (SIL)

1

0.8

0

0.1

0

0

0.1

0.9

1

Визуализируем принцип работы вычислительного графа

Представьте, что у вас в первом фрейме классификатор обнаружил фонему «д», и так 10 раз подряд. Цикл будет выполняться, пока не обнаружится фонема «а», и если слово содержится в словаре, оно будет записано.

Аналогично, алгоритм отработает слово «нет» и закончит работу, когда в
канале наступит тишина «SIL».

Визуализация принципа работы поискового графа
Визуализация принципа работы поискового графа

Совместим визуализацию поискового графа в связке с фреймами для большей наглядности:

Обучение гибридной системы распознавания речи

Рассмотрим общий принцип обучения классификатора акустической модели, принцип сопоставления фреймов с фонемами, количество классов и способы улучшения решения.

Обучение классификатора акустической модели:

  1. Возьмем графемы.

    Пример – М, А, Ш, А

  2. Представим их в виде фонем, получится m* i1 sh a0

    Для русской речи на обучающей выборке в 80 часов фонемы на 1 процент лучше, при 4 тысячах часов – разницы уже нет.

  3. Используем бифоны/биграфемы

    Моделируют влияние соседних фонем

    Левые: SIL (sil)M (м)А (а)Ш (ш)А SIL

    Правые: SIL M(a) A(ш) Ш(а) А(sil) SIL

  4. Можно использовать трифоны

    SIL (sil)M(a) (м)А(ш) (а)Ш(а) (ш)А(sil) SIL

  5. Либо использовать многостейтовые фонемы/графемы/трифоны …  

Как фрейму приписать фонему?

Проще всего это описать фразой «натянуть сову на глобус».

Для этого используем связку алгоритмов Flat-start+Viterbi forced alignment:

  1. берем пару звук-текст

  2. получаем фонемную запись

  3. разбиваем звук на равные части по числу фонем, приписывая соответствующие лейблы

  4. обучаем классификатор (обычно GMM).

  5. делаем forced alignment, получаем уточненные labels

  6. Повторяем пункт 4

После нескольких итераций, получаем labels, пригодные для обучения нейронной сети.

Классы

Если используются {би, три} {фоны, графемы}, то:

Проблема 1: классов слишком много

Бифоны: 57 фонем^2 – 3249

Двустейтовые бифоны: (2 стейта*57 фонем )^2=12996

Трифоны: 57фонем^3 = 185193

Проблема 2: размеры классов не сбалансированы

Решение – кластеризация

Объединяет похожие классы (5-10 тыс. классов)

Балансирует размеры классов

(класс называют сеноном для фонемных, ченоном для графемных моделей)

Улучшаем распознавание

Используем MMI или MPE/sMBR

  1. Строится CE-модель

  2. Строится «числитель» - множество вариантов распознавания, приводящих к правильному ответу

  3. Строится «знаменатель» - много неправильных вариантов распознавания

  4. Loss = f(числитель)/f(знаменатель) т.е. «поднять» правильные и «опустить неправильные»

Достоинства: sMBR несколько поднимает качество

Недостатки: стремится оттянуть выдачу label, следовательно портит time-разметку и latency.

Достоинства гибридной архитектуры распознавания речи

  1. Акустическая модель отделена от языковой. Языковую модель легко дополнить дополнительной информацией (новые слова и т.д.).

  2. Можно быстро получить NBest списки для улучшения с помощью языковой модели.

  3. Для обучения достаточно несколько десятков часов аудиозаписей.

Недостатки гибридной архитектуры распознавания речи

  1. Тяжеловесны для мобильных устройств.

  2. Не умеют распознавать слова, которых нет в словаре.

  3. Не модно.

Как итог - мы рассмотрели принцип устройства классической гибридной архитектуры распознавания речи.

Бонус для дочитавших: наш телеграм бот @AmVeraSpeechBot. В боте вы можете проверить качество работы нашего решения по распознаванию речи на основе классической гибридной архитектуры. Просто отправьте в бот короткую аудиодорожку или голосовое сообщение – и получите текстовую расшифровку.

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

В следующей статье мы подробнее расскажем о достоинствах и недостатках end2end и гибридных систем распознавания речи.

Комментарии (4)


  1. kirillkosolapov
    04.10.2022 14:00

    Было бы интересно почитать статью про end2end системы.


    1. Amvera_Speech Автор
      04.10.2022 14:03
      +2

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


  1. OlegIva
    04.10.2022 21:37
    +1

    Какие языки поддерживаете, только русский?


    1. Amvera_Speech Автор
      05.10.2022 07:31
      +3

      Олег, русский как основной - на нем лучшее качество за счет собственного набора данных для обучения. Но есть модели и для других языков (около 10), построенные на открытых датасетах.