Pull to refresh
49.39
Just AI
Разработка и внедрение технологий разговорного AI

Как управлять просодией в синтезе речи

Reading time7 min
Views7.6K

Привет, Хабр! Меня зовут Дарима Мылзенова, я инженер-исследователь Just AI.

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

Современные системы синтеза речи уже звучат довольно реалистично и порой даже обходят человека, если сравнивать качество звучания синтезированной и записанной диктором речи. Но значит ли это, что в синтезе речи не осталось нерешенных задач?

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

Содержание статьи:
1. Что такое просодия?
2. Управление с помощью разметки 
3. Предсказание латентного вектора просодии
4. Предсказание питча, энергии и длительности с FastSpeech2
5. Экспрессивный синтез с потоковыми моделями

Что такое просодия

Речь человека содержит информацию, которую условно можно разделить на лингвистическую – текст, который произносится, и паралингвистическую – тембр и акцент (то, что зависит от спикера), эффекты записи (настройка микрофона, фоновый шум) и просодия. В понятие просодии входят: мелодика, темп, высота и энергия речевого сигнала.

Если при обучении модели text-to-speech (TTS) подавать на вход одну лишь лингвистическую информацию, то модели будет непросто научиться делать хорошие предсказания, так как один и тот же текст может быть произнесен по-разному. Такие задачи, где одному входу (тексту) могут соответствовать разные выходы (аудио), также называют one-to-many. Сталкиваясь с подобной задачей, модель будет склонна усреднять свои предсказания – такая речь будет монотонной и роботоподобной.

Как влиять на просодию

Прежде чем мы перейдем к методам управления просодией, напомню как работает синтез речи. 

Современные системы синтеза, как правило, состоят из двух нейросетей. Первая – акустическая модель получает на вход текст и генерирует промежуточное представление звука, например, мел-спектрограмму.

Мел-спектрограмма – это матрица магнитуд частот в мел-шкале, полученная из сигнала оконным преобразованием Фурье. Это сжатое представление сигнала содержит главную информацию об аудио.

Вторая модель – вокодер – по мел-спектрограмме предсказывает аудиосигнал. Далее речь пойдет именно об акустических моделях, предсказывающих мел-спектрограмму.

Для того чтобы обучить мультиспикерную акустическую модель, способную синтезировать речь разными голосами, достаточно добавить дополнительный вход для уникального идентификатора диктора (спикер id). Если у нас будет разметка просодических фич по тексту, то аналогичным образом мы сможем подать их на вход модели как дополнительные признаки. Таким было управление просодией еще до того, как синтез стал нейросетевым. Например, в английском языке есть стандарт, ToBI индекс – Tones and Breaks indices. Каждому слову ставится в соответствии определенный тэг – повышение или понижение интонации, фразовый акцент, длительность пауз и так далее. Если подавать на вход TTS-модели фонемы и текст вместе с просодическими индексами (можно обучить отдельную модель предсказывать индекс по тексту), то нейросеть будет понимать, какая именно интонация должна содержаться в предложении. Таким образом, мы сокращаем неопределенность в задаче one-to-many и приближаем ее к one-to-one. 

Fine-grained prosody modeling in neural speech synthesis using ToBI
Fine-grained prosody modeling in neural speech synthesis using ToBI

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

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

Предсказание латентного вектора просодии

Использовать ручную разметку довольно затруднительно и потому не актуально – все современные исследования посвящены тому, как управлять просодией на уровне архитектуры нейронной сети. Одна из первых таких статей была написана в 2018 году.

Идея проста. Раз у нас нет размеченного индекса просодического стиля, то попробуем извлечь просодические признаки из самого аудио. Для этого возьмем мел-спектрограмму и пропустим её через небольшой Reference Encoder, состоящий из сверток и рекуррентной GRU. В результате мы получим сжатое представление спектра в виде вектора фиксированной размерности. Этот вектор можно использовать наряду с выходом текстового энкодера и id спикера для генерации таргета – мел-спектрограммы. Но есть проблема: мы кодируем мел-спектрограмму и используем ее для предсказания той же самой мел-спектрограммы. И хотя предложенный энкодер сжимает данные в вектор небольшого размера, он может содержать достаточно информации об исходной мел-спектрограмме и слишком сильно влиять на предсказание. Чтобы минимизировать утечку информации, был предложен апгрейд этой идеи – Global Style Tokens (GST).

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

https://arxiv.org/abs/1803.09017
https://arxiv.org/abs/1803.09017

Во время инференеса используют аудио из датасета в качестве референса - то есть аудио, с которого будут взяты коэффициенты GST для генерации. Перебирая разные примеры, можно добиться желаемого звучания.

Добавление в модель сжатого представления референсного мел-спектра для переноса стиля на синтезируемый – довольно распространенный прием. При этом метод, на котором строится это представление, может варьироваться. Вместо стилевых токенов мел-спектр можно подать на вход вариационного автоэнкодера и в качестве референса взять сэмпл из латентного распределения. Чуть более сложная архитектура описана в работе от Google, где для построения скрытого пространства векторов используют не одно, а смесь гауссовских распределений.

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

При этом если использовать референсное аудио от другого диктора, можно добиться изменения манеры речи.

Предсказание питча, энергии и длительности с FastSpeech2

При использовании GST мы полагали, что модель сама извлечет из спектра значимую и не относящуюся к тексту информацию, и мы получим вектор в некотором пространстве и будем считать, что он кодирует просодию. Вместо этого авторы FastSpeech2 предложили упростить задачу модели, выделив просодические фичи явно. Например, питч – величину, соответствующую фундаментальной частоте сигнала F0 или, проще говоря, мелодике речи, то есть «ноте, на которой звучит голос».

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

Таким образом, в модель встраивается три дополнительных предиктора. Они предсказывают просодические признаки и обучаются минимизировать L2 лосс между предсказанием и таргетом. При этом сначала мы получаем длительности, по ним размножаем выход текстового энкодера до размерности спектра и затем по этому тензору предсказываем энергию и питч в time domain-e. Предсказанные фичи конкатенируются и вместе с выходом текстового энкодера подаются на вход декодеру, который восстанавливает итоговую мел-спектрограмму.

https://arxiv.org/abs/2006.04558
https://arxiv.org/abs/2006.04558

Управляя предсказанными значениями просодических фичей можно явно влиять на синтез. Таким образом, можно ускорить или замедлить речь, выделить слово, повысив на нем громкость и питч и можно даже, подав соответствующие значения длительности и питча, заставить модель петь! Правда, петь она будет плохо, потому что этому ее не учили :)

Экспрессивный синтез с FlowTron

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

Принципиально иной подход, отличающийся от стандартной реализации случайности в предсказании модели типа дропаута и даже сэмплирования в GMVAE, предложен в потоковых моделях. Например, в модели Flowtron от NVIDIA спектр преобразуется последовательностью обратимых преобразований в вектор из смеси нормальных распределений. Чтобы последнее было верно, Flowtron обучается максимизировать правдоподобие данных. Во время инференса сэмплируется матрица случайных векторов из нормального распределения. После того как случайная матрица проходит через обратные преобразования, обусловленные на текст и спикера, мы получаем предсказанный спектр. Сэмплируя разные матрицы можно получить разные спектры. При этом уменьшая или увеличивая дисперсию, можно эффективно управлять степенью вариативностью синтеза. 

На рисунке приведены сравнения контуров питча для синтезированных спектрограм моделью Flowtron и Tacotron2 с активным dropout в блоке PreNet. На графике видно, насколько более разнообразны интонационные контуры потоковой модели – присутствуют пики гладкого повышения питча в разных частях предложения.

https://arxiv.org/abs/2005.05957
https://arxiv.org/abs/2005.05957

Как известно, оптимизация L2-лосса эквивалентна максимизации правдоподобия для нормального распределения. Оно является унимодальным и потому его использование не совсем корректно для мультимодальных распределений, как в нашем случае. А оптимизация правдоподобия, представленная в Flowtron является привлекательной альтернативой L2-лоссу.

Однако на этапе инференса подобные модели часто выдают нестабильный результат из-за наличия случайной составляющей в процессе генерации. Синтезируемая речь может звучать неестественно при увеличении значения дисперсии случайного шума – отправной точки генерации.

Существуют и другие потоковые модели, такие как GlowTTS, RadTTS и ViTS, также предоставляющие возможность управления вариативностью интонации.

Заключение

В этой статье я изложила основные и хорошо известные способы управления просодией моделях Text-to-Speech. Если они и так вам известны и вы хотите узнать о чем-то принципиально новом, приходите слушать наш доклад на конференцию Conversations 2 декабря в Москве или онлайн. Там мы расскажем о наших новых разработках и поделимся подробностями о том, как устроена наша модель синтеза речи. Также вы сможете услышать доклады спикеров из Yandex Cloud, DeepPavlov, Сбера и других топовых компаний. Буду рада ответить на ваши вопросы лично или здесь в комментариях!

Tags:
Hubs:
Total votes 21: ↑19 and ↓2+17
Comments16

Articles

Information

Website
just-ai.com
Registered
Founded
2011
Employees
101–200 employees
Location
Россия