Структура пайплайна one-shot text to speech

Старые подходы решения задачи multi voice text-to-speech

Относительно старые (до 2016г.) multi voice text-to-speech подходы базировались на обучении двух моделей: синтезатора - модели, генерирующую мел-спектрограммы из последовательности символов и вокодера - модели, генерирующую wav-последовательности из мел-спектрограммы, созданной синтезатором. 


Основные проблемы данного подхода - 
ресурсозатратность и ограниченное число спикеров. Т.е. для обучения такой структуры собирается большой набор данных из нескольких спикеров, причем необходимо хотя бы 300+ примеров аудиозаписей для каждого спикера. Внутри модели обучаются внутренние слои векторного представления для спикеров из обучающей выборки. Соответственно, мы можем использовать голоса только тех спикеров, примеры которых были использованы на этапе обучения. Если же хочется добавить новый голос, придется заново обучать модель на всей выборке + сэмплы нового спикера. Ниже представлена структура такого пайплайна.


Современное решение multi voice text-to-speech

Структура универсального решения, позволяющего получать новое звучание выглядит следующим образом:


Данная система состоит из трех независимо обучаемых компонентов: сеть - кодировщик (энкдоер) спикеров, обученная задаче идентификации спикеров с использованием независимого набора данных зашумленной речи без транскрипций, т.е. только аудиофайлы (для такой сети нужно очень много различных спикеров 7к+). Данная модель создает вектор фиксированной размерности из аудиофайла с речью спикера длительностью от 5 до 10 секунд; сеть синтезатор sequence-sequence на основе Tacotron 2, которая генерирует мел-спектрограмму из текста, дополненную вектором из кодировщика; и сеть вокодер, на основе архитектуры GAN, в частности MelGan. В данном обзоре мы рассмотрим ключевую часть - кодировщик.

Speaker encoder

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

Сеть отображает последовательность логарифмических кадров спектрограммы, вычисленную из речевого высказывания произвольной длины, в вектор вложения фиксированной размерности, известный как d-вектор. Сеть обучена оптимизировать идентификационную функцию потерь, так что высказывания одного и того же говорящего имеют высокое косинусное сходство, в то время как высказывания разных говорящих находятся далеко друг от друга в результирующем пространстве. Набор обучающих данных состоит из примеров звуков речи, сегментированных на 1,6 секунды, и соответствующих идентификационных меток говорящего; транскрипция не используется.

Входные 80-канальные логарифмированные мел-спектрограммы передаются в сеть, состоящую из стека из 3 слоев LSTM по 768 ячеек, за каждым из которых следует проекция на 256 пространство. Окончательный вектор создается путем L2-нормализации вывода.

Во время вывода спектрограмма разбивается на окна по 800 мсек с перекрытием на 50%. Сеть запускается независимо в каждом окне, а выходные данные усредняются и нормализуются для создания окончательного эмбединга. Хотя сеть не оптимизирована напрямую для изучения представления, которое фиксирует характеристики говорящего, относящиеся к синтезу, авторы обнаружили, что обучение задаче распознавания говорящего приводит к созданию представления, которое напрямую подходит для настройки сети синтезатора.

Заключение

Именно из-за использования эмбедингов, полученных из кодировщика, обученного на тысячах различных (нечистых) данных, появилась возможность добавлять новых спикеров в готовую систему, без "ретреина". Также в ходе своих экспериментов, было обнаружено, что для наилучшего звучания и передачи стиля можно дообучить сеть синтезатора только на одном (целевом) спикере, использую лишь 10-20 обучающих примеров.