Синтез эмоций. Модель вдох-выдох

Решил попробовать написать несколько статей о синтезе речи с поддержкой эмоций.

Все началось, когда я решил сделать простой MVP для улучшения разговорного иностранного языка на базе нейронок, онлайн‑репетитор. Так как сам испытываю сложности с его изучением.

Но в процессе реализации, я использовал разные модели. Начиная от Fastpitch и Tocatron2 до Bark от Suno. Когда я тестировал свой первый MVP, то при длительном прослушивании синтетического голоса у меня начинала болеть голоса и возникало раздражение. Это особенно сильно возникало, когда озвучка голоса не соответствовала контексту. Возникал аналог эффекта «зловещей долины», но только для звука.

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

Первым моим шагом, была разработка модели «вдоха‑выдоха». Идея заключалась в том, что 99,999% человек говорит исключительно на выдохе (это касается и животных).

Модель вдох-выдох
Модель вдох-выдох

Модель сводится к:

        # базовое значение тона эмоции при спокойном состоянии
        pitch = emotion_pitch[em_name]
        # дальше шел расчет громкости и тона
        # emotion_volume максимальная громоксть эмоции, 
        # считалось, что чем быстрее говорим, 
        # тем сильнее эмоция и значит громче говорим
        volume = emotion_volume[em_name] / Ta
        # дальше усиливали или ослабевали кромкость и тон, исходя из силы эмоции
        volume = (em_score - 0.5 + random.uniform(-0.1, 0.1)) * volume
        pitch = (em_score - 0.5 + random.uniform(-0.1, 0.1)) * pitch

Таким образом на громкость влияла скорость вдоха‑выдоха и сила эмоции.

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

Для примера, данная модель наложенная на Silero:

Итоговый вариант на базе данной модели.

PS: посмотрим. будет ли интерес к продолжению описания, как развивалась данная модель до моделей «легкие‑кислород», «сердце‑легкие», «речевой тракт».
Здесь можно посмотреть и решить, к чему я веду и стоит ли мне продолжать цикл статей.

Hidden text

Когда я делал модель, и там в комментариях примеры: https://t.me/greenruff/1741
Описание примера: https://t.me/greenruff/1792

@proxy3d
13.07.2024 23:36 UTC
Первоисточник

Комментарии

@shares-caisson
14.07.2024 08:48 UTC
+2

Интересно. Я не большой знаток TTS, но не помню чтобы кто-то моделировал потребление кислорода человеком для генерации речи :)

@whickma
14.07.2024 09:15 UTC
+2

Забавно, на картинке модели вдох-выдох, я подумал это же интонации предложения. ИИ меня убивает равным тоном, произнося предложения, содержащие разные эмоции.
Чего мне не хватает в ИИ озвучках так именно правильно расставленных ударений в словах и фразах. Чтобы не получалось построения вопроса в "кавказском" варианте: "Ты идёшь. Да?" Ровный утвердительный текст и отдельно вопрос. Например, как здесь описано https://zvukogram.com/node/vopros-akcent/
Если можно будет обучить модель за счет пауз и "силы выдоха" скорее всего ИИ озвучка станет намного качественней. Респект в начинании.

@iowathe3rd
14.07.2024 12:36 UTC
0

Супер интересный пост, моя специализация от ии далека, но с каждым таким постом подумываю уйти в mlops…

@A1exMa
04.04.2026 03:53 UTC
0

Автор шарит. Я не много понимаю в нейросетях, но зато очень хорошо понимаю влияние амбюшурной практики на голос и речь. И оно действительно огромно - если добавить этот пласт в параметры модели, голос будет звучать намноооого живее. Автору +1 в карму

@linabesson
07.06.2026 14:02 UTC
0

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