В этой статье мы поговорим о системах клонирования голоса на основе TTS (Text-to-Speech), которые мы используем в корпоративной лаборатории человеко-машинного взаимодействия ИТМО для аугментации речевых баз данных в рамках задачи мультимодального распознавания доминантности дикторов в полилогах. Хотел отметить, что данный текст является, скорее, кратким обзором современных методов и технологий, которые могут быть полезны в решении такого рода задач. Предполагается, что читатель имеет хотя бы базовые знания в области машинного обучения.  Итак, хотелось бы начать наш разговор с самых основ – зачем нам необходимо аугментировать аудиоданные, как представить TTS в качестве задачи машинного обучения, и, наконец, перейти к рассмотрению тех технологий, которые нашли применение в решении задач нашей лаборатории. Современные решения, применяемые в области речевых технологий, основаны на базе нейронных сетей, и, соответственно, требуют обширных обучающих выборок. А для решения задач распознавания речи и эмоций, идентификации диктора, а также синтеза аудио необходимы корпуса данных с экспрессивной речью. Несложно догадаться, какие проблемы возникают при сборе таких данных. Во-первых, необходимо вызвать у человека требуемую эмоцию, однако не все реакции могу быть вызваны простыми и естественными способами. А во-вторых, использование записей профессиональных актеров может привести к значительным финансовым затратам, а также к «наигранности» полученных эмоций.  Очевидно, из-за указанных причин на данный момент существует дефицит экспрессивных речевых данных на русском языке, доступных для широких масс разработчиков. Но все же, можно найти примеры корпусов данных, которые могут быть использованы для настройки моделей машинного обучения – акустические датасеты dusha (250 часов + 100 разметка без аудио, 4 эмоции) и aniemore (4 часа, 7 эмоций). Однако, несмотря на высокое качество записи и разметки, проблема несбалансированности представленных эмоций все же остается.  Для решения этих проблем существуют две группы подходов. Первая группа -  это стандартные преобразования аудиозаписей (растяжение во времени, изменение громкости, изменение темпа, сдвиг высоты тона, добавление фонового шума или тишины, частотное и временное маскирование, а также комбинации этих методов). Вторая группа подходов, которую мы рассмотрим более детально, основана на генерации синтетических данных с использованием методов машинного обучения, например с помощью TTS-моделей, основанных на генеративных состязательных сетях (GAN, generative adversarial network) и вариационных автокодировщиках (VAE, variational autoencoder). Системы синтеза речи TTS позволяют генерировать человеческий голос с помощью компьютеров. Основное требование к TTS-системе – это естественность речи и ее разборчивость. Прежде чем приступить к рассказу о том, как же все-таки работают современные системы TTS, рассмотрим процесс речеобразования человека, чтобы разобраться с основными признаками, которые имеют значение для генерации аудиоданных.    В процессе человеческого речеобразования нервная система передает нервные импульсы мышечным волокнам, которые приводят в движение органы речевого тракта. В ходе работы органов речи, во время которого речевой тракт постоянно меняет свою конфигурацию, происходят аэродинамические процессы с воздушным потоком из легких, который преобразуется в периодический комплексный звук. Выходной сигнал состоит из основной частоты колебаний – частота основного тона и гармоник этой частоты, придающих голосу определённый – тембр. Контур изменения определяет интонационные характеристики, и даже эмоциональное состояние говорящего. Спектральная картина на выходе в основном зависит от колебаний голосовых складок в гортани, выступающего в роли резонатора, усиливающего звук. Распределение энергии сигнала по оси частот характеризуется формантами, которые обусловлены работой голосовых связок. Все вышеуказанные характеристики (признаки) можно найти на спектрограмме.  Спектрограмма – это график, показывающий значение амплитуды сигнала в зависимости от частоты в момент времени t, получаемое после вычисления квадрата амплитуды для оконного преобразования Фурье (STFT) к звуковому сигналу. Суть STFT в случае дискретного преобразования состоит в том, что исходный сигнал во временной области разбивается на перекрывающиеся части, на каждой из которых рассчитывается спектр Фурье с последующим сдвигом на заданный шаг.       Классическая постановка задачи TTS является ярким примером обучения с учителем (supervised learning). Исходную задачу TTS можно описать в терминах машинного обучения в следующем виде. Пусть – j-й звук, произнесенный диктором, а соответствующее признаковое описание этого звука – где  Модель синтеза вычисляет оценку где t – представляет фонему для а – параметры синтезатора. Теперь вокодер выполняет оценку . В общем виде необходимо оптимизировать следующую функцию качества: где – потери.  Данное выражение – функция качества во временной области, представляющее собой композицию моделей, что, вообще говоря, может усложнять сходимость алгоритма к локальному оптимуму.  Поэтому, следует отдельно обучать модели во временно-частотной и временной области соответственно: Из этого вытекает основная схема обучения большинства современных конвейерных моделей TTS: Первый этап – это лингвистический анализ, включающий в себя нормализацию текста, разбиение на слова, морфологическую разметку, преобразование графем в фонемы (G2P), а также выделяющий различные лингвистические особенности. Второй этап состоит из процесса преобразования входной последовательности фонем в спектрограмму – представление сигнала в частотно-временной области. Последний этап – восстановление звуковой волны по спектрограмме. Для этого обычно используется специальный алгоритм – вокодер. В последнее время качество современных (SOTA) моделей адаптивного синтеза уже сопоставимо с реальной человеческой речью. Во многом, этого удалось добиться путем использования end-to-end TTS-моделей, использующих data-driven методы на основе генеративного моделирования. Именно такой подход на основе генеративных архитектур наша команда использовала в своей работе.  На самом деле существуют тонкие различия между различными глубокими порождающими моделями и методами их обучения. Например, VAE состоит в определении вероятностной модели совместного распределения латентных переменныхи данных а GAN-ы не порождают латентные представления обучающих данных и не моделируют распределение данных, но при этом можно сказать о неявном обучении модели распределения. Однако подробно останавливаться на этом не будем. Основная идея – выдвинуть условное предположение, что существует такое совместное распределениеили которое включает в себя бесконечное количество пар признаков и меток в том числе образцы из обучающей и тестовой выборок. Теперь мы можем создавать новые образцы данных того же типа, что и данные из обучающей выборки.  Начали мы наши исследования с модели FlowTron. Это TTS-сеть с возможностью контроля стиля и вариативности речи диктора, использующий такой порождающий механизм как поток. Генерация кадра в данной модели происходит на основе предыдущих кадров  что делает FlowTron моделью авторегрессионого типа. FlowTron обучается инвертируемому отображению данных (распределение по мел-спектрам) в параметризованное латентное пространство, которым можно манипулировать для управления многими аспектами речи (высота, тон, темп). Получая на вход представленную в виде вектора мел-спектрограмму в качестве случайной переменной, полученной «путем выборки» из неизвестного распределения, механизм потока вычисляет функцию плотности вероятности исходной переменной: где – случайная величина с интерпретируемой функцией плотности вероятности,  – генератор, который преобразует шум в сложное распределение, – поток, который преобразует сложное распределение в более простое (шум). Примечательно, что в сравнении с VAE и GAN, потоки дают более точную оценку плотности распределения наблюдаемых данных. Данный механизм обучается стандартным образом – путем максимизации их общего логарифмического правдоподобия. На практике мы, конечно же, предполагаем, что латентная переменная распределена нормально В этом случае композиция называется нормализующим потоком. Шаг потока в модели FlowTron состоит из аффинного связывающего слоя и принимает на вход спектрограмму фразы, произнесённый диктором (speaker_id): где  – некоторое авторегрессионное преобразование, – коэффициент шкалирования, – смещение, операция – произведение Адамара. Стоит отметить, что спектрограмма, используемая в FlowTron – непростая, а взвешенная мел-фильтрами, которые используются из-за особенностей психофизиологического восприятия звука человеком: человеческое ухо более чувствительно к изменениям звука на более низких частотах, чем на высоких.    Процесс генерации на основе текста и диктора представляется как: где  Теперь можно выполнять выборки из нужных областей латентного пространства, соответствующих определённым характеристикам речи в пространстве мел-спектрограмм. Но это еще не все. Как оказалось, FlowTron обучается латентному представлению, которое хранит нетекстовую (паралингвистическую) информацию, а также позволяет увеличивать вариацию в мел-спектрах и выполнять перенос стиля диктора.  Тогда, сразу после процесса обучения, мы принялись за эксперименты с использованием корпуса данных, который основывается на озвучке игры The Elder Scrolls V: Skyrim на русском языке. В таблице ниже представлены оценки качества итогового синтеза: Эксперимент MOS Изменение контента    4.0996    Замена диктора с сохранением гендера    4.4828    Замена диктора с изменением гендера    4.3103    Перенос стиля на реплику того же диктора    4.4828    Перенос стиля на реплику другого диктора    3.9310    Современные решения, применяемые в области речевых технологий, основаны на базе нейронных сетей, и, соответственно, требуют обширных обучающих выборок. А для решения задач распознавания речи и эмоций, идентификации диктора, а также синтеза аудио необходимы корпуса данных с экспрессивной речью. Несложно догадаться, какие проблемы возникают при сборе таких данных. Во-первых, необходимо вызвать у человека требуемую эмоцию, однако не все реакции могу быть вызваны простыми и естественными способами. А во-вторых, использование записей профессиональных актеров может привести к значительным финансовым затратам, а также к «наигранности» полученных эмоций.  Очевидно, из-за указанных причин на данный момент существует дефицит экспрессивных речевых данных на русском языке, доступных для широких масс разработчиков. Но все же, можно найти примеры корпусов данных, которые могут быть использованы для настройки моделей машинного обучения – акустические датасеты dusha [https://github.com/salute-developers/golos/tree/master/dusha#dusha-dataset] (250 часов + 100 разметка без аудио, 4 эмоции) и aniemore [https://github.com/aniemore/Aniemore] (4 часа, 7 эмоций). Однако, несмотря на высокое качество записи и разметки, проблема несбалансированности представленных эмоций все же остается.  Примечательно, что в сравнении с VAE и GAN, потоки дают более точную оценку плотности распределения наблюдаемых данных. Данный механизм обучается стандартным образом – путем максимизации их общего логарифмического правдоподобия. На практике мы, конечно же, предполагаем, что латентная переменная распределена нормально z~N(z;0,I). В этом случае композиция x=f_0∘f_1∘…f_k (z) называется нормализующим потоком. Шаг потока m в модели FlowTron состоит из аффинного связывающего слоя и принимает на вход спектрограмму фразы, произнесённый диктором (speaker_id): Чтобы вычислить оценки MOS (mean opinion score), необходимо взять среднее арифметическое оценок качества синтезируемой речи, выставляемой специальными людьми по шкале от 1 до 5. Заметим, что данная оценка не абсолютна, так как является субъективной, поэтому сравнение экспериментов, произведенных отдельными группами людей в разное время на отличающихся данных некорректно.  Сначала мы думали что проблема аугментации решена, ведь у нас есть модель, показывающая хорошее качество. Однако мы столкнулись с некоторыми трудностями.  При значительном расхождении в длине фразы звук сильно искажается Перенос стиля работает нестабильно Качество данных, используемых на этапе обучения, имеет критическое влияние на итоговый результат при изменении диктора Тогда стало понятно, что FlowTron нам не совсем подходит, и мы принялись искать другие модели, которые потенциально можно было бы использовать для решения нашей задачи.    Как нам показалось, одна из возможных систем, которая могла бы обеспечить масштабируемое решение задачи клонирования голоса с хорошей производительностью, является VITS – параллельная end2end система TTS. VITS использует вариационный автокодировщик (VAE) для соединения акустической модели с вокодером через латентное (скрытое) представление. Такой подход позволяет генерировать высококачественные аудиозаписи путем улучшения выразительных особенностей сети с помощью механизма нормализующих потоков и состязательного обучения во временной области сигнала, а также добавляет возможность произнесения текста с различными вариациями благодаря моделированию неопределённости латентного состояния и стохастическому предсказателю длительности.   VITS обладает примечательными особенностями: Синтез сигнала во временной области непосредственно из текста без дополнительных условий ввода Использует алгоритм MAS (Monotonic Alignment Search), который представляет из себя одну из разновидностей DTW (dynamic time warping), для поиска выравнивания последовательностей без расчета потерь сети. Alignment очень важен в модели, так как из него можно получить представление о том, какие части входных данных более релевантные для генерации соответствующего фрейма мел-спектрограммы Генерация сигнала происходит параллельно VITS превосходит двухконвейерные модели    Из рисунка выше можно увидеть, что VITS состоит из априорного кодировщика, стохастического предиктора длительности, апостериорного кодировщика и декодера. При обучении VITS использует оценку ELBO (Evidence Lower Bound), которая состоит из ожидаемого логарифмического правдоподобия и регуляризатора, штрафующего апостериорное распределение за сильное отклонение от априорного: где – правдоподобие данных, – правдоподобие данных (моделируется декодером), – апостериорное распределение (моделируется кодером), – ошибка реконструкции, – дивергенция Кульбака-Лейблера, – априорное распределение латентного состояния, которое вычисляется через механизм нормализующих потоков. Но мы пошли еще дальше и использовали модификацию VITS, которая основана на технологии Transfer learning и вместо фонем на вход текстового кодировщика требует представление, вычисленное с помощью подхода на основе HuBERT (Hidden-Unit BERT). HuBERT применяет кластеризацию на основе K-Means к коротким звуковым сегментам (25 миллисекунд), а полученные кластеры использует в качестве дискретных скрытых блоков (hidden units), которые модель BERT будет обучаться прогнозировать.  Благодаря такой модификации мы смогли получить ряд улучшений. Во-первых, высококачественный и надежный адаптивный синтез с сохранением произношения и эмоций. Во-вторых, отпадает необходимость в текстовой аннотации. В-третьих, требуется минимальное количество аудиоданных для обучения. И наконец, в-четвертых, у нас теперь есть возможность изменения Однако представленная модель не работает в режиме zero-shot (режим, который позволяет обучаться без каких-либо помеченных примеров) в отличие от YourTTS, который использует полноценный нейросетевой кодировщик дикторов и также основан на VITS. Так как же мы выполняем преобразование голоса? Тут все достаточно прозрачно. Во время обучения мы специально убираем идентификаторы дикторов для того, чтобы кодировщик текста обучался представлениям независимым от диктора. Для заданного диктора рассчитывается мел-спектрограмма и с помощью апостериорного кодировщика и потоков априорного кодировщика вычисляется диктора-независимое представление: Процесс подмены голоса в данном случае описывается как Теперь все ограничивается только нашей фантазией, ведь обуславливаться мы можем не только на диктора, но и, например, на эмоцию. Правда, над этим мы пока еще только работаем. Мы решили использовать этот подход для аугментации набора данных MELD для дальнейшей работы над мультимодальным распознаванием доминантности и валентности дикторов в полилогах.   Теперь уже не для кого не секрет, что с ростом количества аудиоданных и развитием методов полуавтоматического обучения, модели глубокого обучения становятся доминирующими в сфере TTS. Вероятно, это связано с использованием потенциала глубоких архитектур в обучении скрытых представлений, что позволяет преодолевать принципиальное ограничение методов, использующих предварительно заданные характеристики для обрабатываемых данных. Такой подход позволил повысить обобщаемость моделей на различных дикторах и ранее не встречаемых словах, что положительно сказалось на задаче адаптивного синтеза. Использование генеративного моделирования, дополняющего нейронные модели состязательным процессом обучения, позволило системам TTS повысить свои выразительные возможности.  Мы провели эксперименты, в результате которых было подтверждено, что FlowTron может быть успешно применен для аугментации речевых данных. Эта модель показывает хорошие результаты в изменении контента, замене диктора и переносе стиля. Однако, у FlowTron есть некоторые недостатки, такие как скачки качества синтеза и сильная зависимость от «чистоты» обучающих данных. Модификация VITS с использованием модели HuBERT является более высококачественной и надежной для адаптивного синтеза, однако схему с изменением контента следует еще доработать. Мы собираемся использовать этот подход для аугментации данных в задаче мультимодального распознавания доминантности дикторов.