Распознавание речи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Правки к конспекту по МЛ)
м (State of the Art в автоматическом распознавании речи)
 
(не показано 20 промежуточных версий 5 участников)
Строка 47: Строка 47:
 
{|align="center"
 
{|align="center"
 
  |-valign="top"
 
  |-valign="top"
  |[[Файл:HMM_six.jpeg|800px|мини|Акустическая модель для слова ''six''. [http://www.inf.ed.ac.uk/teaching/courses/asr/2018-19/asr04-cdhmm-handout.pdf Источник]]]
+
  |[[Файл:HMM_six.jpeg|800px|мини|Рисунок 1. Акустическая модель для слова ''six''. [http://www.inf.ed.ac.uk/teaching/courses/asr/2018-19/asr04-cdhmm-handout.pdf Источник]]]
 
  |}
 
  |}
 
В круглых (скрытых) состояниях изображены фонемы, а в квадратных (наблюдениях) {{---}} распределения вероятностей признаков (для упрощения, здесь изображено одномерное распределение). Фонемы часто разбивают на 3 этапа {{---}} начало, середину и конец, {{---}} потому что фонема может звучать по-разному в зависимости от момента времени её произнесения. Каждое скрытое состояние содержит переход само в себя, так как время произнесения одной фонемы может занять несколько фреймов. Вероятности перехода между фонемами в СММ являются обучаемыми параметрами, и для их настройки используют [[Алгоритм Баума-Велша|алгоритм Баума-Велша]]. Последовательность фонем по набору распределений на фреймах восстанавливают по [[Алгоритм Витерби|алгоритму Витерби]].
 
В круглых (скрытых) состояниях изображены фонемы, а в квадратных (наблюдениях) {{---}} распределения вероятностей признаков (для упрощения, здесь изображено одномерное распределение). Фонемы часто разбивают на 3 этапа {{---}} начало, середину и конец, {{---}} потому что фонема может звучать по-разному в зависимости от момента времени её произнесения. Каждое скрытое состояние содержит переход само в себя, так как время произнесения одной фонемы может занять несколько фреймов. Вероятности перехода между фонемами в СММ являются обучаемыми параметрами, и для их настройки используют [[Алгоритм Баума-Велша|алгоритм Баума-Велша]]. Последовательность фонем по набору распределений на фреймах восстанавливают по [[Алгоритм Витерби|алгоритму Витерби]].
  
[[Файл:GMM_acoustic.jpeg|мини|Отличие нормального распределения от GMM. [https://jonathan-hui.medium.com/speech-recognition-gmm-hmm-8bb5eff8b196 Источник]]]
+
[[Файл:GMM_acoustic.jpeg|мини|Рисунок 2. Отличие нормального распределения от GMM. [https://jonathan-hui.medium.com/speech-recognition-gmm-hmm-8bb5eff8b196 Источник]]]
 
В качестве функции распределения вероятностей признаков часто выбирают смешанную гауссову модель (англ. Gaussian Mixture Model, GMM): дело в том, что одна и та же фонема может звучать по-разному, например, в зависимости от акцента. Так как эта функция является по сути суммой нескольких нормальных распределений, она позволяет учесть различные звучания одной и той же фонемы.
 
В качестве функции распределения вероятностей признаков часто выбирают смешанную гауссову модель (англ. Gaussian Mixture Model, GMM): дело в том, что одна и та же фонема может звучать по-разному, например, в зависимости от акцента. Так как эта функция является по сути суммой нескольких нормальных распределений, она позволяет учесть различные звучания одной и той же фонемы.
  
Строка 86: Строка 86:
  
 
==Признаки==
 
==Признаки==
[[Файл:Frame_division.jpeg|мини|Разделение осциллограммы на фреймы. [https://jonathan-hui.medium.com/speech-recognition-feature-extraction-mfcc-plp-5455f5a69dd9 Источник]]]
+
[[Файл:Frame_division.jpeg|мини|Рисунок 3. Разделение осциллограммы на фреймы. [https://jonathan-hui.medium.com/speech-recognition-feature-extraction-mfcc-plp-5455f5a69dd9 Источник]]]
  
 
Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на '''фреймы''' {{---}} фрагменты звукового потока длительностью около 20 мс и шагом 10 мс. Такой размер соответствует скорости человеческой речи: если человек говорит по 3 слова в секунду, каждое из которых состоит примерно из 4 звуков и каждый звук разбивается на 3 этапа, то на этап выходит около 28 мс. Каждый фрейм независимо трансформируется и подвергается извлечению признаков, тем самым образуя векторизированный набор данных для задачи машинного обучения.
 
Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на '''фреймы''' {{---}} фрагменты звукового потока длительностью около 20 мс и шагом 10 мс. Такой размер соответствует скорости человеческой речи: если человек говорит по 3 слова в секунду, каждое из которых состоит примерно из 4 звуков и каждый звук разбивается на 3 этапа, то на этап выходит около 28 мс. Каждый фрейм независимо трансформируется и подвергается извлечению признаков, тем самым образуя векторизированный набор данных для задачи машинного обучения.
Строка 162: Строка 162:
 
<math>T_{proc}</math> - время, необходимое для обработки сигнала.<br>
 
<math>T_{proc}</math> - время, необходимое для обработки сигнала.<br>
 
Если <math>RTF \leqslant 1.0</math> - то распознавание речи ведется в режиме реального времени.
 
Если <math>RTF \leqslant 1.0</math> - то распознавание речи ведется в режиме реального времени.
 +
 +
==State of the Art в автоматическом распознавании речи==
 +
[[Файл:ASR_new_sota.png|600px|thumb|right|Рисунок 4. $WER$ SOTA алгоритмов на наборах данных LibriSpeech test-clean/test-other. $WER$ описываемого в статье алгоритма отмечен красной точкой. [https://arxiv.org/pdf/2010.10504.pdf Источник]]]
 +
Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя| обучение с частичным привлечением учителя]], которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.
 +
 +
Одним из примеров обучения с частичным привлечением учителя для автоматического распознавания речи является подход, впервые представленный в статье<ref>''Yu Zhang, James Qin, Daniel S. Park, Wei Han, Chung-Cheng Chiu, Ruoming Pang, Quoc V. Le, Yonghui Wu'' Pushing the Limits of Semi-Supervised Learning for Automatic Speech Recognition[https://arxiv.org/pdf/2010.10504.pdf]</ref>, основанный на комбинации алгоритмов [[Распознавание_речи#Noisy_student | noisy student]], [[Распознавание_речи#wav2vec | wav2vec]] и использовании модели [[Распознавание_речи#Конформер| Конформера]]. Такой метод позволил уменьшить $WER$ на наборах данных LibriSpeech test-clean/test-other с  $1.7\%/3.3\%$ (предыдущий ''state-of-the-art'') до $1.4\%/2.6\%$ (Рисунок 4). $WER$ человека {{---}} $5.9\%$<ref>''W. Xiong, L. Wu, F. Alleva, J. Droppo, X. Huang, A. Stolcke'' The Microsoft 2017 Conversational Speech Recognition System[https://arxiv.org/pdf/1708.06073]</ref><br>
 +
 +
Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма ''wav2vec'' предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом ''noisy student''.
 +
 +
===Конформер===
 +
[[Файл:Conformer.png|600px|thumb|right|Рисунок 5. Общая схема Конформера (a) и схема блоков Конформера (b)]]
 +
[[Трансформер|Трансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Механизм внимания#Self-Attention|механизм самовнимания]], хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Сверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. $WER$ на LibriSpeech test-clean/test-other составляет $1.9\%/3.9\%$.
 +
 +
Сначала данные, подающиеся на вход Конформеру, проходят аугментацию. В применении к распознаванию речи, используется метод аугментации ''SpecAugment''. ''SpecAugment'' применяет к [[Распознавание речи#Признаки|мел спектрограмме]] три вида деформаций: искажение времени (удлинение или сжатие некоторого промежутка записи), удаление некоторого временного промежутка из записи, и удаление некоторого промежутка частот. Таким образом, при обучении на зашумленных с помощью ''SpecAugment'' данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи. Конформер обрабатывает итоговые аугментированные входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.
 +
 +
Блоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), между которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, с последующей нормализацией слоя (англ. ''layer normalization'').
 +
 +
[[Файл:Multi_Head_Self_Attention_module.png|400px|thumb|right|Рисунок 6. Модуль многоголового самовнимания]]
 +
 +
'''Модуль многоголового самовнимания'''
 +
 +
В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''Multi-Head Attention with Relative Positional Encoding''). Такой блок (изначально часть архитектуры Трансформер-XL<ref>''Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov'' Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context[https://arxiv.org/pdf/1901.02860.pdf]</ref>) используется с целью исправить два недостатка Трансформера: ограничение на длину входа (что не позволяет модели, например, использовать слово, которое появилось несколько предложений назад) и фрагментацию контекста (последовательность разбивается на несколько блоков, каждый из которых обучается независимо). Для достижения этой цели используются два механизма: механизм повторения (англ. ''reccurence mechanism'') и относительное позиционное кодирование (англ. ''relative positional encoding''). Механизм повторения позволяет использовать информацию из предыдущих сегментов. Как и в оригинальной версии, Трансформер-XL обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.
 +
 +
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.
 +
 +
Относительное позиционное кодирование почти полностью совпадает с абсолютным позиционным кодированием из оригинального Трансформера, но вместо позиции внутри сегмента используется расстояние между сегментами. Кроме того, добавляются два вектора параметров, задающие важность расстояния и содержания второго токена относительно первого.
 +
 +
Использование модуля многоголового самовнимания с относительным позиционным кодированием позволяет сети лучше обучаться при различной длине ввода, а результирующая архитектура получается более устойчивой к неоднородности длины высказывания.
 +
 +
'''Сверточный модуль'''
 +
[[Файл:Convolution_module.png|600px|thumb|right|Рисунок 7. Сверточный модуль]]
 +
Последовательность слоев в сверточном модуле начинается с управляемого модуля<ref>''N. Dauphin, Angela Fan, Michael Auli, David Grangier'' Language Modeling with Gated Convolutional Networks[https://arxiv.org/pdf/1612.08083.pdf]</ref>: сверточного слоя с ядром $1 \times 1$ (англ. ''pointwise convolution'') и управляемого линейного блока (англ. ''gated linear unit''). Управляемый линейный блок {{---}} слой нейронной сети, определяемый как покомпонентное произведение двух линейных преобразований входных данных, [[Практики реализации нейронных сетей#Функции активации|функция активации]] одного из которых {{---}} сигмоида. Использование управляемого линейного блока уменьшает [[Сверточные нейронные сети#Residual block|проблему исчезающего градиента]]. После сверточного слоя используется [[Batch-normalization|пакетная нормализация]].
 +
 +
В модуле используется функция активации ''swish''<ref>''Prajit Ramachandran, Barret Zoph, Quoc V. Le'' Searching for Activation Functions</ref> (до появления в статье ''Google Brain'' была известна как ''SiLU''<ref>''Dan Hendrycks, Kevin Gimpel'' Gaussian Error Linear Units (GELUs)</ref> и ''SiL''<ref>''Stefan Elfwing, Eiji Uchibe, Kenji Doya'' Sigmoid-Weighted Linear Units for Neural Network Function Approximation in Reinforcement Learning</ref>): $swish(x) = \dfrac{x}{1 + e^{- \beta x}}$, $\beta$ {{---}} параметр.
 +
 +
'''Модули прямой связи'''
 +
[[Файл:FFN.png|600px|thumb|right|Рисунок 8. Схема модуля прямой связи]]
 +
В отличие от Трансформера, в котором единственный модуль прямой связи следует за модулем внимания и состоит из двух линейных преобразований и нелинейной активации между ними, Конформер представляет собой два модуля прямой связи, состоящих из слоя нормализации и двух линейных слоев. Кроме того, для регуляризации используется функция активации ''swish'' и [[Практики реализации нейронных сетей#Дропаут|дропаут]].
 +
 +
===wav2vec===
 +
Подход wav2vec<ref>''Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli'' wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations[https://arxiv.org/pdf/2006.11477.pdf]</ref> основан на самообучении на [[Распознавание речи#Признаки|мел спектрограммах]].
 +
 +
'''Модель'''
 +
 +
# ''Энкодер признаков'' (англ. 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>
 +
# ''Модуль линейного слоя'' (англ. Linear Layer Module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br>
 +
 +
{|align="center"
 +
|-valign="top"
 +
|[[Файл:wav2vec.png | 600px | thumb | Рисунок 9. Схема обучения модели wav2vec]]
 +
|}
 +
 +
'''Обучение'''
 +
 +
# Исходные мел спектрограммы $X$ проходят через через энкодер признаков $f$ и таким образом преобразуются в $T$ наборов признаков $\{z_1, \dots, z_T\}$. <br>
 +
# $\{z_1, \dots, z_T\}$ преобразуются в контекстные и целевые вектора:
 +
## Случайное подмножество векторов $z_{\varphi_{(n)}}$ маскируется, и каждый $z \in z_{\varphi_{(n)}}$ заменяется на обученный вектор признаков. Полученное новое множество признаков $\{z'_1, \dots, z'_T\}$ подается на вход контекстной сети и преобразуется в контекстные вектора $\{c_1, \dots, c_T\}$.
 +
## Множество $\{z_1, \dots, z_T\}$ без замаскированных наборов признаков подается на вход модуля линейного слоя $u$ и преобразуется в целевые вектора $\{t_1, \dots, t_T\}$.
 +
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.
 +
 +
Суть данного подхода состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ блоков Конформера учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и таким образом модель обучается на размеченных данных.
 +
 +
===Noisy student===
 +
Вариация классического алгоритма [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучения]]: на каждой итерации модель-ученик обучается на аугментированных данных.
 +
 +
'''Данные'''
 +
 +
1. Набор размеченных данных $S$.<br>
 +
2. Набор неразмеченных данных $U$.<br>
 +
3. Обученная [[Распознавание речи#Языковая модель| языковая модель]] $LM$.<br>
 +
4. Набор предобученных с помощью ''wav2vec'' моделей $M_0, \dots, M_n$.
 +
 +
'''Алгоритм'''
 +
 +
1. Модель $M_0$ дообучается (англ. ''fine-tune'') на наборе данных $S$ с использованием [[Распознавание речи#Конформер|''SpecAugment'']]. $M = M_0$.<br>
 +
2. Модель $M$ сливается (англ. ''fuse'')<ref>''Caglar Gulcehre, Orhan Firat. Kelvin Xu, Kyunghyun Cho, Loic Barrault, Huei-Chi Lin, Fethi Bougares, Holger Schwenk, Yoshua Bengio'' On Using Monolingual Corpora in Neural Machine Translation [https://arxiv.org/pdf/1503.03535.pdf]</ref>  с моделью $LM$.<br>
 +
3. Набор данных $U$ размечается с помощью $M$, получается новый набор данных $A$.<br>
 +
4. Наборы $S$ и $A$ объединяются, производится дообучение предобученной модели $M_i$ на объединенном наборе данных с использованием ''SpecAugment''.<br>
 +
5. Если перебраны не все модели из набора, то $M = M_{i + 1}$, происходит возвращение к шагу $2$.
  
 
==Применение==
 
==Применение==
Строка 193: Строка 273:
 
# [https://moluch.ru/archive/147/41443/] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".
 
# [https://moluch.ru/archive/147/41443/] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".
  
[[Категория: Машинное обучение]] [[Категория: Обработка естественного языка]]
+
[[Категория: Машинное обучение]] [[Категория: Обработка естественного языка]] [[Категория: Распознавание речи]]

Текущая версия на 20:25, 24 января 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:

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

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

Рисунок 2. Отличие нормального распределения от 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. Далее параметры речи поступают в основной блок системы распознавания — декодер. Это компонент, который сопоставляет входной речевой поток с информацией, хранящейся в акустических и языковых моделях, и определяет наиболее вероятную последовательность слов, которая и является конечным результатом распознавания.

Признаки[править]

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

Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на фреймы — фрагменты звукового потока длительностью около 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] - то распознавание речи ведется в режиме реального времени.

State of the Art в автоматическом распознавании речи[править]

Рисунок 4. $WER$ SOTA алгоритмов на наборах данных LibriSpeech test-clean/test-other. $WER$ описываемого в статье алгоритма отмечен красной точкой. Источник

Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется обучение с частичным привлечением учителя, которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.

Одним из примеров обучения с частичным привлечением учителя для автоматического распознавания речи является подход, впервые представленный в статье[3], основанный на комбинации алгоритмов noisy student, wav2vec и использовании модели Конформера. Такой метод позволил уменьшить $WER$ на наборах данных LibriSpeech test-clean/test-other с $1.7\%/3.3\%$ (предыдущий state-of-the-art) до $1.4\%/2.6\%$ (Рисунок 4). $WER$ человека — $5.9\%$[4]

Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма wav2vec предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом noisy student.

Конформер[править]

Рисунок 5. Общая схема Конформера (a) и схема блоков Конформера (b)

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

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

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

Рисунок 6. Модуль многоголового самовнимания

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

В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. Multi-Head Attention with Relative Positional Encoding). Такой блок (изначально часть архитектуры Трансформер-XL[5]) используется с целью исправить два недостатка Трансформера: ограничение на длину входа (что не позволяет модели, например, использовать слово, которое появилось несколько предложений назад) и фрагментацию контекста (последовательность разбивается на несколько блоков, каждый из которых обучается независимо). Для достижения этой цели используются два механизма: механизм повторения (англ. reccurence mechanism) и относительное позиционное кодирование (англ. relative positional encoding). Механизм повторения позволяет использовать информацию из предыдущих сегментов. Как и в оригинальной версии, Трансформер-XL обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.

Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.

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

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

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

Рисунок 7. Сверточный модуль

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

В модуле используется функция активации swish[7] (до появления в статье Google Brain была известна как SiLU[8] и SiL[9]): $swish(x) = \dfrac{x}{1 + e^{- \beta x}}$, $\beta$ — параметр.

Модули прямой связи

Рисунок 8. Схема модуля прямой связи

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

wav2vec[править]

Подход wav2vec[10] основан на самообучении на мел спектрограммах.

Модель

  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\}$.
Рисунок 9. Схема обучения модели wav2vec

Обучение

  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. Набор размеченных данных $S$.
2. Набор неразмеченных данных $U$.
3. Обученная языковая модель $LM$.
4. Набор предобученных с помощью wav2vec моделей $M_0, \dots, M_n$.

Алгоритм

1. Модель $M_0$ дообучается (англ. fine-tune) на наборе данных $S$ с использованием SpecAugment. $M = M_0$.
2. Модель $M$ сливается (англ. fuse)[11] с моделью $LM$.
3. Набор данных $U$ размечается с помощью $M$, получается новый набор данных $A$.
4. Наборы $S$ и $A$ объединяются, производится дообучение предобученной модели $M_i$ на объединенном наборе данных с использованием SpecAugment.
5. Если перебраны не все модели из набора, то $M = M_{i + 1}$, происходит возвращение к шагу $2$.

Применение[править]

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

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

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

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

См. также[править]

Примечания[править]

  1. Федосин С.А., Еремин А. Ю. Классификация систем распознавания речи. — Саранск. : МГУ им. Н.П. Огарева, 2009. — С. 3.
  2. Тампель И.Б, Карпов А.А. Автоматическое распознавание речи. — СПб. : Университет ИТМО, 2016. — С. 113.
  3. Yu Zhang, James Qin, Daniel S. Park, Wei Han, Chung-Cheng Chiu, Ruoming Pang, Quoc V. Le, Yonghui Wu Pushing the Limits of Semi-Supervised Learning for Automatic Speech Recognition[1]
  4. W. Xiong, L. Wu, F. Alleva, J. Droppo, X. Huang, A. Stolcke The Microsoft 2017 Conversational Speech Recognition System[2]
  5. Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context[3]
  6. N. Dauphin, Angela Fan, Michael Auli, David Grangier Language Modeling with Gated Convolutional Networks[4]
  7. Prajit Ramachandran, Barret Zoph, Quoc V. Le Searching for Activation Functions
  8. Dan Hendrycks, Kevin Gimpel Gaussian Error Linear Units (GELUs)
  9. Stefan Elfwing, Eiji Uchibe, Kenji Doya Sigmoid-Weighted Linear Units for Neural Network Function Approximation in Reinforcement Learning
  10. Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations[5]
  11. Caglar Gulcehre, Orhan Firat. Kelvin Xu, Kyunghyun Cho, Loic Barrault, Huei-Chi Lin, Fethi Bougares, Holger Schwenk, Yoshua Bengio On Using Monolingual Corpora in Neural Machine Translation [6]

Источники информации[править]

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