В чем понт Авторы побили очередной рекорд для TTS(text to speech) с MOS(mean opinion score -среднее оценки асессоров от 1 до 5) 4.53 против профессиональных спикеров с 4.58. Модель смотрит на запятые, капс, по ходу исправляет ошибки, читает слова, ориентируясь на семантику (например, desert, по-русски покидать и пустыня, произносится по разному, хотя пишется одинаково). По ссылке можно послушать демонстрацию вышесказанного и примеры озвучки одного и того же текста диктором и алгоритмом (лично я угадала принадлежность 2 из 4 примеров) https://google.github.io/tacotron/publications/tacotron2/index.html
Подробности Историческая справка - в основе статьи лежит модель Wavenet (гугловский прародитель почти всего современного движа на тему TTS). Wavenet умеет авторегрессивно генерить звуки - человеческую речь, музыку. В качестве обучающей выборки мы используем аудиосигнал в виде осциллограммы(изображение частот звуковой волны во времени), и для предсказания каждого момента времени берем, например, четыре предыдущих момента, проходимся по ним разреженной свёрткой (прикладываем ее к 1-му и 2-му предыдущему, а затем к 3-му и 4-му предыдущему), пропускаем это еще через несколько сверток и на выходе получаем одно число - собственно частоту сигнала для нашего конкретного момента времени. Чтобы генерить сигнал не просто так, а по тексту, при предсказании дополнительно учитываем выученное нами же представление символов в виде лингвистических признаков озвучки этого текста . Вернемся к статье. Одним из трюков в этой статье является использование вместо лингвистических фичей mel-спектрограмм(Фурье трансформаций с дополнительными преобразованиями сигнала) - они лучше подхватывают особенности человеческого голоса. Обучение сети можно разделить на два этапа - из символов учимся предсказывать признаковое описание для будущего звука в виде mel-спектрограмм, а затем из спектрограмм итеративно генеририть звук. Первый этап состоит из энкодера и декодера. Энкодером получаем эмбеддинг для символов в тексте, обрабатываем свертками, нелинейностью и LSTM. К полученному результату применяем attention. Декодер - это авторегрессивная рекурентная сетка, которая умеет из полученного представления генерить спектрограммы. Параллельно с предсказанием спектрограммы, мы схлопываем выход декодера и контекст attention в скаляр и пропуская через сигмоиду получаем вероятность того, что стоит прекратить генерацию спектрограмм. Это делается, чтобы генерировать спектрограммы произвольной длительности (делаем модель более гибкой). На втором этапе мы с помощью модифицированного Wavenet, который принимает на вход спектрограммы вместо лингвистических фичей, генерим последовательно каждый звук через признаковое описание в виде спектрограммы и звука предыдущих моментов.