Синтез речи с эмоциями

Мы Опубликовали Качественный, Простой, Доступный и Быстрый Синтез Речи

Вокруг темы синтеза речи сейчас много движения: на рынке есть огромное число тулкитов для синтеза, большое число закрытых коммерческих решений за АПИ (как на современных технологиях, так и на более старых, т.е. «говорилки») от условных GAFA компаний, большое количество американских стартапов, пытающихся сделать очередные аудио дипфейки (voice transfer).

Но мы не видели открытых решений, которые бы удовлетворяли одновременно следующим критериям:

  • Приемлемый уровень естественности речи;
  • Большая библиотека готовых голосов на разных языках;
  • Поддержка синтеза как в 16kHz так и в 8kHz из коробки;
  • Наличие своих собственных голосов у авторов решения, не нарушающих чужие права и лицензии;
  • Высокая скорость работы на «слабом» железе. Достаточная скорость работы на 1 потоке / ядре процессора;
  • Не требует GPU, команды ML инженеров или какой-либо дополнительной тренировки или для использования;
  • Минимализм и отсутствие зависимостей / использование в 1 строчку / не надо ничего собирать или чинить;
  • Позиционируется именно как готовое решение, а не очередной фреймворк / компиляция чужих скриптов / тулкитов для сбора плюсиков;
  • Решение никак не связано и не аффилировано с закрытыми экосистемами и продуктами Гугла / Сбера / Яндекса / вставить нужное;

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

Краткий Обзор Решений

Данная статья не ставит своей целью глубокий технический обзор всех доступных решений. Мы хотим просто обрисовать некий ландшафт из доступных вариантов с минимальной степенью готовности. Понятно, что мы не рассматриваем многочисленные тулкиты, а смотрим в первую очередь какие есть более-менее готовые решения с ненулевой библиотекой голосов и подобием поддержки / комьюнити:

Конкатенативные модели (появившиеся до DL бума). Из того, что хоть как-то поддерживается и живо и можно запустить «as-is» без археологических раскопок, я нашел только rhvoice (я глубоко не копал, но есть целые форумы, посвященные использованию голосов из Windows, но вряд ли это можно назвать поддерживаемым решением). На момент, когда я пользовался проектом ради интереса, он по сути был заброшен, но потом у него появился новый «хозяин». К плюсам такого рода решений можно отнести их скорость и нетребовательность к ресурсам (исключая ресурсы, чтобы заставить это работать). Очевидный и основной минус — звучит как говорилка. Менее очевидный минус — довольно тяжело оценить стоимость обладания. Качество звучания: 3+ по пятибалльной шкале;

DL-based модели в основном разделяют end-to-end TTS задачу на подзадачи: текст -> фичи и фичи -> речь (вокодинг). Практически повсеместно для первой подзадачи используется Tacotron2. Выделим следующие сочетания моделей в соответствии с их эффективностью и простотой использования:

Tacotron2 + WaveNet (оригинальный WaveNet принимал на вход лингвофичи, но для такотрона поменяли на более удобные мелспектрограммы). Основная проблема — очень медленный инференс ввиду авторегрессионности модели и необходимость запретительно большого количества ресурсов и времени. Качество звучания: 4+;

Tacotron2 + WaveRNN (тоже с переходом от лингвофичей к спектрограммам). Вокодер заметно быстрее предыдущего: при использовании всех хаков можно получить даже риалтайм синтез без GPU, правда естественность звука несколько просядет. Качество звучания: 3.5-4;

Читайте также:  Заполнить таблицу темперамент качества профессии

Tacotron2 + Parallel WaveNet. Упомянутый выше медленный вокодер был использован в качестве учителя для получения новой довольно быстрой параллельной модели вокодера: с ней стал возможен синтез быстрее риалтайма, но все еще на мощных GPU. Из недостатков — дистилляция требует качественную учительскую модель и соответствующую схему обучения. Качество звучания: 4+;

Tacotron2 + multi-band WaveRNN. Тоже развитие предыдущих идей, тоже распараллеливание в некотором смысле — здесь доступен синтез быстрее риалтайма уже на CPU. Однако, не слишком популярная работа, меньше имплементаций и поддержки, хотя некоторые подходы хороши и были успешно использованы в более поздних моделях; Качество звучания: 3.5-4+;

Tacotron2 + LPCNet. Интересная идея про сочетание DL и классических алгоритмов, что может дать буст по скорости до подходящего для продакшена уровня и на CPU, но требует вдумчивого допиливания для качественных результатов. Качество звучания: 3.5-4+;

Многочисленные решения на базе Tacotron2 + Waveglow от Nvidia как нынешний стандарт для задачи синтеза речи. Никто не пишет про свой «секретный соус» (например как 15.ai делает голос по 15 минутам и сколько там моделей в цепочке). Есть много имплементаций и репозиториев, которые «копируют» чужой код. Может звучать на cherry-picked примерах неотличимо от живых людей, но когда смотришь реальные модели от комьюнити, качество заметно варьируется, а детали улучшенных решений не раскрываются. Архитектурно к такотрону и его аналогам по скорости и цене обладания претензий нет, но Waveglow очень прожорлив к ресурсам как на тренировке, так и в продакшене, что делает его использование по сути нецелесообразным. Качество звучания: 3.5-4+;

Замена Tacotron2 => FastSpeech / FastSpeech 2 / FastPitch, то есть уход к более простой сетке (на базе forced-align от такотрона и миллион более хитрых и сложных вариантов). Из полезного дает контроль темпа речи и высоты голоса, что неплохо, вообще упрощает и делает более модульной конечную архитектуру. Немаловажно, что сетка перестает быть рекуррентной, что открывает просторы для оптимизаций по скорости. Качество звучания: 3.5-4+;

Оценки Качества и Примеры Аудио

Чтобы не вдаваться в дебри, мы поступили максимально просто: синтезировали аудио из валидационной выборки датасетов (

200 файлов на спикера), смешали с оригинальными аудио этой же выборки и дали группе из 24 людей для оценки качества звучания по пятибалльной шкале. Для 8kHz и 16kHz оценки собирали раздельно, градация оценок — [1, 2, 3, 4-, 4, 4+, 5-, 5] — с большей детализацией для более качественного звука.

Всего было поставлено 37,403 оценок. 12 человек сделали оценку полностью. Еще 12 людей успели проставить только от 10% до 75% оценок. Дальше для каждого спикера мы просто посчитали среднее (в скобочках приведено стандартное отклонение). Расчет среднего от медиан по каждому аудио завышает средние оценки на 0.1 — 0.2 балла, но не влияет на отношения. Показательны естественно скорее отношения средних баллов друг к другу. Дисперсия довольно высокая, но оценки пользователей отличались сильно и мы решили не выбрасывать никакие, т.к. оценки одного пользователя были консистентными друг с другом. По ряду соображений мы провели такую оценку только на своих уникальных голосах:

Спикер Оригинал Синтез Отношение Примеры
aidar_8khz 4.67 (.45) 4.52 (.55) 96.8% link
baya_8khz 4.52 (.57) 4.25 (.76) 94.0% link
kseniya_8khz 4.80 (.40) 4.54 (.60) 94.5% link
aidar_16khz 4.72 (.43) 4.53 (.55) 95.9% link
baya_16khz 4.59 (.55) 4.18 (.76) 91.1% link
kseniya_16khz 4.84 (.37) 4.54 (.59) 93.9% link

Мы просили людей в первую очередь оценивать естественность звучания речи (а не качество звука). Нас удивило, что по расспросам обычные люди на своих ежедневных девайсах не особо слышат разницу между 8 kHz и 16 kHz (что подтверждается оценками)! Самые низкие абсолютные оценки и самое низкое отношение у Байи. Самые высокие абсолютные оценки — у Ксении, а относительные — у Айдара. Тут важно отметить, что у Байи меньше поставлен голос, но поэтому он звучит более по-человечески за счет этого. У Байи также выше дисперсия оценок.

Ручной просмотр аудио с большими расхождениями показывает ошибки спикеров, ошибки такотрона, ошибочные паузы (тоже вследствие ошибок такотрона), имена собственные и сложные слова, которые вообще непонятно как читать. Естественно 75% таких расхождений в синтезе (а не оригинале) и частота дискретизации особо не влияет.

Если мы пытались дать численную оценку естественности, то еще хорошо бы оценить «неестественность» или «роботизированность» голоса. По идее ее можно оценивать, давая людям пару аудио на выбор и прося выбрать между ними. Но мы пошли дальше и по сути применили «двойной слепой тест». Мы в случайном порядке дали людям поставить оценки «одному и тому же аудио» 4 раза — оригинал и синтез с разной частотой дискретизации. Для участников исследования, разметивших весь датасет, получается такая таблица:

Сравнение Хуже Одинаково Лучше
16k против 8k, оригинал 957 4811 1512
16k против 8k, синтез 1668 4061 1551
Оригинал против синтеза, 8k 816 3697 2767
Оригинал против синтеза, 16k 674 3462 3144

Тут напрашивается несколько выводов:

  • В 66% случаев люди не слышат разницы между 8k и 16k;
  • В синтезе, 8k немного помогает скрыть ошибки;
  • Примерно в 60% случаев люди считают, что синтез не хуже оригнала по естественности;
  • Показательно, что два последних вывода не особо зависят от частоты дискретизации (8k имеет небольшое преимущество);

Можете оценить сами, как это звучит, как для наших уникальных голосов, так и для спикеров из внешних источников (больше аудио для каждого спикера можно синтезировать в colab.

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

Источник

Станиславский для робота. Как использовать возможности эмоционального синтеза

Поздравляем всех с наступающими праздниками! Этот пост будет не столько технический, сколько сказочно-новогодний. По традиции, накануне Нового года мы придумываем подарки для наших партнеров и клиентов. Но также нам хочется сделать что-то приятное для более широкой аудитории. Самый лучший подарок – сделанный своими руками. А дарить подарки приятнее всего детям. Поэтому в этом году мы придумали проект «Робот читает сказки детям». Мы взяли 12 новогодних сказок, озвучили их с помощью синтеза речи и разместили на нашем портале Voice Fabric.

Как известно, Центр речевых технологий создал несколько голосов TTS (text-to-speech), которые используются в системах IVR контакт-центров, системах голосового оповещения, мобильных приложениях — «Radio RSS» и «Читатель».

Как подбирались голоса

Всего в команде «голосовых роботов» на данный момент 5 женских и 2 мужских голоса. У каждого голоса свое имя. Преобладание женских голосов объясняется тем, что в информационных системах именно женские голоса комфортнее для восприятия пользователями.
Индивидуальность каждого голоса обеспечивается несколькими факторами. Во-первых, тембр голоса сохраняется при студийной записи диктора, голос которого используется в качестве прототипа. Во-вторых, мы сохраняем интонационные особенности голоса диктора, применяя статистически рассчитанную модель голоса, которая создается именно по студийным фонограммам этого диктора.В итоге, для озвучивания сказок мы отобрали 6 голосов: Владимира, Анну, Юлию, Марию, Викторию и Александра.Выбирая сказки, мы руководствовались, конечно, новогодне-рождественской темой, отсутствием копирайтов, а также личными предпочтениями. Коллекция получилась пестрая: это и известные русские народные сказки («Два Мороза», «Лисичка-сестричка», «Снегурочка»), и европейская классика братьев Гримм и Г.Х. Андерсена. Также мы нашли менее известные у нас, но очаровательные рождественские сказки «Портной из Глостера» и «Мышонок Твикли». И, конечно, не могли обойти стороной замечательную притчу О. Генри «Дары волхвов», которая не совсем сказка, но очень трогательная история о настоящей любви.

Как происходит процесс озвучивания

Для начала были распределены роли: в основном, персонажи мужского рода отдавались мужским голосам, женского — женским. Исключения были, но редкие. За автора текст читал и мужской и женский голоса. Просто для разнообразия впечатлений. Часть персонажей получали дополнительную характерную тембральную окраску. Например, мыши озвучивались не просто женским голосом, но и дополнительно изменялся тембр в сторону «мелких» мультяшных героев.
Обработка текста перед озвучиванием была минимальной. В текст вставлялись SSML-теги «voice», которые задавали имя голоса для текста и дополнительные теги для задания тембра. Иногда приходилось уточнять место ударения в однозначном слове: «Бегут, дорОгой тешатся».

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

Зато с выражением других эмоций оказалось сложнее. Выяснилось, что выражению негатива наши роботы не обучены. В сказке «Лисичка-сестричка» старуха ругает старика очень нежно и ласково.

/>Подошла баба к возу: ни воротника, ни рыбы, и начала ругать мужа:/>- Ах ты. Такой-сякой! Ты еще вздумал обманывать!

Да и голос звучит совсем не по-старчески, а мелодично и молодо. Вот тут можно воскликнуть в духе Станиславского «Не верю!»
Забавный момент в этой же сказке: «Лисичка прыгнула и попала головой в кадку с тЭстом». Сразу заметно, что у актрисы техническое образование, а от домоводства она далека.
Действительно, наш новогодний проект – это скорее творческая самодеятельность. Но наши синтезированные голоса используются и в настоящем театре. ЦРТ запускает проект в Александринском театре в Санкт-Петербурге. Разрабатывается синтезатор речи, способный читать художественный текст с сохранением речевых и эмоциональных особенностей голоса заданного актера.

Что получилось?

Мы запустили страничку со сказками на портале ЦРТ, посвященном технологиям синтеза речи Voice Fabric, а также анонсировали на страницах компании ВКонтакте и FaceBook.
Мы очень волновались по поводу того, как дети воспримут наш проект. Тем не менее, читателям наши сказки понравились. Более половины участников опроса ВКонтакте оценили проект положительно. Естественно, была и критика, что никакие роботы не могут заменить чтение книг родителями. И мы с этим полностью согласны! А вот познакомить в интересной игровой форме детей с миром высоких технологий очень даже могут! К тому же у этой технологии есть важная особенность — она позволяет читать сказки слабовидящим детям.
А вы что думаете?

P.S. Совсем недавно к команде наших роботов присоединилась англоговорящая коллега Carol, и мы обязательно придумаем что-нибудь интересное для ее творческого дебюта!

Источник

Читайте также:  Не чувствуешь вкуса еды причины
Оцените статью