Посмотрел видео недавнего доклада Tinkoff про распознавание и синтез речи: https://youtu.be/N6DnPC0rwIo. Мне доклад показался очень толковым: спикеры за час с небольшим провели ликбез по технологиям распознавания и синтеза и поделились собственным опытом. Попробую вкратце его пересказать.
Чтобы синтезировать речь из текста, сначала нужно привести текст в читабельный вид: записать буквами числа, сокращения, и прочие специальные обозначения (т.е. нормализовать текст), расставить ударения и точки над ё, по возможности проставить паузы и метки для интонации. Дальше текст превращают в последовательность спектрограмм, т.е. гистограмм, показывающих зависимость высоты звука от частоты на коротком временном интервале. Делают это обычно seq2seq моделями, в качестве основы часто берут архитектуру tacotron, и которые обучаются довольно долго. Последний шаг - применение модели-вокодера, которая из спектрограммы генерирует непосредственно звук. Вокодер тоже может быть авторегрессионным (например, свёрточной сетью), может быть основан на нормализующих потоках, может быть GANом. Оценивают всё это обычно side-by-side краудсорсинговыми оценками.
Распознавание речи решает обратную задачу, получая из неё текст. Первая сложность - выравнивание: из большого количества коротких аудиосэмплов нужно получить относительно короткую последовательность букв, и нужно определить, какие сэмплы относятся к какой букве (а какие - ни к какой). Это решается beam search декодированием: на каждом временном шаге мы поддерживаем несколько гипотез о том, какой может быть последовательность букв к данному моменту, и в конце выбираем последовательность, набравшую максимальное суммарное правдоподобие. Во время декодирования к акустической модели (которая классифицирует каждый сэмпл по-отдельности) добавляют языковую модель (которая отвечает за правдоподобие получившейся последовательности букв с точки зрения языка). Если распознавать речь хочется в реальном времени, акустическая модель (рекуррентная нейронка) запускается на скользящем окне из нескольких семплов, продвигающемся вперёд по мере поступления данных. Чтобы избегать пауз в ответе голосового помощника, нужна ещё хорошая модель для детекции окончания речи. В целом, есть очевидный трейдофф между скоростью распознавания и качеством. Зато качество мерять просто: это доля правильно распознанных слов, которая у Tinkoff сейчас достигает 97% на аудиокнигах и 85-90% на телефонных разговорах.
Этот краткий пересказ упускает кучу важных деталей и интересных подробностей, так что, если есть время, лучше смотрите видео целиком. Хороших выходных!
Post #236
737