http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&user=176.59.17.150&feedformat=atomВикиконспекты - Вклад участника [ru]2024-03-29T00:02:14ZВклад участникаMediaWiki 1.30.0http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8&diff=80531Распознавание речи2021-01-24T17:17:01Z<p>176.59.17.150: /* State of the Art в автоматическом распознавании речи */</p>
<hr />
<div>'''Распознавание речи''' (англ. Speech Recognition) {{---}} процесс преобразования речевого сигнала в цифровую информацию.<br />
<br />
Задачей распознавания является сопоставление набору акустических признаков речевого сигнала или наблюдений <br />
<math>X(x_1 ,...,x_n)</math> последовательности слов <br />
<math>W(w_1 ,...,w_k)</math>, имеющих наибольшую вероятность правдоподобия среди всех кандидатов. Для этого используется формула Байеса:<br />
<br />
<center><math>W = argmax \left[\frac{P(W)*P(X|W)}{P(X)}\right]</math></center><br />
<br />
Причем, в процессе распознавания вероятность уже полученных признаков Р(Х) не подлежит оптимизации и знаменатель в формуле не испльзуется:<br />
<br />
<center><math>W = argmax[P(W)*P(X|W)]</math></center><br />
<br />
<br />
==Классификация систем распознавания речи==<br />
<br />
Системы распознавания речи классифицируются<ref>''Федосин С.А., Еремин А. Ю.'' Классификация систем распознавания речи. — Саранск. : МГУ им. Н.П. Огарева, 2009. — С. 3.</ref>:<br />
* по размеру словаря (ограниченный набор слов, словарь большого размера);<br />
* по зависимости от диктора (дикторозависимые и дикторонезависимые системы);<br />
* по типу речи (слитная или раздельная речь);<br />
* по назначению (системы диктовки, командные системы);<br />
* по используемому алгоритму (нейронные сети, скрытые Марковские модели, динамическое программирование);<br />
* по типу структурной единицы (фразы, слова, фонемы, дифоны, аллофоны);<br />
* по принципу выделения структурных единиц (распознавание по шаблону, выделение лексических элементов).<br />
<br />
==Структура систем распознавания речи==<br />
<br />
Системы распознавания речи впервые появились в 1952 году. С тех пор методы распознавания не раз менялись.<br />
Ранее использовались такие методы и алгоритмы, как:<br />
* Динамическое программирование (Dynamic Time Warping) - временные динамические алгоритмы, выполняющие классификацию на основе сравнения с эталоном.<br />
* Методы дискриминантного анализа, основанные на Байесовской дискриминации (Bayesian discrimination).<br />
* Скрытые Марковские Модели (Hidden Markov Model).<br />
* Нейронные сети (Neural Networks).<br />
В настоящее время, перечисленные выше методы как правило комбинируются. Их сочетание позволяет получить более высокое качество распознавания, чем использование каждой модели отдельно.<br />
<br />
Системы распознавания речи имеют следующие основные модули:<br />
* Акустическая модель<br />
* Языковая модель<br />
* Декодер<br />
<br />
===Акустическая модель===<br />
''Фонема'' (phoneme) {{---}} элементарная единица человеческой речи. Примерами фонем являются транскрипции в формате IPA {{---}} так, слово hello состоит из фонем [hɛˈləʊ].<br />
<br />
''Акустическая модель'' {{---}} это функция, принимающая на вход признаки на небольшом участке акустического сигнала (фрейме) и выдающая распределение вероятностей различных фонем на этом фрейме. Таким образом, акустическая модель дает возможность по звуку восстановить, что было произнесено {{---}} с той или иной степенью уверенности.<br><br />
Самой популярной реализацией акустической модели является [[Скрытые Марковские модели|скрытая Марковская модель (СММ)]], в которой скрытыми состояниями являются фонемы, а наблюдениями {{---}} распределения вероятностей признаков на фрейме.<br />
<br />
Рассмотрим подробнее акустическую модель на основе СММ для слова ''six'':<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:HMM_six.jpeg|800px|мини|Рисунок 1. Акустическая модель для слова ''six''. [http://www.inf.ed.ac.uk/teaching/courses/asr/2018-19/asr04-cdhmm-handout.pdf Источник]]]<br />
|}<br />
В круглых (скрытых) состояниях изображены фонемы, а в квадратных (наблюдениях) {{---}} распределения вероятностей признаков (для упрощения, здесь изображено одномерное распределение). Фонемы часто разбивают на 3 этапа {{---}} начало, середину и конец, {{---}} потому что фонема может звучать по-разному в зависимости от момента времени её произнесения. Каждое скрытое состояние содержит переход само в себя, так как время произнесения одной фонемы может занять несколько фреймов. Вероятности перехода между фонемами в СММ являются обучаемыми параметрами, и для их настройки используют [[Алгоритм Баума-Велша|алгоритм Баума-Велша]]. Последовательность фонем по набору распределений на фреймах восстанавливают по [[Алгоритм Витерби|алгоритму Витерби]].<br />
<br />
[[Файл:GMM_acoustic.jpeg|мини|Рисунок 2. Отличие нормального распределения от GMM. [https://jonathan-hui.medium.com/speech-recognition-gmm-hmm-8bb5eff8b196 Источник]]]<br />
В качестве функции распределения вероятностей признаков часто выбирают смешанную гауссову модель (англ. Gaussian Mixture Model, GMM): дело в том, что одна и та же фонема может звучать по-разному, например, в зависимости от акцента. Так как эта функция является по сути суммой нескольких нормальных распределений, она позволяет учесть различные звучания одной и той же фонемы.<br />
<br />
===Языковая модель===<br />
<br />
''Языковая модель'' {{---}} позволяет узнать, какие последовательности слов в языке более вероятны, а какие менее.<br />
Здесь в самом простом случае требуется предсказать следующее слово по известным предыдущим словам. В традиционных системах применялись модели типа N-грамм, в которых на основе большого количества текстов оценивались распределения вероятности появления слова в зависимости от N предшествующих слов. Для получения надежных оценок распределений параметр N должен быть достаточно мал: одно, два или три слова {{---}} модели униграмм, биграмм или триграмм соответственно. Внедрение языковой модели в систему распознавания речи позволило значительно повысить качество распознавания за счет учета контекста.<br />
<br />
===Декодер===<br />
<br />
В ходе работы системы автоматического распознавания речи задача распознавания сводится к определению наиболее вероятной последовательности слов, соответствующих содержанию речевого сигнала. Наиболее вероятный кандидат должен определяться с учетом как акустической, так и лингвистической информации. Это означает, что необходимо производить эффективный поиск среди возможных кандидатов с учетом различной вероятностной информации. При распознавании слитной речи число таких кандидатов огромно, и даже использование самых простых моделей приводит к серьезным проблемам, связанным с быстродействием и памятью систем. Как результат, эта задача выносится в отдельный модуль системы автоматического распознавания речи, называемый декодером.<br />
Декодер должен определять наиболее грамматически вероятную гипотезу для неизвестного высказывания – то есть определять наиболее вероятный путь по сети распознавания, состоящей из моделей слов (которые, в свою очередь, формируются из моделей отдельных фонов). Правдоподобие (likelihood) гипотезы определяется двумя факторами, а именно вероятностями последовательности фонов, приписываемыми акустической моделью, и вероятностями следования слов друг за другом, определяемыми моделью языка. <br />
<br />
Рассмотрим математическую основу декодеров.<br><br />
Отбрасывая несущественный на этапе распознавания знаменатель, запишем:<br />
<br />
<center><math>W = argmax [P(W)P(XW)]</math></center><br />
<br />
где <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) – лексического, фонетического и акустического источников знаний. В соответствии с концепцией марковских цепей, второй множитель представляет собой сумму вероятностей всех возможных последовательностей состояний, что приводит к уравнению: <br />
<br />
<center><math>W = argmax [P(W)\sum_{S_1^T} P(x_1^T, s_1^T | w_1^N)]</math></center><br />
<br />
где <math>s_1^T</math> – одна из последовательностей состояний, порождаемых последовательностью слов <math>w_1^n</math>. На практике применяется критерий Витерби<ref>''Тампель И.Б, Карпов А.А.'' Автоматическое распознавание речи. — СПб. : Университет ИТМО, 2016. — С. 113.</ref>. – ищется последовательность состояний, дающая максимальный вклад в сумму:<br />
<br />
<center><math>W = argmax[P(W)^aMax[P(x_1^T, s_1^T | w_1^N)]]</math></center><br />
<br />
Различают систему раннего и систему позднего предсказания. В первой выполняется предсказание для акустической и языковой модели независимо, а затем оба предсказания поступают в декодер. При позднем предсказании, вычисленные признаки речи в акустической и языковой моделях без предсказания поступают в декодер и уже на основе их совместного декодирования выполняется предсказание.<br />
<br />
Этапы распознавания:<br />
# Обработка речи начинается с оценки качества речевого сигнала. На этом этапе определяется уровень помех и искажений.<br />
# Результат оценки поступает в модуль акустической адаптации, который управляет модулем расчета параметров речи, необходимых для распознавания.<br />
# В сигнале выделяются участки, содержащие речь, и происходит оценка параметров речи. Происходит выделение фонетических и просодических вероятностных характеристик для синтаксического, семантического и прагматического анализа. (Оценка информации о части речи, форме слова и статистические связи между словами.)<br />
# Далее параметры речи поступают в основной блок системы распознавания — декодер. Это компонент, который сопоставляет входной речевой поток с информацией, хранящейся в акустических и языковых моделях, и определяет наиболее вероятную последовательность слов, которая и является конечным результатом распознавания.<br />
<br />
==Признаки==<br />
[[Файл:Frame_division.jpeg|мини|Рисунок 3. Разделение осциллограммы на фреймы. [https://jonathan-hui.medium.com/speech-recognition-feature-extraction-mfcc-plp-5455f5a69dd9 Источник]]]<br />
<br />
Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на '''фреймы''' {{---}} фрагменты звукового потока длительностью около 20 мс и шагом 10 мс. Такой размер соответствует скорости человеческой речи: если человек говорит по 3 слова в секунду, каждое из которых состоит примерно из 4 звуков и каждый звук разбивается на 3 этапа, то на этап выходит около 28 мс. Каждый фрейм независимо трансформируется и подвергается извлечению признаков, тем самым образуя векторизированный набор данных для задачи машинного обучения.<br />
<br />
Признаки речевых событий, используемые при распознавании речи:<br />
* Спектр Фурье.<br />
* Спектр Фурье в шкале мел.<br />
* Коэффициенты линейного предсказания.<br />
* Кепстр.<br />
<br />
'''Спектр Фурье'''<br />
<br />
Спектр Фурье получают, используя алгоритм БПФ (Быстрого Преобразования Фурье) с длиной окна равной 2-4 периода основного тона, что составляет около 20 мс. При частоте квантования 10-16 кГц выбирается окно 256 отсчетов.<br />
<br />
Для ослабления искажений сигнала, вызванных применением к непрерывному сигналу конечного окна анализа, чаще всего используется окно Хэмминга по формуле:<br />
<br />
<center><math>S'(n) = [0.54 - 0.46cos\left(\frac{2\pi n}{N-1}\right)]*S(n)</math></center><br />
<br />
где n = 1..N, N – размерность окна, S(n) – отсчеты речевого сигнала.<br />
<br />
'''Спектр Фурье в шкале мел'''<br />
<br />
К каждому кадру, полученного Фурье спектра применяется блок мел-фильтров — треугольных пересекающихся фильтров, расположенных наиболее плотно в области нижних частот. Количество фильтров — 26. Для расчета фильтров выбирается верхняя и нижняя частота. Затем осуществляется переход от частотной шкалы к мел-шкале по формуле:<br />
<br />
<center><math>M(f) = 1127*ln\left(1 + \frac{f}{700}\right)</math></center><br />
<br />
На мел-шкале выбираются линейно расположенные точки (28 точек для 26 фильтров), после чего, производится обратный переход в частотную область.<br />
<br />
'''Коэффициенты линейного предсказания'''<br />
<br />
Модель линейного предсказания речи предполагает, что передаточная функция голосового тракта представляется полюсным фильтром с передаточной<br />
функцией:<br />
<br />
<center><math>H(z) = \frac{1}{\sum_{i=0}^p a_i z^{-i}}</math></center><br />
<br />
где p – число полюсов и <math>a_0 = 1</math>;<br />
Фильтр с такой передаточной функцией позволяет описать поведение сглаженного спектра речевого сигнала с хорошей точностью, за исключением назализованных звуков. Коэффициенты фильтра {<math>a_i</math>} – выбираются путем минимизации среднеквадратичной ошибки предсказания, просуммированной на окне анализа.<br />
<br />
'''Кепстр'''<br />
<br />
Кепстр (''cepstrum'') сигнала на основе спектра Фурье вычисляется путем применения косинусного Фурье преобразования к логарифму спектра:<br />
<br />
<center><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></center><br />
<br />
где <math>s_i</math> – логарифм спектра, N – количество отсчётов спектра, <math>C_{i,j}</math> – унитарная матрица косинусного преобразования.<br />
<br />
Кепстральные коэффициенты, полученные приведённым способом из ''мел'' спектра Фурье, широко используются для распознавания с помощью марковских моделей и носят название MFCC (Mel-frequency cepstral coefficients).<br />
<br />
==Показатели оценки качества распознавания речи==<br />
<br />
Существуют различные по сложности и прикладному значению задачи распознавания: изолированных слов (команд); ключевых слов в потоке речи; связанной речи (тщательное проговаривание текста с паузами между словами); слитной речи (разделяют диктовку в узкой тематической области, и спонтанную речь, например, в диалоге между людьми).<br />
<br />
Оценка системы, распознающей отдельные команды, не представляет каких-либо трудностей – количество неправильно распознанных команд делится на общее количество испытаний и получается процент ошибки. Для систем, распознающих слитную речь, ситуация не столь проста.<br />
<br />
Основными показателями качества распознавания слитной речи являются:<br />
* процент правильно распознанных слов (WRR - Word Recognition Rate);<br />
* процент неправильно распознанных слов (WER - Word Error Rate);<br />
* процент неправильно распознанных предложений/фраз (SER - Sentence Error Rate);<br />
<br />
Поскольку с развитием речевых технологий показатель WER все более приближается к нулю, то значение улучшения WER более наглядно, чем улучшение точности распознавания слов.<br />
<br />
<center><math>WER = \frac{S+D+I}{T} * 100%</math></center><br />
<br />
где T - количество слов в распознаваемой фразе,<br />
S - количество замененных слов,<br />
D - количество удаленных слов,<br />
I - количество вставленных слов.<br />
Показатель WER может быть больше 100%.<br />
<br />
Другим важным критерием оценки систем распознавания слитной речи является - скорость обработки речи. Она вычисляется с помощью показателя скорости (Real-Time Factor, Speed Factor):<br />
<br />
<center><math>RTF = \frac{T_{proc}}{T_{signal}}</math></center><br />
<br />
<math>T_{signal}</math> - длительность обрабатываемого аудиосигнала;<br><br />
<math>T_{proc}</math> - время, необходимое для обработки сигнала.<br><br />
Если <math>RTF \leqslant 1.0</math> - то распознавание речи ведется в режиме реального времени.<br />
<br />
==State of the Art в автоматическом распознавании речи==<br />
[[Файл:ASR_new_sota.png|600px|thumb|right|Рисунок 4. $WER$ SOTA алгоритмов на наборах данных LibriSpeech test-clean/test-other. $WER$ описываемого в статье алгоритма отмечен красной точкой. [https://arxiv.org/pdf/2010.10504.pdf Источник]]]<br />
Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя| обучение с частичным привлечением учителя]], которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.<br />
<br />
Одним из примеров обучения с частичным привлечением учителя для автоматического распознавания речи является подход, впервые представленный в статье<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><br />
<br />
Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма ''wav2vec'' предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом ''noisy student''.<br />
<br />
===Конформер===<br />
[[Файл:Conformer.png|600px|thumb|right|Рисунок 5. Общая схема Конформера (a) и схема блоков Конформера (b)]]<br />
[[Трансформер|Трансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Механизм внимания#Self-Attention|механизм самовнимания]], хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Сверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. $WER$ на LibriSpeech test-clean/test-other составляет $1.9\%/3.9\%$.<br />
<br />
Сначала данные, подающиеся на вход Конформеру, проходят аугментацию. В применении к распознаванию речи, используется метод аугментации ''SpecAugment''. ''SpecAugment'' применяет к [[Распознавание речи#Признаки|мел спектрограмме]] три вида деформаций: искажение времени (удлинение или сжатие некоторого промежутка записи), удаление некоторого временного промежутка из записи, и удаление некоторого промежутка частот. Таким образом, при обучении на зашумленных с помощью ''SpecAugment'' данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи. Конформер обрабатывает итоговые аугментированные входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.<br />
<br />
Блоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), между которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, с последующей нормализацией слоя (англ. ''layer normalization'').<br />
<br />
[[Файл:Multi_Head_Self_Attention_module.png|400px|thumb|right|Рисунок 6. Модуль многоголового самовнимания]]<br />
<br />
'''Модуль многоголового самовнимания'''<br />
<br />
В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''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 обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.<br />
<br />
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.<br />
<br />
Относительное позиционное кодирование почти полностью совпадает с абсолютным позиционным кодированием из оригинального Трансформера, но вместо позиции внутри сегмента используется расстояние между сегментами. Кроме того, добавляются два вектора параметров, задающие важность расстояния и содержания второго токена относительно первого.<br />
<br />
Использование модуля многоголового самовнимания с относительным позиционным кодированием позволяет сети лучше обучаться при различной длине ввода, а результирующая архитектура получается более устойчивой к неоднородности длины высказывания.<br />
<br />
'''Сверточный модуль'''<br />
[[Файл:Convolution_module.png|600px|thumb|right|Рисунок 7. Сверточный модуль]]<br />
Последовательность слоев в сверточном модуле начинается с управляемого модуля<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|пакетная нормализация]].<br />
<br />
В модуле используется функция активации ''swish''<ref>''Prajit Ramachandran, Barret Zoph, Quoc V. Le'' Searching for Activation Functions</ref> (''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$ {{---}} параметр.<br />
<br />
'''Модули прямой связи'''<br />
[[Файл:FFN.png|600px|thumb|right|Рисунок 8. Схема модуля прямой связи]]<br />
В отличие от Трансформера, в котором единственный модуль прямой связи следует за модулем внимания и состоит из двух линейных преобразований и нелинейной активации между ними, Конформер представляет собой два модуля прямой связи, состоящих из слоя нормализации и двух линейных слоев. Кроме того, для регуляризации используется функция активации ''swish'' и [[Практики реализации нейронных сетей#Дропаут|дропаут]].<br />
<br />
===wav2vec===<br />
Подход 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> основан на самообучении на [[Распознавание речи#Признаки|мел спектрограммах]].<br />
<br />
'''Модель'''<br />
<br />
# ''Энкодер признаков'' (англ. Feature Encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br><br />
# ''Контекстная сеть'' (англ. Context Network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ блоков Конформера. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br><br />
# ''Модуль линейного слоя'' (англ. Linear Layer Module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br><br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:wav2vec.png | 600px | thumb | Рисунок 9. Схема обучения модели wav2vec]]<br />
|}<br />
<br />
'''Обучение'''<br />
<br />
# Исходные мел спектрограммы $X$ проходят через через энкодер признаков $f$ и таким образом преобразуются в $T$ наборов признаков $\{z_1, \dots, z_T\}$. <br><br />
# $\{z_1, \dots, z_T\}$ преобразуются в контекстные и целевые вектора:<br />
## Случайное подмножество векторов $z_{\varphi_{(n)}}$ маскируется, и каждый $z \in z_{\varphi_{(n)}}$ заменяется на обученный вектор признаков. Полученное новое множество признаков $\{z'_1, \dots, z'_T\}$ подается на вход контекстной сети и преобразуется в контекстные вектора $\{c_1, \dots, c_T\}$.<br />
## Множество $\{z_1, \dots, z_T\}$ без замаскированных наборов признаков подается на вход модуля линейного слоя $u$ и преобразуется в целевые вектора $\{t_1, \dots, t_T\}$.<br />
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.<br />
<br />
Суть данного подхода состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ блоков Конформера учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и таким образом модель обучается на размеченных данных.<br />
<br />
===Noisy student===<br />
Вариация классического алгоритма [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучения]]: на каждой итерации модель-ученик обучается на аугментированных данных. <br />
<br />
'''Данные'''<br />
<br />
1. Набор размеченных данных $S$.<br><br />
2. Набор неразмеченных данных $U$.<br><br />
3. Обученная [[Распознавание речи#Языковая модель| языковая модель]] $LM$.<br><br />
4. Набор предобученных с помощью ''wav2vec'' моделей $M_0, \dots, M_n$.<br />
<br />
'''Алгоритм'''<br />
<br />
1. Модель $M_0$ дообучается (англ. ''fine-tune'') на наборе данных $S$ с использованием [[Распознавание речи#Конформер|''SpecAugment'']]. $M = M_0$.<br><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><br />
3. Набор данных $U$ размечается с помощью $M$, получается новый набор данных $A$.<br><br />
4. Наборы $S$ и $A$ объединяются, производится дообучение предобученной модели $M_i$ на объединенном наборе данных с использованием ''SpecAugment''.<br><br />
5. Если перебраны не все модели из набора, то $M = M_{i + 1}$, происходит возвращение к шагу $2$.<br />
<br />
==Применение==<br />
<br />
Системы распознавания речи начали развиваться как специальные сервисы для людей с ограниченными возможностями, но также нашли применение в различных сферах бизнеса, таких как:<br />
* Телефония: системы голосового самообслуживания;<br />
* "Умный дом": голосовой интерфейс управления;<br />
* Роботы: голосовой интерфейс электронных роботов;<br />
* РС, ноутбуки, телефоны: голосовой ввод команд, диктовка текста;<br />
* Автомобили: голосовое управление в салоне автомобиля.<br />
<br />
Основные отрасли применения:<br />
* Голосовое управление<br />
* Голосовые команды<br />
* Голосовой ввод текста<br />
* Голосовой поиск<br />
<br />
==См. также==<br />
* [[Байесовская классификация]]<br />
* [https://ru.wikipedia.org/wiki/Распознавание_образов Распознавание образов]<br />
* [https://habr.com/company/yandex/blog/198556/ Распознавание речи от Яндекса]<br />
* [https://ru.wikipedia.org/wiki/Субвокальное_распознавание Субвокальное распознавание]<br />
<br />
== Примечания ==<br />
<references /><br />
<br />
==Источники информации==<br />
# [https://ru.wikipedia.org/wiki/Speech_recognition] - статья на Википедии<br />
# Тампель И.Б, Карпов А.А. Автоматическое распознавание речи. Учебное пособие. — СПб: Университет ИТМО, 2016. — 138 с.<br />
# [http://fetmag.mrsu.ru/2010-2/pdf/SpeechRecognition.pdf] - статья "Классификация систем распознавания речи".<br />
# [https://moluch.ru/archive/147/41443/] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".<br />
<br />
[[Категория: Машинное обучение]] [[Категория: Обработка естественного языка]] [[Категория: Распознавание речи]]</div>176.59.17.150http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D0%BF%D0%BE%D0%B7%D0%BD%D0%B0%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D1%87%D0%B8&diff=80530Распознавание речи2021-01-24T17:13:53Z<p>176.59.17.150: /* State of the Art алгоритм автоматического распознавания речи */</p>
<hr />
<div>'''Распознавание речи''' (англ. Speech Recognition) {{---}} процесс преобразования речевого сигнала в цифровую информацию.<br />
<br />
Задачей распознавания является сопоставление набору акустических признаков речевого сигнала или наблюдений <br />
<math>X(x_1 ,...,x_n)</math> последовательности слов <br />
<math>W(w_1 ,...,w_k)</math>, имеющих наибольшую вероятность правдоподобия среди всех кандидатов. Для этого используется формула Байеса:<br />
<br />
<center><math>W = argmax \left[\frac{P(W)*P(X|W)}{P(X)}\right]</math></center><br />
<br />
Причем, в процессе распознавания вероятность уже полученных признаков Р(Х) не подлежит оптимизации и знаменатель в формуле не испльзуется:<br />
<br />
<center><math>W = argmax[P(W)*P(X|W)]</math></center><br />
<br />
<br />
==Классификация систем распознавания речи==<br />
<br />
Системы распознавания речи классифицируются<ref>''Федосин С.А., Еремин А. Ю.'' Классификация систем распознавания речи. — Саранск. : МГУ им. Н.П. Огарева, 2009. — С. 3.</ref>:<br />
* по размеру словаря (ограниченный набор слов, словарь большого размера);<br />
* по зависимости от диктора (дикторозависимые и дикторонезависимые системы);<br />
* по типу речи (слитная или раздельная речь);<br />
* по назначению (системы диктовки, командные системы);<br />
* по используемому алгоритму (нейронные сети, скрытые Марковские модели, динамическое программирование);<br />
* по типу структурной единицы (фразы, слова, фонемы, дифоны, аллофоны);<br />
* по принципу выделения структурных единиц (распознавание по шаблону, выделение лексических элементов).<br />
<br />
==Структура систем распознавания речи==<br />
<br />
Системы распознавания речи впервые появились в 1952 году. С тех пор методы распознавания не раз менялись.<br />
Ранее использовались такие методы и алгоритмы, как:<br />
* Динамическое программирование (Dynamic Time Warping) - временные динамические алгоритмы, выполняющие классификацию на основе сравнения с эталоном.<br />
* Методы дискриминантного анализа, основанные на Байесовской дискриминации (Bayesian discrimination).<br />
* Скрытые Марковские Модели (Hidden Markov Model).<br />
* Нейронные сети (Neural Networks).<br />
В настоящее время, перечисленные выше методы как правило комбинируются. Их сочетание позволяет получить более высокое качество распознавания, чем использование каждой модели отдельно.<br />
<br />
Системы распознавания речи имеют следующие основные модули:<br />
* Акустическая модель<br />
* Языковая модель<br />
* Декодер<br />
<br />
===Акустическая модель===<br />
''Фонема'' (phoneme) {{---}} элементарная единица человеческой речи. Примерами фонем являются транскрипции в формате IPA {{---}} так, слово hello состоит из фонем [hɛˈləʊ].<br />
<br />
''Акустическая модель'' {{---}} это функция, принимающая на вход признаки на небольшом участке акустического сигнала (фрейме) и выдающая распределение вероятностей различных фонем на этом фрейме. Таким образом, акустическая модель дает возможность по звуку восстановить, что было произнесено {{---}} с той или иной степенью уверенности.<br><br />
Самой популярной реализацией акустической модели является [[Скрытые Марковские модели|скрытая Марковская модель (СММ)]], в которой скрытыми состояниями являются фонемы, а наблюдениями {{---}} распределения вероятностей признаков на фрейме.<br />
<br />
Рассмотрим подробнее акустическую модель на основе СММ для слова ''six'':<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:HMM_six.jpeg|800px|мини|Рисунок 1. Акустическая модель для слова ''six''. [http://www.inf.ed.ac.uk/teaching/courses/asr/2018-19/asr04-cdhmm-handout.pdf Источник]]]<br />
|}<br />
В круглых (скрытых) состояниях изображены фонемы, а в квадратных (наблюдениях) {{---}} распределения вероятностей признаков (для упрощения, здесь изображено одномерное распределение). Фонемы часто разбивают на 3 этапа {{---}} начало, середину и конец, {{---}} потому что фонема может звучать по-разному в зависимости от момента времени её произнесения. Каждое скрытое состояние содержит переход само в себя, так как время произнесения одной фонемы может занять несколько фреймов. Вероятности перехода между фонемами в СММ являются обучаемыми параметрами, и для их настройки используют [[Алгоритм Баума-Велша|алгоритм Баума-Велша]]. Последовательность фонем по набору распределений на фреймах восстанавливают по [[Алгоритм Витерби|алгоритму Витерби]].<br />
<br />
[[Файл:GMM_acoustic.jpeg|мини|Рисунок 2. Отличие нормального распределения от GMM. [https://jonathan-hui.medium.com/speech-recognition-gmm-hmm-8bb5eff8b196 Источник]]]<br />
В качестве функции распределения вероятностей признаков часто выбирают смешанную гауссову модель (англ. Gaussian Mixture Model, GMM): дело в том, что одна и та же фонема может звучать по-разному, например, в зависимости от акцента. Так как эта функция является по сути суммой нескольких нормальных распределений, она позволяет учесть различные звучания одной и той же фонемы.<br />
<br />
===Языковая модель===<br />
<br />
''Языковая модель'' {{---}} позволяет узнать, какие последовательности слов в языке более вероятны, а какие менее.<br />
Здесь в самом простом случае требуется предсказать следующее слово по известным предыдущим словам. В традиционных системах применялись модели типа N-грамм, в которых на основе большого количества текстов оценивались распределения вероятности появления слова в зависимости от N предшествующих слов. Для получения надежных оценок распределений параметр N должен быть достаточно мал: одно, два или три слова {{---}} модели униграмм, биграмм или триграмм соответственно. Внедрение языковой модели в систему распознавания речи позволило значительно повысить качество распознавания за счет учета контекста.<br />
<br />
===Декодер===<br />
<br />
В ходе работы системы автоматического распознавания речи задача распознавания сводится к определению наиболее вероятной последовательности слов, соответствующих содержанию речевого сигнала. Наиболее вероятный кандидат должен определяться с учетом как акустической, так и лингвистической информации. Это означает, что необходимо производить эффективный поиск среди возможных кандидатов с учетом различной вероятностной информации. При распознавании слитной речи число таких кандидатов огромно, и даже использование самых простых моделей приводит к серьезным проблемам, связанным с быстродействием и памятью систем. Как результат, эта задача выносится в отдельный модуль системы автоматического распознавания речи, называемый декодером.<br />
Декодер должен определять наиболее грамматически вероятную гипотезу для неизвестного высказывания – то есть определять наиболее вероятный путь по сети распознавания, состоящей из моделей слов (которые, в свою очередь, формируются из моделей отдельных фонов). Правдоподобие (likelihood) гипотезы определяется двумя факторами, а именно вероятностями последовательности фонов, приписываемыми акустической моделью, и вероятностями следования слов друг за другом, определяемыми моделью языка. <br />
<br />
Рассмотрим математическую основу декодеров.<br><br />
Отбрасывая несущественный на этапе распознавания знаменатель, запишем:<br />
<br />
<center><math>W = argmax [P(W)P(XW)]</math></center><br />
<br />
где <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) – лексического, фонетического и акустического источников знаний. В соответствии с концепцией марковских цепей, второй множитель представляет собой сумму вероятностей всех возможных последовательностей состояний, что приводит к уравнению: <br />
<br />
<center><math>W = argmax [P(W)\sum_{S_1^T} P(x_1^T, s_1^T | w_1^N)]</math></center><br />
<br />
где <math>s_1^T</math> – одна из последовательностей состояний, порождаемых последовательностью слов <math>w_1^n</math>. На практике применяется критерий Витерби<ref>''Тампель И.Б, Карпов А.А.'' Автоматическое распознавание речи. — СПб. : Университет ИТМО, 2016. — С. 113.</ref>. – ищется последовательность состояний, дающая максимальный вклад в сумму:<br />
<br />
<center><math>W = argmax[P(W)^aMax[P(x_1^T, s_1^T | w_1^N)]]</math></center><br />
<br />
Различают систему раннего и систему позднего предсказания. В первой выполняется предсказание для акустической и языковой модели независимо, а затем оба предсказания поступают в декодер. При позднем предсказании, вычисленные признаки речи в акустической и языковой моделях без предсказания поступают в декодер и уже на основе их совместного декодирования выполняется предсказание.<br />
<br />
Этапы распознавания:<br />
# Обработка речи начинается с оценки качества речевого сигнала. На этом этапе определяется уровень помех и искажений.<br />
# Результат оценки поступает в модуль акустической адаптации, который управляет модулем расчета параметров речи, необходимых для распознавания.<br />
# В сигнале выделяются участки, содержащие речь, и происходит оценка параметров речи. Происходит выделение фонетических и просодических вероятностных характеристик для синтаксического, семантического и прагматического анализа. (Оценка информации о части речи, форме слова и статистические связи между словами.)<br />
# Далее параметры речи поступают в основной блок системы распознавания — декодер. Это компонент, который сопоставляет входной речевой поток с информацией, хранящейся в акустических и языковых моделях, и определяет наиболее вероятную последовательность слов, которая и является конечным результатом распознавания.<br />
<br />
==Признаки==<br />
[[Файл:Frame_division.jpeg|мини|Рисунок 3. Разделение осциллограммы на фреймы. [https://jonathan-hui.medium.com/speech-recognition-feature-extraction-mfcc-plp-5455f5a69dd9 Источник]]]<br />
<br />
Входные данные представляют собой непрерывную осциллограмму звуковой волны. В задачах распознавания речи эту осциллограмму разбивают на '''фреймы''' {{---}} фрагменты звукового потока длительностью около 20 мс и шагом 10 мс. Такой размер соответствует скорости человеческой речи: если человек говорит по 3 слова в секунду, каждое из которых состоит примерно из 4 звуков и каждый звук разбивается на 3 этапа, то на этап выходит около 28 мс. Каждый фрейм независимо трансформируется и подвергается извлечению признаков, тем самым образуя векторизированный набор данных для задачи машинного обучения.<br />
<br />
Признаки речевых событий, используемые при распознавании речи:<br />
* Спектр Фурье.<br />
* Спектр Фурье в шкале мел.<br />
* Коэффициенты линейного предсказания.<br />
* Кепстр.<br />
<br />
'''Спектр Фурье'''<br />
<br />
Спектр Фурье получают, используя алгоритм БПФ (Быстрого Преобразования Фурье) с длиной окна равной 2-4 периода основного тона, что составляет около 20 мс. При частоте квантования 10-16 кГц выбирается окно 256 отсчетов.<br />
<br />
Для ослабления искажений сигнала, вызванных применением к непрерывному сигналу конечного окна анализа, чаще всего используется окно Хэмминга по формуле:<br />
<br />
<center><math>S'(n) = [0.54 - 0.46cos\left(\frac{2\pi n}{N-1}\right)]*S(n)</math></center><br />
<br />
где n = 1..N, N – размерность окна, S(n) – отсчеты речевого сигнала.<br />
<br />
'''Спектр Фурье в шкале мел'''<br />
<br />
К каждому кадру, полученного Фурье спектра применяется блок мел-фильтров — треугольных пересекающихся фильтров, расположенных наиболее плотно в области нижних частот. Количество фильтров — 26. Для расчета фильтров выбирается верхняя и нижняя частота. Затем осуществляется переход от частотной шкалы к мел-шкале по формуле:<br />
<br />
<center><math>M(f) = 1127*ln\left(1 + \frac{f}{700}\right)</math></center><br />
<br />
На мел-шкале выбираются линейно расположенные точки (28 точек для 26 фильтров), после чего, производится обратный переход в частотную область.<br />
<br />
'''Коэффициенты линейного предсказания'''<br />
<br />
Модель линейного предсказания речи предполагает, что передаточная функция голосового тракта представляется полюсным фильтром с передаточной<br />
функцией:<br />
<br />
<center><math>H(z) = \frac{1}{\sum_{i=0}^p a_i z^{-i}}</math></center><br />
<br />
где p – число полюсов и <math>a_0 = 1</math>;<br />
Фильтр с такой передаточной функцией позволяет описать поведение сглаженного спектра речевого сигнала с хорошей точностью, за исключением назализованных звуков. Коэффициенты фильтра {<math>a_i</math>} – выбираются путем минимизации среднеквадратичной ошибки предсказания, просуммированной на окне анализа.<br />
<br />
'''Кепстр'''<br />
<br />
Кепстр (''cepstrum'') сигнала на основе спектра Фурье вычисляется путем применения косинусного Фурье преобразования к логарифму спектра:<br />
<br />
<center><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></center><br />
<br />
где <math>s_i</math> – логарифм спектра, N – количество отсчётов спектра, <math>C_{i,j}</math> – унитарная матрица косинусного преобразования.<br />
<br />
Кепстральные коэффициенты, полученные приведённым способом из ''мел'' спектра Фурье, широко используются для распознавания с помощью марковских моделей и носят название MFCC (Mel-frequency cepstral coefficients).<br />
<br />
==Показатели оценки качества распознавания речи==<br />
<br />
Существуют различные по сложности и прикладному значению задачи распознавания: изолированных слов (команд); ключевых слов в потоке речи; связанной речи (тщательное проговаривание текста с паузами между словами); слитной речи (разделяют диктовку в узкой тематической области, и спонтанную речь, например, в диалоге между людьми).<br />
<br />
Оценка системы, распознающей отдельные команды, не представляет каких-либо трудностей – количество неправильно распознанных команд делится на общее количество испытаний и получается процент ошибки. Для систем, распознающих слитную речь, ситуация не столь проста.<br />
<br />
Основными показателями качества распознавания слитной речи являются:<br />
* процент правильно распознанных слов (WRR - Word Recognition Rate);<br />
* процент неправильно распознанных слов (WER - Word Error Rate);<br />
* процент неправильно распознанных предложений/фраз (SER - Sentence Error Rate);<br />
<br />
Поскольку с развитием речевых технологий показатель WER все более приближается к нулю, то значение улучшения WER более наглядно, чем улучшение точности распознавания слов.<br />
<br />
<center><math>WER = \frac{S+D+I}{T} * 100%</math></center><br />
<br />
где T - количество слов в распознаваемой фразе,<br />
S - количество замененных слов,<br />
D - количество удаленных слов,<br />
I - количество вставленных слов.<br />
Показатель WER может быть больше 100%.<br />
<br />
Другим важным критерием оценки систем распознавания слитной речи является - скорость обработки речи. Она вычисляется с помощью показателя скорости (Real-Time Factor, Speed Factor):<br />
<br />
<center><math>RTF = \frac{T_{proc}}{T_{signal}}</math></center><br />
<br />
<math>T_{signal}</math> - длительность обрабатываемого аудиосигнала;<br><br />
<math>T_{proc}</math> - время, необходимое для обработки сигнала.<br><br />
Если <math>RTF \leqslant 1.0</math> - то распознавание речи ведется в режиме реального времени.<br />
<br />
==State of the Art в автоматическом распознавании речи==<br />
[[Файл:ASR_new_sota.png|600px|thumb|right|Рисунок 4. $WER$ SOTA алгоритмов на наборах данных LibriSpeech test-clean/test-other. $WER$ описываемого в статье алгоритма отмечен красной точкой. [https://arxiv.org/pdf/2010.10504.pdf Источник]]]<br />
Для обучения современных систем распознавания речи требуются тысячи часов размеченной речи, однако получение размеченных данных в необходимом объеме (особенно с учетом разнообразия существующих языков) затруднительно. Это повлияло на то, что сейчас в машинном обучении для распознавания речи успешно используется [[Обучение с частичным привлечением учителя| обучение с частичным привлечением учителя]], которое позволяет сначала обучать модель на большом объеме неразмеченных данных, а потом корректировать ее при помощи размеченных.<br />
<br />
Одним из примеров обучения с частичным привлечением учителя для автоматического распознавания речи является подход, впервые представленный в статье<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><br />
<br />
Основная идея состоит в том, что множество моделей Конформеров при помощи алгоритма ''wav2vec'' предварительно обучается на неразмеченных данных, при этом одновременно с этим на основе них генерируются размеченные. Таким образом, неразмеченные данные используются для двух целей: для обучения модели и для генерации размеченных данных, которые используются для дальнейшего обучения модели алгоритмом ''noisy student''.<br />
<br />
===Конформер===<br />
[[Файл:Conformer.png|600px|thumb|right|Рисунок 5. Общая схема Конформера (a) и схема блоков Конформера (b)]]<br />
[[Трансформер|Трансформер]]<sup>[на 21.01.21 не создан]</sup>, использующий [[Механизм внимания#Self-Attention|механизм самовнимания]], хорошо захватывает глобальный контекст, однако не очень хорошо извлекает локальные признаки. [[Сверточные нейронные сети]], наоборот, эффективно используют локальные признаки, но требуют большого числа слоев для захвата глобального контекста. Конформер (англ. ''Conformer'') комбинирует сверточные слои с механизмом самовнимания. $WER$ на LibriSpeech test-clean/test-other составляет $1.9\%/3.9\%$.<br />
<br />
Сначала данные, подающиеся на вход Конформеру, проходят аугментацию. В применении к распознаванию речи, используется метод аугментации ''SpecAugment''. ''SpecAugment'' применяет к [[Распознавание речи#Признаки|мел спектрограмме]] три вида деформаций: искажение времени (удлинение или сжатие некоторого промежутка записи), удаление некоторого временного промежутка из записи, и удаление некоторого промежутка частот. Таким образом, при обучении на зашумленных с помощью ''SpecAugment'' данных сеть обучается на признаках, устойчивых к деформации во времени, частичной потере частотной информации и потере небольших сегментов речи. Конформер обрабатывает итоговые аугментированные входные данные с помощью сверточной нейронной сети, состоящей из слоя [[Сверточные нейронные сети#Пулинговый слой|пулинга]], [[Нейронные сети, перцептрон|полносвязного слоя]] и [[Практики реализации нейронных сетей#Дропаут|дропаута]], а затем с помощью последовательности блоков Конформера.<br />
<br />
Блоки Конформера {{---}} это последовательность из двух модулей прямой связи (англ. ''feed forward''), между которыми расположены модуль многоголового самовнимания (англ. ''Multi-Head Self Attention'') и сверточный модуль, с последующей нормализацией слоя (англ. ''layer normalization'').<br />
<br />
[[Файл:Multi_Head_Self_Attention_module.png|400px|thumb|right|Рисунок 6. Модуль многоголового самовнимания]]<br />
<br />
'''Модуль многоголового самовнимания'''<br />
<br />
В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''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 обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: результат предыдущего скрытого слоя этого сегмента, как в Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов.<br />
<br />
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.<br />
<br />
Относительное позиционное кодирование почти полностью совпадает с абсолютным позиционным кодированием из оригинального Трансформера, но вместо позиции внутри сегмента используется расстояние между сегментами. Кроме того, добавляются два вектора параметров, задающие важность расстояния и содержания второго токена относительно первого.<br />
<br />
Использование модуля многоголового самовнимания с относительным позиционным кодированием позволяет сети лучше обучаться при различной длине ввода, а результирующая архитектура получается более устойчивой к неоднородности длины высказывания.<br />
<br />
'''Сверточный модуль'''<br />
[[Файл:Convolution_module.png|600px|thumb|right|Рисунок 7. Сверточный модуль]]<br />
Последовательность слоев в сверточном модуле начинается с управляемого модуля<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|пакетная нормализация]].<br />
<br />
В модуле используется функция активации ''swish''<ref>''Prajit Ramachandran, Barret Zoph, Quoc V. Le'' Searching for Activation Functions</ref> (''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$ {{---}} параметр.<br />
<br />
'''Модули прямой связи'''<br />
[[Файл:FFN.png|600px|thumb|right|Рисунок 8. Схема модуля прямой связи]]<br />
В отличие от Трансформера, в котором единственный модуль прямой связи следует за модулем внимания и состоит из двух линейных преобразований и нелинейной активации между ними, Конформер представляет собой два модуля прямой связи, состоящих из слоя нормализации и двух линейных слоев. Кроме того, для регуляризации используется функция активации ''swish'' и [[Практики реализации нейронных сетей#Дропаут|дропаут]].<br />
<br />
===wav2vec===<br />
Подход 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> основан на самообучении на [[Распознавание речи#Признаки|мел спектрограммах]].<br />
<br />
'''Модель'''<br />
<br />
# ''Энкодер признаков'' (англ. Feature Encoder) $f: X \to Z$ реализован на основе [[Сверточные нейронные сети#Сверточный слой|сверточного слоя]]. Преобразует мел спектрограммы $X$, разбитые на $T$ временных интервалов, в наборы признаков $\{z_1, \dots, z_T\}$, которые описывают исходные данные в каждом из $T$ интервалов. <br><br />
# ''Контекстная сеть'' (англ. Context Network) $g: Z \to C$ реализована на основе линейного слоя и слоя, состоящего из $N$ блоков Конформера. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в контекстные вектора $\{c_1, \dots, c_T\}$. <br><br />
# ''Модуль линейного слоя'' (англ. Linear Layer Module) $u: Z \to T$ реализован на основе линейного слоя. Преобразует наборы признаков $\{z_1, \dots, z_T\}$, полученные в результате работы энкодера признаков, в целевые вектора $\{t_1, \dots, t_T\}$. <br><br />
<br />
{|align="center"<br />
|-valign="top"<br />
|[[Файл:wav2vec.png | 600px | thumb | Рисунок 9. Схема обучения модели wav2vec]]<br />
|}<br />
<br />
'''Обучение'''<br />
<br />
# Исходные мел спектрограммы $X$ проходят через через энкодер признаков $f$ и таким образом преобразуются в $T$ наборов признаков $\{z_1, \dots, z_T\}$. <br><br />
# $\{z_1, \dots, z_T\}$ преобразуются в контекстные и целевые вектора:<br />
## Случайное подмножество векторов $z_{\varphi_{(n)}}$ маскируется, и каждый $z \in z_{\varphi_{(n)}}$ заменяется на обученный вектор признаков. Полученное новое множество признаков $\{z'_1, \dots, z'_T\}$ подается на вход контекстной сети и преобразуется в контекстные вектора $\{c_1, \dots, c_T\}$.<br />
## Множество $\{z_1, \dots, z_T\}$ без замаскированных наборов признаков подается на вход модуля линейного слоя $u$ и преобразуется в целевые вектора $\{t_1, \dots, t_T\}$.<br />
# Для полученных контекстных и целевых векторов считается функция потерь $L$, в качестве которой используется функция ''Contrastive Loss''.<br />
<br />
Суть данного подхода состоит в том, что маскируются наборы признаков для некоторых из $T$ интервалов, и путем минимизации функции потерь модель на основе $N$ блоков Конформера учится подбирать наиболее похожий вектор, характеризующий признаки замаскированных участков. При этом модуль линейного слоя позволяет получить целевые вектора для замаскированных данных и таким образом модель обучается на размеченных данных.<br />
<br />
===Noisy student===<br />
Вариация классического алгоритма [[Обучение с частичным привлечением учителя#Самообучение (Self Training)| самообучения]]: на каждой итерации модель-ученик обучается на аугментированных данных. <br />
<br />
'''Данные'''<br />
<br />
1. Набор размеченных данных $S$.<br><br />
2. Набор неразмеченных данных $U$.<br><br />
3. Обученная [[Распознавание речи#Языковая модель| языковая модель]] $LM$.<br><br />
4. Набор предобученных с помощью ''wav2vec'' моделей $M_0, \dots, M_n$.<br />
<br />
'''Алгоритм'''<br />
<br />
1. Модель $M_0$ дообучается (англ. ''fine-tune'') на наборе данных $S$ с использованием [[Распознавание речи#Конформер|''SpecAugment'']]. $M = M_0$.<br><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><br />
3. Набор данных $U$ размечается с помощью $M$, получается новый набор данных $A$.<br><br />
4. Наборы $S$ и $A$ объединяются, производится дообучение предобученной модели $M_i$ на объединенном наборе данных с использованием ''SpecAugment''.<br><br />
5. Если перебраны не все модели из набора, то $M = M_{i + 1}$, происходит возвращение к шагу $2$.<br />
<br />
==Применение==<br />
<br />
Системы распознавания речи начали развиваться как специальные сервисы для людей с ограниченными возможностями, но также нашли применение в различных сферах бизнеса, таких как:<br />
* Телефония: системы голосового самообслуживания;<br />
* "Умный дом": голосовой интерфейс управления;<br />
* Роботы: голосовой интерфейс электронных роботов;<br />
* РС, ноутбуки, телефоны: голосовой ввод команд, диктовка текста;<br />
* Автомобили: голосовое управление в салоне автомобиля.<br />
<br />
Основные отрасли применения:<br />
* Голосовое управление<br />
* Голосовые команды<br />
* Голосовой ввод текста<br />
* Голосовой поиск<br />
<br />
==См. также==<br />
* [[Байесовская классификация]]<br />
* [https://ru.wikipedia.org/wiki/Распознавание_образов Распознавание образов]<br />
* [https://habr.com/company/yandex/blog/198556/ Распознавание речи от Яндекса]<br />
* [https://ru.wikipedia.org/wiki/Субвокальное_распознавание Субвокальное распознавание]<br />
<br />
== Примечания ==<br />
<references /><br />
<br />
==Источники информации==<br />
# [https://ru.wikipedia.org/wiki/Speech_recognition] - статья на Википедии<br />
# Тампель И.Б, Карпов А.А. Автоматическое распознавание речи. Учебное пособие. — СПб: Университет ИТМО, 2016. — 138 с.<br />
# [http://fetmag.mrsu.ru/2010-2/pdf/SpeechRecognition.pdf] - статья "Классификация систем распознавания речи".<br />
# [https://moluch.ru/archive/147/41443/] - статья "Выделение границ фонем речевого сигнала с помощью мел-частотных спектральных коэффициентов".<br />
<br />
[[Категория: Машинное обучение]] [[Категория: Обработка естественного языка]] [[Категория: Распознавание речи]]</div>176.59.17.150