На «Еще одной конференции 2013» мы представлен разработчики нашей новой библиотеки Yandex SpeechKit. Это общедоступный API для распознавания речи, который могут использовать разработчики Android и iOS. Вы можете скачать SpeechKit, а также прочитать документацию.
Здесь .
Yandex SpeechKit позволяет напрямую получить доступ к бэкенду, который успешно используется в мобильных приложениях Яндекса.
Мы довольно долго разрабатывали эту систему и сейчас правильно распознаем 94% слов в Навигаторе и Мобильных Картах, а также 84% слов в Мобильном Браузере.
В этом случае распознавание занимает чуть больше секунды.
Это уже очень достойное качество, и мы активно работаем над его улучшением.
Можно утверждать, что в ближайшем будущем голосовые интерфейсы практически не будут отличаться по надежности от классических методов ввода.
Подробный рассказ о том, как нам удалось добиться таких результатов и как работает наша система, — под катом.
Распознавание речи — одна из самых интересных и сложных проблем искусственного интеллекта.
Здесь задействованы достижения самых разных областей: от компьютерной лингвистики до цифровой обработки сигналов.
Чтобы понять, как должна быть структурирована машина, понимающая речь, давайте сначала поймем, с чем мы имеем дело.
I. Основы
Для нас устная речь — это, прежде всего, цифровой сигнал.И если мы посмотрим на запись этого сигнала, то не увидим там ни слов, ни четко определенных фонем — разные «речевые события» плавно перетекают друг в друга, не образуя четких границ.
Одна и та же фраза, произнесенная разными людьми или в разных ситуациях, на уровне сигнала будет выглядеть по-разному.
При этом люди каким-то образом узнают речь друг друга: следовательно, существуют инварианты, согласно которым по сигналу можно реконструировать то, что было сказано на самом деле.
Нахождение таких инвариантов является задачей акустического моделирования.
Предположим, что человеческая речь состоит из фонем (это грубое упрощение, но в первом приближении оно верно).
Определим фонему как минимальную смысловую единицу языка, то есть звук, замена которого может привести к изменению значения слова или фразы.
Возьмем небольшой участок сигнала, скажем, 25 миллисекунд. Назовем этот раздел «рамкой».
Какая фонема прозвучала в этом кадре? На этот вопрос сложно ответить однозначно – многие фонемы чрезвычайно похожи друг на друга.
Но если однозначного ответа дать невозможно, то можно рассуждать в терминах «вероятностей»: для данного сигнала одни фонемы более вероятны, другие менее вероятны, а третьи вообще можно исключить из рассмотрения.
Фактически акустическая модель — это функция, которая принимает на вход небольшой участок акустического сигнала (кадра) и выдает вероятностное распределение различных фонем на этом кадре.
Таким образом, акустическая модель позволяет по звуку реконструировать сказанное — с разной степенью достоверности.
Другой важный аспект акустики — вероятность перехода между разными фонемами.
Из опыта мы знаем, что некоторые сочетания фонем легко произносятся и встречаются часто, тогда как другие труднее произносятся и реже используются на практике.
Мы можем обобщить эту информацию и учесть ее при оценке «правдоподобности» той или иной последовательности фонем.
Теперь у нас есть все инструменты для построения одной из основных «рабочих лошадок» автоматического распознавания речи — скрытой модели Маркова (HMM, Hidden Markov Model).
Для этого представим на минутку, что мы решаем не задачу распознавания речи, а прямо противоположную — преобразование текста в речь.
Допустим, мы хотим получить произношение слова «Яндекс».
Пусть слово «Яндекс» состоит из набора фонем, скажем, [th][a][n][d][e][k][s].
Построим конечный автомат для слова «Яндекс», в котором каждая фонема представлена отдельным состоянием.
В каждый момент времени мы находимся в одном из этих состояний и «произносим» звук, характерный для этой фонемы (мы знаем, как произносится каждая фонема, благодаря акустической модели).
Но некоторые фонемы сохраняются долго (как [а] в слове «Яндекс»), другие практически проглатываются.
Вот тут-то и пригодится информация о вероятности перехода между фонемами.
Сгенерировав звук, соответствующий текущему состоянию, мы принимаем вероятностное решение: оставаться ли нам в том же состоянии или перейти к следующему (и, соответственно, следующей фонеме).
Более формально HMM можно представить следующим образом.
Во-первых, давайте представим понятие выбросов.
Как мы помним из предыдущего примера, каждое из состояний ХММ «генерирует» звуковую характеристику этого конкретного состояния (т. е.
фонему).
В каждом кадре звук «разыгрывается» из распределения вероятностей, соответствующего данной фонеме.
Во-вторых, возможны переходы между состояниями, также подчиняющиеся заранее заданным вероятностным закономерностям.
Например, вероятность того, что фонема [а] «вытянется», высока, чего нельзя сказать о фонеме [д].
Матрица выбросов и матрица перехода однозначно определяют скрытую модель Маркова.
Хорошо, мы рассмотрели, как можно использовать скрытую марковскую модель для генерации речи, но как мы можем применить ее к обратной задаче распознавания речи? Приходит на помощь Алгоритм Витерби .
У нас есть набор наблюдаемых величин (фактически звука) и вероятностная модель, которая соотносит скрытые состояния (фонемы) и наблюдаемые величины.
Алгоритм Витерби позволяет восстановить наиболее вероятную последовательность скрытых состояний.
Пусть в нашем словаре распознавания будет всего два слова: «Да» ([д][а]) и «Нет» ([н'][е][т]).
Итак, у нас есть две скрытые модели Маркова.
Далее, предположим, что у нас есть голосовая запись пользователя, говорящего «да» или «нет».
Алгоритм Витерби позволит получить ответ на вопрос, какая гипотеза распознавания более вероятна.
Теперь наша задача сводится к восстановлению наиболее вероятной последовательности состояний скрытой модели Маркова, которая «сгенерировала» (точнее, могла сгенерировать) представленную нам аудиозапись.
Если пользователь говорит «да», то соответствующая последовательность состояний на протяжении 10 кадров может быть, например, [d][d][d][d][a][a][a][a][a] [a] или [d][a][a][a][a][a][a][a][a][a].
Точно так же существует различное произношение слова «нет» - например, [n'][n'][n'][e][e][e][e][t][t][t] и [ н' ][н'][е][е][е][е][е][е][т][т].
Теперь найдем «лучший», то есть наиболее вероятный способ произнесения каждого слова.
В каждом кадре мы будем спрашивать нашу акустическую модель, насколько вероятно, что здесь будет услышана определенная фонема (например, [d] и [a]); кроме того, мы учтем вероятности перехода ([d]-> [d], [d]-> [a], [a]-> [a]).
Таким образом мы получим наиболее вероятный способ произнесения каждого из слов-гипотез; При этом для каждого из них мы получим меру вероятности того, что было произнесено именно это слово (мы можем рассматривать эту меру как длину кратчайшего пути через соответствующий граф).
В качестве результата распознавания будет возвращена «выигрышная» (т. е.
более вероятная) гипотеза.
Алгоритм Витерби достаточно прост в реализации (используется динамическое программирование) и работает за время, пропорциональное произведению количества состояний HMM и количества кадров.
Однако нам не всегда достаточно знать наиболее вероятный путь; например, при обучении акустической модели вам необходимо оценить вероятность каждого состояния в каждом кадре.
Для этой цели используется Алгоритм вперед-назад .
Однако акустическая модель — это лишь один компонент системы.
Что делать, если словарь распознавания состоит не из двух слов, как в рассмотренном выше примере, а из сотен тысяч или даже миллионов? Многие из них будут очень похожи по произношению или даже одинаковы.
В то же время при наличии контекста роль акустики снижается: невнятные, шумные или двусмысленные слова могут быть восстановлены «по смыслу».
Вероятностные модели снова используются для учета контекста.
Например, носитель русского языка понимает, что естественность (в нашем случае вероятность) предложения «мама мыла раму» выше, чем «мама мыла циклотрон» или «мама мыла раму».
То есть наличие фиксированного контекста «мама мыло…» задает распределение вероятностей для следующего слова, отражающее как семантику, так и морфологию.
Этот тип языковых моделей называется n-граммными языковыми моделями (триграммы в примере, рассмотренном выше); Конечно, существуют гораздо более сложные и мощные способы моделирования языка.
II. Что скрывается за Яндекс ASR?
Теперь, когда мы представляем общую структуру систем распознавания речи, опишем подробнее детали технологии Яндекса — лучшей, по нашим данным, российской системы распознавания речи.Рассматривая приведенные выше примеры игрушек, мы сознательно допустили ряд упрощений и опустили ряд важных деталей.
В частности, мы утверждали, что основной «строительной единицей» речи является фонема.
На самом деле фонема — слишком большая единица; Чтобы адекватно смоделировать произношение одной фонемы, используются три отдельных состояния — начало, середина и конец фонемы.
Вместе они образуют тот же HMM, что и представленный выше.
Кроме того, фонемы позиционно-зависимы и контекстно-зависимы: формально «одна и та же» фонема звучит существенно по-разному в зависимости от того, в какой части слова она находится и с какими фонемами она соседствует. В то же время простое перечисление всех возможных вариантов контекстно-зависимых фонем вернет очень большое количество комбинаций, многие из которых никогда не встречаются в реальной жизни; Чтобы количество акустических событий считалось разумным, тесно связанные контекстно-зависимые фонемы объединяются на ранних этапах обучения и рассматриваются вместе.
Таким образом, мы, во-первых, сделали фонемы контекстно-зависимыми, а во-вторых, разделили каждую из них на три части.
Эти объекты — «части фонем» — теперь составляют наш фонетический алфавит. Их еще называют сеноны.
Каждое состояние нашего ХММ — это сенон.
Наша модель использует 48 фонем и около 4000 сенонов.
Итак, наша акустическая модель по-прежнему принимает на вход звук, а на выходе дает распределение вероятностей по сенонам.
Теперь посмотрим, что именно подается на вход. Как мы уже говорили, звук нарезается на участки («кадры») по 25 мс.
Обычно шаг нарезки составляет 10 мс, поэтому соседние кадры частично перекрываются.
Понятно, что «сырой» звук — амплитуда колебаний во времени — не самая информативная форма представления акустического сигнала.
Спектр этого сигнала намного лучше.
На практике обычно используют логарифмированный и масштабированный спектр, соответствующий закономерностям слухового восприятия человека ( Мел-трансформация ).
Полученные значения подвергаются дискретному косинусному преобразованию ( ДКП ), и результат МФЦК -Mel Частотные кепстральные коэффициенты.
(Слово Cepstral получается перестановкой букв в Spectral, отражающей наличие дополнительного DCT).
MFCC — это вектор из 13 (обычно) действительных чисел.
Их можно использовать в качестве входных данных для акустической модели в ее необработанном виде, но часто они подвергаются множеству дополнительных преобразований.
Обучение акустической модели — сложный и многоэтапный процесс.
Для обучения используются алгоритмы из семейства.
Ожидание-Максимизация , такой как Алгоритм Баума-Уэлша .
Суть алгоритмов такого типа заключается в чередовании двух шагов: на шаге Ожидание для расчета математического ожидания функции правдоподобия используется существующая модель; на шаге Максимизации параметры модели изменяются таким образом, чтобы максимизировать эту оценку.
На ранних этапах обучения используются простые акустические модели: на вход подаются простые признаки MFCC, фонемы рассматриваются без контекстной зависимости, а для моделирования используется смесь гауссиан с диагональными ковариационными матрицами (Diagonal GMMs - Gaussian Mixture Models).
вероятность выброса в HMM. Результаты каждой предыдущей акустической модели являются отправной точкой для обучения более сложной модели с более сложной функцией распределения входных, выходных данных или вероятностей выбросов.
Существует много способов улучшить акустическую модель, но наиболее значительный эффект дает переход от модели GMM к DNN ( Глубокая нейронная сеть ), что почти вдвое повышает качество распознавания.
Нейронные сети свободны от многих ограничений гауссовских смесей и обладают лучшей способностью к обобщению.
Кроме того, акустические модели на основе нейронных сетей более устойчивы к шуму и обладают лучшей производительностью.
Обучение нейронной сети для акустического моделирования проходит в несколько этапов.
Для инициализации нейронной сети используется стек ограниченных машин Больцмана ( Ограниченные машины Больцмана , УКР).
RBM — стохастическая нейронная сеть, обучающаяся без учителя.
Хотя изучаемые веса не могут быть напрямую использованы для различения классов акустических событий, они детально отражают структуру речи.
Вы можете думать о RBM как о средстве извлечения признаков: полученная генеративная модель оказывается отличной отправной точкой для построения различительной модели.
Дискриминативная модель обучается с использованием классического алгоритма обратного распространения ошибки, а для улучшения сходимости и предотвращения переобучения используется ряд методов.
В результате на входе нейронной сети — несколько кадров MFCC-признаков (центральный кадр подлежит классификации, остальные формируют контекст), а на выходе — около 4000 нейронов, соответствующих различным сенонам.
Эта нейронная сеть используется в качестве акустической модели в производственной системе.
Давайте подробнее рассмотрим процесс декодирования.
Для задачи распознавания спонтанной речи с большим словарным запасом подход, описанный в первом разделе, неприменим.
Что необходимо, так это структура данных, которая связывает воедино все возможные предложения, которые может распознать система.
Подходящей структурой является взвешенный преобразователь конечных состояний (WFST) — по сути, просто конечный автомат с выходной лентой и весами на краях.
На входе этой машины — сеноны, на выходе — слова.
Процесс декодирования сводится к выбору наилучшего пути в этой машине и предоставлению выходной последовательности слов, соответствующей этому пути.
В этом случае цена прохождения по каждой дуге состоит из двух составляющих.
Первый компонент известен заранее и рассчитывается на этапе сборки машины.
Он включает в себя стоимость произношения, переход в заданное состояние и оценку правдоподобия из языковой модели.
Вторая составляющая рассчитывается отдельно для конкретного кадра: это акустический вес сенона, соответствующий входному символу рассматриваемой дуги.
Декодирование происходит в реальном времени, поэтому исследуются не все возможные пути: специальные эвристики ограничивают набор гипотез наиболее вероятными.
Конечно, самое интересное с технической точки зрения — это конструкция такого автомата.
Эта проблема решается оффлайн.
Чтобы перейти от простых HMM для каждой контекстно-зависимой фонемы к линейным автоматам для каждого слова, нам нужно использовать словарь произношения.
Создать такой словарь вручную невозможно, и здесь используются методы машинного обучения (а сама задача в научном сообществе называется Grapheme-To-Phoneme, или G2P).
В свою очередь, слова «стыкуются» друг с другом в языковую модель, также представленную в виде конечного автомата.
Центральной операцией здесь является композиция WFST, но также важны различные методы оптимизации WFST по размеру и эффективности хранения.
Результатом процесса декодирования является список гипотез, которые могут быть дополнительно обработаны.
Например, вы можете использовать более мощную языковую модель, чтобы переоценить наиболее вероятные гипотезы.
Полученный список возвращается пользователю, отсортированный по значению достоверности — степени, в которой мы уверены, что распознавание было выполнено правильно.
Часто остается только одна гипотеза, и в этом случае клиентское приложение сразу приступает к выполнению голосовой команды.
В заключение коснемся вопроса метрик качества систем распознавания речи.
Самая популярная метрика Частота ошибок в словах (и ее обратная точность слова).
По сути, он отражает долю неправильно распознанных слов.
Для расчета коэффициента ошибок в словах для системы распознавания речи используются вручную размеченные корпуса голосовых запросов, соответствующие теме приложения, использующего распознавание речи.
Литература по теме: 1. Мори М.
, Перейра Ф.
и Райли М.
(2008).
Распознавание речи с помощью взвешенных преобразователей с конечным состоянием.
В Справочнике Springer по обработке речи (стр.
559–584).
Шпрингер Берлин Гейдельберг.
2. Хинтон Г.
, Денг Л.
, Ю Д.
, Даль Г.
Е.
, Мохамед А.
Р.
, Джейтли Н.
и др.
(2012).
Глубокие нейронные сети для акустического моделирования в распознавании речи: общие взгляды четырех исследовательских групп.
Журнал обработки сигналов, IEEE, 29 (6), 82–97. 3. Юрафский Д.
, Мартин Дж.
Х.
(2008)Обработка речи и языка, 2-е издание.
Прентис Холл.
Теги: #Алгоритмы #asr #распознавание речи #Интеллектуальный анализ данных #yandex voicekit
-
Отчет Agilecamp 2013
19 Oct, 24 -
Втб24 И Paypal: Теперь Несовместимы!
19 Oct, 24 -
Обсуждаем Экстренную Социальную Помощь
19 Oct, 24 -
Тестирование Розничных Систем
19 Oct, 24