Участница:DespairedController/Черновик:Распознавание речи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(wav2vec)
(wav2vec)
Строка 196: Строка 196:
  
 
# ''Энкодер признаков'' (англ. feature encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br>
 
# ''Энкодер признаков'' (англ. feature encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br>
# ''Контекстная сеть'' (англ. context network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ конформеров. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br>
+
# ''Контекстная сеть'' (англ. context network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ Конформеров. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br>
 
# ''Модуль линейного слоя'' (англ. linear layer module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br>
 
# ''Модуль линейного слоя'' (англ. linear layer module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br>
  
Строка 207: Строка 207:
 
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.
 
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.
  
Суть данного обучения состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ конформеров учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и, следовательно, таким образом получется, что модель обучается на размеченных данных.
+
Суть данного обучения состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ Конформеров учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и, следовательно, таким образом получется, что модель обучается на размеченных данных.
  
 
===Noisy student===
 
===Noisy student===

Версия 18:19, 2 января 2021

Распознавание речи (англ. Speech Recognition) — процесс преобразования речевого сигнала в цифровую информацию.

Задачей распознавания является сопоставление набору акустических признаков речевого сигнала или наблюдений [math]X(x_1 ,...,x_n)[/math] последовательности слов [math]W(w_1 ,...,w_k)[/math], имеющих наибольшую вероятность правдоподобия среди всех кандидатов. Для этого используется формула Байеса:

[math]W = argmax \left[\frac{P(W)*P(X|W)}{P(X)}\right][/math]

Причем, в процессе распознавания вероятность уже полученных признаков Р(Х) не подлежит оптимизации и знаменатель в формуле не испльзуется:

[math]W = argmax[P(W)*P(X|W)][/math]


Классификация систем распознавания речи

Системы распознавания речи классифицируются[1]:

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

Структура систем распознавания речи

Системы распознавания речи впервые появились в 1952 году. С тех пор методы распознавания не раз менялись. Ранее использовались такие методы и алгоритмы, как:

  • Динамическое программирование (Dynamic Time Warping) - временные динамические алгоритмы, выполняющие классификацию на основе сравнения с эталоном.
  • Методы дискриминантного анализа, основанные на Байесовской дискриминации (Bayesian discrimination).
  • Скрытые Марковские Модели (Hidden Markov Model).
  • Нейронные сети (Neural Networks).

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

Системы распознавания речи имеют следующие основные модули:

  • Акустическая модель
  • Языковая модель
  • Декодер

Акустическая модель

Фонема (phoneme) — элементарная единица человеческой речи. Примерами фонем являются транскрипции в формате IPA — так, слово hello состоит из фонем [hɛˈləʊ].

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

Рассмотрим подробнее акустическую модель на основе СММ для слова six:

Акустическая модель для слова six. Источник

В круглых (скрытых) состояниях изображены фонемы, а в квадратных (наблюдениях) — распределения вероятностей признаков (для упрощения, здесь изображено одномерное распределение). Фонемы часто разбивают на 3 этапа — начало, середину и конец, — потому что фонема может звучать по-разному в зависимости от момента времени её произнесения. Каждое скрытое состояние содержит переход само в себя, так как время произнесения одной фонемы может занять несколько фреймов. Вероятности перехода между фонемами в СММ являются обучаемыми параметрами, и для их настройки используют алгоритм Баума-Велша. Последовательность фонем по набору распределений на фреймах восстанавливают по алгоритму Витерби.

Отличие нормального распределения от GMM. Источник

В качестве функции распределения вероятностей признаков часто выбирают смешанную гауссову модель (англ. Gaussian Mixture Model, GMM): дело в том, что одна и та же фонема может звучать по-разному, например, в зависимости от акцента. Так как эта функция является по сути суммой нескольких нормальных распределений, она позволяет учесть различные звучания одной и той же фонемы.

Языковая модель

Языковая модель — позволяет узнать, какие последовательности слов в языке более вероятны, а какие менее. Здесь в самом простом случае требуется предсказать следующее слово по известным предыдущим словам. В традиционных системах применялись модели типа N-грамм, в которых на основе большого количества текстов оценивались распределения вероятности появления слова в зависимости от N предшествующих слов. Для получения надежных оценок распределений параметр N должен быть достаточно мал: одно, два или три слова — модели униграмм, биграмм или триграмм соответственно. Внедрение языковой модели в систему распознавания речи позволило значительно повысить качество распознавания за счет учета контекста.

Декодер

В ходе работы системы автоматического распознавания речи задача распознавания сводится к определению наиболее вероятной последовательности слов, соответствующих содержанию речевого сигнала. Наиболее вероятный кандидат должен определяться с учетом как акустической, так и лингвистической информации. Это означает, что необходимо производить эффективный поиск среди возможных кандидатов с учетом различной вероятностной информации. При распознавании слитной речи число таких кандидатов огромно, и даже использование самых простых моделей приводит к серьезным проблемам, связанным с быстродействием и памятью систем. Как результат, эта задача выносится в отдельный модуль системы автоматического распознавания речи, называемый декодером. Декодер должен определять наиболее грамматически вероятную гипотезу для неизвестного высказывания – то есть определять наиболее вероятный путь по сети распознавания, состоящей из моделей слов (которые, в свою очередь, формируются из моделей отдельных фонов). Правдоподобие (likelihood) гипотезы определяется двумя факторами, а именно вероятностями последовательности фонов, приписываемыми акустической моделью, и вероятностями следования слов друг за другом, определяемыми моделью языка.

Рассмотрим математическую основу декодеров.
Отбрасывая несущественный на этапе распознавания знаменатель, запишем:

[math]W = argmax [P(W)P(XW)][/math]

где [math]X = x_1^T = x_1 ,..., x_N[/math] – последовательность векторов признаков входного сигнала, [math]W = w_1^n = w_1 ,..., w_n[/math] – последовательность слов, принадлежащих словарю размером [math]N_W[/math]. Первый множитель P(W) описывает вклад лингвистического модуля, второй P(X|W) – лексического, фонетического и акустического источников знаний. В соответствии с концепцией марковских цепей, второй множитель представляет собой сумму вероятностей всех возможных последовательностей состояний, что приводит к уравнению:

[math]W = argmax [P(W)\sum_{S_1^T} P(x_1^T, s_1^T | w_1^N)][/math]

где [math]s_1^T[/math] – одна из последовательностей состояний, порождаемых последовательностью слов [math]w_1^n[/math]. На практике применяется критерий Витерби[2]. – ищется последовательность состояний, дающая максимальный вклад в сумму:

[math]W = argmax[P(W)^aMax[P(x_1^T, s_1^T | w_1^N)]][/math]

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

Этапы распознавания:

  1. Обработка речи начинается с оценки качества речевого сигнала. На этом этапе определяется уровень помех и искажений.
  2. Результат оценки поступает в модуль акустической адаптации, который управляет модулем расчета параметров речи, необходимых для распознавания.
  3. В сигнале выделяются участки, содержащие речь, и происходит оценка параметров речи. Происходит выделение фонетических и просодических вероятностных характеристик для синтаксического, семантического и прагматического анализа. (Оценка информации о части речи, форме слова и статистические связи между словами.)
  4. Далее параметры речи поступают в основной блок системы распознавания — декодер. Это компонент, который сопоставляет входной речевой поток с информацией, хранящейся в акустических и языковых моделях, и определяет наиболее вероятную последовательность слов, которая и является конечным результатом распознавания.

Признаки

Разделение осциллограммы на фреймы. Источник

Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на фреймы — фрагменты звукового потока длительностью около 20 мс и шагом 10 мс. Такой размер соответствует скорости человеческой речи: если человек говорит по 3 слова в секунду, каждое из которых состоит примерно из 4 звуков и каждый звук разбивается на 3 этапа, то на этап выходит около 28 мс. Каждый фрейм независимо трансформируется и подвергается извлечению признаков, тем самым образуя векторизированный набор данных для задачи машинного обучения.

Признаки речевых событий, используемые при распознавании речи:

  • Спектр Фурье.
  • Спектр Фурье в шкале мел.
  • Коэффициенты линейного предсказания.
  • Кепстр.

Спектр Фурье

Спектр Фурье получают, используя алгоритм БПФ (Быстрого Преобразования Фурье) с длиной окна равной 2-4 периода основного тона, что составляет около 20 мс. При частоте квантования 10-16 кГц выбирается окно 256 отсчетов.

Для ослабления искажений сигнала, вызванных применением к непрерывному сигналу конечного окна анализа, чаще всего используется окно Хэмминга по формуле:

[math]S'(n) = [0.54 - 0.46cos\left(\frac{2\pi n}{N-1}\right)]*S(n)[/math]

где n = 1..N, N – размерность окна, S(n) – отсчеты речевого сигнала.

Спектр Фурье в шкале мел

К каждому кадру, полученного Фурье спектра применяется блок мел-фильтров — треугольных пересекающихся фильтров, расположенных наиболее плотно в области нижних частот. Количество фильтров — 26. Для расчета фильтров выбирается верхняя и нижняя частота. Затем осуществляется переход от частотной шкалы к мел-шкале по формуле:

[math]M(f) = 1127*ln\left(1 + \frac{f}{700}\right)[/math]

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

Коэффициенты линейного предсказания

Модель линейного предсказания речи предполагает, что передаточная функция голосового тракта представляется полюсным фильтром с передаточной функцией:

[math]H(z) = \frac{1}{\sum_{i=0}^p a_i z^{-i}}[/math]

где p – число полюсов и [math]a_0 = 1[/math]; Фильтр с такой передаточной функцией позволяет описать поведение сглаженного спектра речевого сигнала с хорошей точностью, за исключением назализованных звуков. Коэффициенты фильтра {[math]a_i[/math]} – выбираются путем минимизации среднеквадратичной ошибки предсказания, просуммированной на окне анализа.

Кепстр

Кепстр (cepstrum) сигнала на основе спектра Фурье вычисляется путем применения косинусного Фурье преобразования к логарифму спектра:

[math]c_j = \sqrt{\frac{2}{N}}\sum_{i=0}^{N-1} \left[s_icos\left(\frac{\pi(j+1)(i+0.5)}{N}\right)\right] = \sum_{i=0}^{N-1} C_{j,i}s_i[/math]

где [math]s_i[/math] – логарифм спектра, N – количество отсчётов спектра, [math]C_{i,j}[/math] – унитарная матрица косинусного преобразования.

Кепстральные коэффициенты, полученные приведённым способом из мел спектра Фурье, широко используются для распознавания с помощью марковских моделей и носят название MFCC (Mel-frequency cepstral coefficients).

Показатели оценки качества распознавания речи

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

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

Основными показателями качества распознавания слитной речи являются:

  • процент правильно распознанных слов (WRR - Word Recognition Rate);
  • процент неправильно распознанных слов (WER - Word Error Rate);
  • процент неправильно распознанных предложений/фраз (SER - Sentence Error Rate);

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

[math]WER = \frac{S+D+I}{T} * 100%[/math]

где T - количество слов в распознаваемой фразе, S - количество замененных слов, D - количество удаленных слов, I - количество вставленных слов. Показатель WER может быть больше 100%.

Другим важным критерием оценки систем распознавания слитной речи является - скорость обработки речи. Она вычисляется с помощью показателя скорости (Real-Time Factor, Speed Factor):

[math]RTF = \frac{T_{proc}}{T_{signal}}[/math]

[math]T_{signal}[/math] - длительность обрабатываемого аудиосигнала;
[math]T_{proc}[/math] - время, необходимое для обработки сигнала.
Если [math]RTF \leqslant 1.0[/math] - то распознавание речи ведется в режиме реального времени.


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

Конформер

a. Схема архитектуры Конформер.
b. Блок конформера.

Архитектура трансформер, основанная на самовнимании позволяет фиксировать взаимодействия на большом расстоянии, однако не очень хорошо извлекает точные паттерны локальных признаков. Сверточные нейронные сети, наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Архитектура Конформер (англ. Conformer) берет лучшее от двух подходов, комбинируя свертки и механизм самовнимания, достигая $WER$ $1.9\%/3.9\%$ на LibriSpeech.

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

Блок Конформера состоит из двух модулей прямой связи (англ. feed forward), между которыми расположены модуль многоголового самовнимания (англ. Multi-Head Self Attention) и сверточный модуль, с последующим слоем нормализации.


Модуль многоголового самовнимания

Модуль многоголового самовнимания

В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. Multi-Head Attention with Relational Positional Encoding). Использование относительного позиционного кодирования[1] позволяет модулю самовнимания лучше обобщать при различной длине ввода, а результирующий кодировщик более устойчив к неоднородности длины высказывания.

Сверточный модуль

Сверточный модуль

Последовательность слоев в сверточном модуле начинается с стробирующего механизма[2]: сверточного слоя с ядром $1 \times 1$ и стробированного линейного блока (англ. gated linear unit). Использование стробированного линейного блока уменьшает проблему исчезающего градиента. После сверточного слоя используется пакетная нормализация.

wav2vec

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

Модель

  1. Энкодер признаков (англ. feature encoder) $f: X \to Z$ реализован на основе сверточного слоя. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов.
  2. Контекстная сеть (англ. context network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ Конформеров. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$.
  3. Модуль линейного слоя (англ. linear layer module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$.

Обучение

  1. Исходные мел спектрограммы $X$ проходят через через энкодер признаков $f$ и таким образом преобразуются в $T$ наборов признаков $\{z_1, \dots, z_T\}$.
  2. $\{z_1, \dots, z_T\}$ преобразуются в контекстные и целевые вектора:
    1. Случайное подмножество векторов $z_{\varphi_(n)}$ маскируется и каждый $z \in z_{\varphi_(n)}$ заменяется на обученный вектор признаков. Полученное новое множество признаков $\{z'_1, \dots, z'_T\}$ подается на вход контекстной сети и преобразуется в контекстные вектора $\{c_1, \dots, c_T\}$.
    2. Множество $\{z_1, \dots, z_T\}$ без замаскированных наборов признаков подается на вход модуля линейного слоя $u$ и преобразуется в целевые вектора $\{t_1, \dots, t_T\}$.
  3. Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция Contrastive Loss.

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

Noisy student

Вариация классического алгоритма самообучения: на каждой итерации модель-ученик обучается на аугментированных данных.

Данные

1. Размеченные данные $\{(x_1, y_1), \dots, (x_n, y_n)\}$
2. Неразмеченные данные $\{\tilde{x}_1, \dots, \tilde{x}_m\}$

Алгоритм

1. Обучить модель-учителя $M$ на размеченных аугментированных данных.
2. Разметить $\{\tilde{x}_1, \dots, \tilde{x}_m\}$ с помощью $M$.
3. Обучить модель-ученика $M'$ на полученных на предыдущем шаге метках $\{\tilde{y}_1, \dots, \tilde{y}_m\}$ и $\{x_1, \dots, x_m\}$.
4. $M = M'$, вернуться к шагу 2.

Noisy student и распознавание речи

В применении к распознаванию речи, алгоритм будет несколько отличаться: на каждой итерации модель-учитель $M$ сначала будет сливаться(англ. fuse) с предобученной языковой моделью $LM$. Для аугментации данных используется метод SpecAugment. SpecAugment применяет к мел спектрограмме три вида деформаций: искажение времени, маскировка блока последовательных временных шагов и маскировка блока последовательных частотных каналов. Таким образом, при обучении на зашумленных с помощью SpecAugment данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи.

Применение

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

  • Телефония: системы голосового самообслуживания;
  • "Умный дом": голосовой интерфейс управления;
  • Роботы: голосовой интерфейс электронных роботов;
  • РС, ноутбуки, телефоны: голосовой ввод команд, диктовка текста;
  • Автомобили: голосовое управление в салоне автомобиля.

Основные отрасли применения:

  • Голосовое управление
  • Голосовые команды
  • Голосовой ввод текста
  • Голосовой поиск

См. также

Примечания

  1. Федосин С.А., Еремин А. Ю. Классификация систем распознавания речи. — Саранск. : МГУ им. Н.П. Огарева, 2009. — С. 3.
  2. Тампель И.Б, Карпов А.А. Автоматическое распознавание речи. — СПб. : Университет ИТМО, 2016. — С. 113.

Источники информации

  1. [3] - статья на Википедии
  2. Тампель И.Б, Карпов А.А. Автоматическое распознавание речи. Учебное пособие. — СПб: Университет ИТМО, 2016. — 138 с.
  3. [4] - статья "Классификация систем распознавания речи".
  4. [5] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".