• Пошаговое руководство для функции потери распознавания речи.
  • Краткое объяснение шагов алгоритма CTC.

Увлекателен ли дом Google? Впечатляет ли вас эхо Amazon? Вы когда-нибудь задумывались, какая технология стоит за этими устройствами? Позвольте мне рассказать вам о технологиях, лежащих в основе этих устройств.

Первой технологией будет автоматическое распознавание речи (ASR), которое можно обучить с помощью нейронной сети с функцией потери CTC. Этот метод был опубликован в Deep Speech 2 и показал хорошие результаты. Поэтому мы углубимся в архитектуру нейронной сети Deep Speech 2 и функцию потери CTC.

Для архитектуры нейронной сети мы принимаем речь и представляем речевой ввод в виде спектрограммы. Спектрограмма представляет собой визуальное представление частоты речи в зависимости от временной дисперсии. Когда у нас есть визуальные представления, мы можем решить проблему распознавания речи как проблему классификации изображений, разделив визуальное представление речи на сегменты. Затем у нас есть несколько слоев RNN, чтобы изучить отношения между сегментами и классифицировать каждый сегмент по метке. Например, когда мы произносим пул за 6 секунд, мы можем разделить пул на 6 сегментов [wav1, wav2, wav3, wav4, wav5, wav6]. Обученная модель будет прогнозировать разделенные сегменты спектрограммы на метки [p, o, -, o, l, l]. Мы вводим - здесь, чтобы различать последовательные метки. если мы не вводим метку -, [p,o,o,o,l,l] может представлять pool или pol. Когда вводится метка -, [p,o,o,o,l,l] может представлять только pol, а [p,o,-,o,l,l] представляет пул.

Звучит просто, не так ли? Когда у нас есть ввод: [wav1,wav2,wav3,wav4,wav5,wav6] и метка: [p,o,-,o,l,l], мы может обучить модель распознавания речи. Однако человек может говорить «бассейн» с длинным окончанием «л» [p,o,-,o,l,l] или человек может говорить очень быстро [p,o,-,o,l,- ], или человек может произнести очень длинный звук «п» [п, п, о,-, о, л] в начале. Сочетаний для каждого слова очень много. невозможно пометить звук [wav1,wav2,wav3,wav4,wav5,wav6] разных людей с разной скоростью речи для обучения модели распознавания речи. Чтобы решить эту проблему, мы просто помечаем [wav1,wav2,wav3,wav4,wav5,wav6] как «пул» и используем алгоритм временной классификации Connectionist (CTC).

Во-первых, мы создаем все возможные выравнивания для метки с учетом входной спектрограммы. На рисунке 1 мы сгенерировали 3 возможных выравнивания для метки «пул». И на основе этих возможных выравниваний мы получаем количество каждого [p,o,o,l,-] с определенной отметкой времени. В момент времени 1, t1 у нас есть 3 «р». В момент времени 2, t2 у нас есть 1 «р» и 2 «о». Мы выполняем аналогичный метод подсчета для t3, t4, t5 и t6, чтобы создать приведенную выше таблицу.

Далее мы хотели бы получить условные вероятности для каждого возможного расклада. Для выравнивания 1 имеем:

p(y, alignment1 | X) = p(y=p|wav1)*p(y=o|wav2)*p(y=o|wav3)*p(y=-|wav4)*p(y=o|wav5)*p(y=l|wav6) = 0.296296.
at t1 : p(y=p|wav1) = 3/3
at t2 : p(y=o|wav2) = 2/3
at t3 : p(y=o|wav3) = 2/3
at t4 : p(y=-|wav4) = 2/3
at t5 : p(y=o|wav5) = 3/3
at t6 : p(y=l|wav6) = 3/3

Используя аналогичные методы, мы получим p(y,alignment2 | X) = 0,074074 и p(y,alignment3 | X) = 0,148148.

После этого мы хотели бы удалить информацию о выравнивании, чтобы получить только p(y | X). Термин для этого процесса называется маргинализацией. Этот шаг прост. мы просто SUM_ALL_POSSIBLE_ALIGNMENT(p(y, выравнивание1|X), p(y, выравнивание2|X), p(y, выравнивание3|X)).

Итак, теперь мы знаем, что процесс CTC — это просто процесс нахождения p(y | X) для всех возможных выравниваний, где y = — метка «пул», а X — разделенная спектрограмма (wav1, wav2, wav3, wav4, wav5, wav6). В конце концов, модель распознавания речи — это всего лишь модель, позволяющая присваивать наилучшие метки (оптимизированный путь) всем видам отклонений во входной спектрограмме.

До сих пор у нас есть понимание в CTC. Благодаря статье Deep Speech 2: Сквозное распознавание речи на английском и китайском языках», опубликованной Baidu Research — Silicon Valley AI Lab. Есть несколько интересных статей, связанных с распознаванием речи, таких как Сегментальная RNN и Исследование нейронных преобразователей для сквозного распознавания речи. В сегментарной RNN мы генерируем выравнивания, используя продолжительность. Это позволит исключить использование дополнительной метки -. а для нейронных преобразователей мы используем языковую модель и количество слов, чтобы сделать прогноз. Эти статьи интересны, но требуют фундаментального понимания CTC. Не стесняйтесь пересматривать эту статью, если у вас есть сомнения в CTC. Вы можете попытаться доказать процесс маргинализации, это очень просто. Я думаю, что процесс маргинализации является сутью CTC, и он также широко используется в НЛП. Если вам нужна помощь в доказательстве, просто прокомментируйте ниже. Я найду время, чтобы обновить эту статью. Если нет, я надеюсь, что эта статья поможет вам понять CTC и откроет вам дверь в мир распознавания речи!