Как из четырёх минут речи мы воссоздали голос молодого Леонида Куравлёва

Всем привет! Меня зовут Олег Петров, я руковожу группой R&D в группе компаний ЦРТ (и это тоже Сбер!). Мы давно работаем не только над распознаванием речи, но и умеем синтезировать голоса. Недавно к нам пришли коллеги с предложением поучаствовать в развлекательной истории — «озвучить» героя Леонида Куравлёва в новом ролике.

Лицо Куравлева для него было воссоздано по кадрам из фильма «Иван Васильевич меняет профессию» и наложено на лицо другого актера с помощью технологии Deepfake. Чтобы мы смогли не только увидеть, но и услышать в 2020 году Жоржа Милославского, мы решили помочь коллегам. Ведь с годами голос у всех нас меняется и даже если бы Леонид Вячеславович озвучил героя, эффект был бы не тот.

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

«Иван Васильевич меняет профессию» вышел в прокат в 1973 году. В это десятилетие Леонид Куравлёв успел сняться в паре десятков полнометражных фильмов. Тем не менее это никак не упрощало нам задачу:

  • У персонажей могло быть мало длинных монологов
  • В художественных фильмах на речь накладываются акустические эффекты, фоновая музыка и пр.
  • Сам по себе звук старых фильмов 70-х годов, пусть даже оцифрованных, содержит дефекты
  • Актер всегда подстраивает манеру речи под персонажа, отыгрывает различные эмоции, а было необходимо повторить манеру речи именно персонажа Жоржа Милославского.

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

Сбор данных для обучения TTS

TTS (Text-to-speech) — это технология перевода печатного текста в звучащую речь. В настоящее время она реализуется, как правило, на стеке методов глубинного обучения, что позволяет добиться высокого качества звучания синтезированного голоса по сравнению с другими подходами. Например, используя возможности суперкомпьютера «Кристофари» модель для этого можно обучить всего за пару часов.

Основным источником речевого материала послужили фрагменты аудио из кинофильмов с участием Леонида Куравлева — «Глубокие родственники», «Не может быть», «Иван Васильевич меняет профессию», «Суета сует». Далеко не все эпизоды появления героя фильма являются подходящими для цели обучения системы TTS. Необходимо минимизировать наличие фоновой музыки и шумов, речи других актёров, различных неречевых проявлений. После кропотливого поиска подходящих фрагментов у нас набралось от силы 7 минут речи, довольно экспрессивной и разнообразно звучащей в зависимости от характера персонажа, которого играл Леонид. Кроме того, в каждом фильме была своя акустическая картина, что также сильно влияет на восприятие и усложняет задачу.

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

Точное расположение фонем на записи не так важно для модели-синтезатора, если она содержит так называемый модуль внимания (Attention). Механизм внимания позволяет обучить модель самостоятельно различать фонемы, однако разметка по паузам куда более важна — во-первых, паузы могут сильно различаться по длине, и знание точной длины позволяет сохранить стабильность при обучении, а во-вторых, паузы часто являются индикаторами границ синтагм — самостоятельных структурных единиц речи — по которым часто можно провести границы независимых высказываний. Это позволяет разбить слишком длинные фразы на фразы покороче для более эффективного использования памяти GPU в процессе обучения, а также несколько увеличить набор данных путем перебора всех возможный вариантов разбиения.

Очистка данных

Хотя мы старались извлечь из фильмов как можно более чистые записи, но часть из них все равно сопровождалась посторонними звуками (шум города, звуки природы, шум воды и т.п.) или музыкой.

Для того, чтобы исправить это мы воспользовались двумя open-source проектами: моделью для улучшения качества речи, работающей непосредственно на сыром аудиосигнале, а также алгоритмом для разделения музыкальной композиции на партии: голос, барабаны, басы и остальное. Нам было необходимо получить чистые записи голоса диктора с максимальным качеством звука (для нашей системы TTS — 22050 Гц). Любые артефакты непременно просачиваются в нейронную модель голоса диктора, особенно когда речь идет о столь малой обучающей выборке. Благодаря перечисленным проектам удалось полностью отделить музыку от голоса без существенной потери качества примерно для половины собранных примеров.

В итоге, после всех манипуляций у нас осталось равно 4 минуты и 12 секунд чистой речи голоса Леонида Вячеславовича Куравлева. Стало понятно, что наша боевая архитектура TTS, которую, к слову, вы можете послушать в облаке), не подходит для такого случая. Однако, как нельзя кстати под рукой была относительно свежая необычная модель TTS от NVidia под названием Flowtron, основанная на методе обратных авторегрессионных потоков (Inverse Autoregressive Flow, IAF).

Главной особенностью модели Flowtron является то, что с её помощью можно синтезировать различные варианты произношения одного и того же текста, с большим разнообразием интонаций и стиля речи. Но это свойство — «палка о двух концах», так как генерируемые моделью примеры получаются далеко не всегда адекватными с точки зрения восприятия. Интонации могут меняться очень резко и неестественно, частота основного тона (высота голоса) может изменяться в широких пределах, порождая забавное, но не требуемое звучание. Чем больше исходных данных для обучения, тем естественнее и стабильнее получается генерировать речь. Но даже при малом количестве материала иногда получается синтезировать хорошие примеры. Их мы и решили получить.

Для начала нужно было уже имеющуюся модель, обученную на большом экспрессивном наборе данных, обучить говорить новым голосом. Если просто взять и «скормить» ей все 4 минуты 12 секунд данных то, в зависимости от параметра, регулирующего чувствительность обучения, модель либо сразу переобучится (будет говорить очень плохо), либо обучится очень-очень плохо (тоже говорить новым голосом не будет). И «ловить» оптимальное значение параметра можно долго и увлеченно. Хорошей практикой является замешивание новых данных со «старыми» в удобной пропорции (например, один к десяти). Тогда до начала процесса переобучения, новые данные успеют неплохо «усвоиться». Так и поступили, но сначала нарезали примеры по паузам с перекрытием, что легким движением пальцев по клавиатуре превращает 4 минуты речи в 23.

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

Тут нам на помощь приходят нормализующие потоки, на которых и построена сама модель. По сути, Flowtron обучается отображать акустические признаки речевого сигнала с учетом текста в точки из нормального распределения той же размерности, причем это отображение обратимое. Во время синтеза идет обратный процесс (поэтому потоки обратные и нормализующие). Таким образом можно взять запись, отобразить ее с помощью модели в конкретные точки, а из этих точек получить обратно эту же запись. Бесполезно? Не совсем! Можно эти точки аккуратно смешать с такими же из другой записи и тем самым частично перенести стиль последней. Можно к ним добавить немного шума и получить почти исходную запись, немного отличную от оригинала. Но если добавить много шума, то получится белиберда. Таким образом можно размножить исходный датасет, получив много похожих, но не совсем одинаковых примеров!

Однако полностью полагаться на порядочность модели в этом случае нельзя. Она может насинтезировать много всякого. Пришлось прослушать несколько тысяч таких примеров размноженного датасета и экспертно отобрать качественные. Такой подход можно назвать «модель с ушами». Он позволил из исходных 23 минут (с учетом нарезки по паузам) получить целый час обучающих данных.

Такая многостадийная схема обучения дала свои плоды. Хоть и большая часть синтезируемых с её помощью примеров уже звучала вполне достойно, все равно потребовался «brute force». К исходным точкам мы подмешали точки от примеров из «Ивана Васильевича». Где-то получился эффект старой пленки или большого помещения. Или фраза получилась голосом артиста, но не по-«милославски». Выбирать уже пришлось «всего» из пары тройки тысяч сэмплов. Получилось около трех сотен примеров требуемых коротких фраз с большим разнообразием стилей и интонаций, для чего мы, собственно, и отобрали семплы для проморолика Сбера.

Таким образом, проведя своеобразный недельный хакатон в нашей команде синтеза речи ЦРТ, мы смогли всего лишь по 4-м минутам речи воссоздать голос 50-ти летней давности. Технология, опробованная нами, открывает возможности по воссозданию давно утраченных голосов известных личностей по экстремально малому объему материала. То, что из всего этого получилось в итоге, вы можете посмотреть.

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

0
82 комментария
Написать комментарий...
work tasks

Вопрос про воссоздание советских вкладов уже был или еще не задавался? 

Ответить
Развернуть ветку
Влад Алексеев

ваши вклады в надёжных руках, не переживайте.

Ответить
Развернуть ветку
Alexey Kolesnikov

А чья была идея вообще сделать вора лицом банка?

Ответить
Развернуть ветку
Pasha Pakhar

плюсанул, но удивительное дело, на эмоциональном уровне зашло, и ностальгия и увидеть знакомого персонажа пересилило род деятельности этого персонажа.

Ответить
Развернуть ветку
1 комментарий
Иван Борода

Рыбак рыбака

Ответить
Развернуть ветку
Иван Козлов

То есть в фильме это не смущало, и вопрос решили задать только на второй итерации рекламы?

Ответить
Развернуть ветку
2 комментария
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Сергей Королевский

Кстати да. СБП так запрятано, что еле найдешь

Ответить
Развернуть ветку
18 комментариев
Юрий Б.

Приемная по другому адресу

Ответить
Развернуть ветку
Sergey Klinichev
Ситуацию спасло то, что тинькофф позволяет переводить на счета Сбербанка без комиссии

Это вчера, а сегодня вот:

Ответить
Развернуть ветку
indievision

Если не придираться, то ролик вышел крутым, особенно аудио ряд хорош. Прям не похоже на сбер )))

Ответить
Развернуть ветку
Антон Гранд

Герман Оскарович, хватит уже.

Ответить
Развернуть ветку
1 комментарий
Sem W

Вот скажите, мне одному кажется использовать вора (а он для меня ассоциируется только с вором) для рекламы банка странным?

Ответить
Развернуть ветку
Rabbit Rabbin

Дорогой Сбер. Вы каждый день будете на этом по кусочкам хайпиться?)
Ну ладно. Где наглядный материал для юных дипфейкеров? Вся статья о том, как 24 минут выжимали образцы голоса Куравлева, когда можно было просто взять и добавить к обучению как минимум ближайшие фильмы из его фильмографии))

Ответить
Развернуть ветку
Юрий Б.

1. В ближайших фильмах тот же персонаж? С таким же голосом и оборотами?
2. «Каждый день» - да этой рекламе второй день. Реклама (если отбросить смыслы, широко раскритикованные в соседней статье) - довольно яркая (хотя и прямолинейная). Есть про что рассказать. Это сайт про предпринимателей или маркетинг ведь, не все же про проблемы Озона в приемной читать.
3. Пиарится не самолично Сбер, тут немного смещены акценты.

Ответить
Развернуть ветку
2 комментария
Артем Смирнов

Так толсто, что даже тонко. Даже для сбера, который под другим именем спиzдил триллионы в 90х, а в 2020х хвастается триллионом, но уже прибыли, и не думает что-то там кому-то возвращать. Национализируйте уже эту зелёную полностью, смотреть противно. 

Ответить
Развернуть ветку
Стас Кукушкин

Потренировались на рекламе, теперь давайте серьёзным делом займитесь - Брюса Ли возвращайте на экраны, "Кулак ярости 2" снимайте.

А ещё Бодрова вертайте, "Брат 3" много людей ждут!! 1

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Николай Кузнецов

Скажите,а сколько образцов речи абонента нужно чтобы обмануть голосовую индентификацию Сбера?)

Ответить
Развернуть ветку
Дед Кукуй

Ролик клёвый, Жорж хорош. Но, статью могли бы и получше выверить. "Леонид Вячеславовича...", "все-равно", "Суета суёт", где-то ещё ляпы. 

Дипфейк-то чем делали? DFL?

Ответить
Развернуть ветку
Evgeny Sergeev

В профиль он просто ужасен. Монголоид без сходства.

Ответить
Развернуть ветку
Я МАК НАСТАВНИК

Надеюсь Куравлеву вы компенсировали его фейсэндвойсбрендинг?

Ответить
Развернуть ветку
Валентин Хирш

Мне кажется нужно ввести уголовную ответственность за рекламный дипфейк с хорошим артистами которые уже мертвы и не могут ответить. Фу Сбербанк фу таким быть

Ответить
Развернуть ветку
Иван Козлов

Как неловко-то... Он жив!

Ответить
Развернуть ветку
1 комментарий
Valerii Zakharov

Куравлев пока еще жив, не торопитесь хоронить человека

Ответить
Развернуть ветку
Alexey Zhivilov

Почему все без масок?

Ответить
Развернуть ветку
reutanton

А в чем проблема обучить ИИ голосу Куравлева? И почему только 4 минуты если у него было очень много разных ролей и "образцов" голоса соответственно очень много?

Ответить
Развернуть ветку
Mike Kosulin

Так 4 минуты и получилось из разных.

Ответить
Развернуть ветку
Никита Сухов

А пригласить самого Куравлева из уважения и вежливости влом оказалось?

Ответить
Развернуть ветку
Mike Kosulin

В посте же написано почему так.

Ответить
Развернуть ветку
7 комментариев
Александр Михайлов

Куравлев в курсе?

Ответить
Развернуть ветку
Saalo Sambuuca

Классная статья с точки зрения механики, но вот результат... Еще не зная предыстории, когда в первый раз увидел ролик, обратил внимание, насколько неестественно звучат фразы Милославского - теперь понимаю, что это из-за специфической акустики в советских фильмах, которая не вяжется с современной картинкой (видимо, в одном месте это настолько не сочеталось, что пришлось исказить голос эффектами). Практичней было бы привлечь обычного пародиста, но так, конечно, ЦРТ не отрекламируешь

Ответить
Развернуть ветку
Вячовскi

Кайфово что у сбера по-моему получается все, кроме банкинга непосредственно. Ну, приложение справедливости ради кайфовое.

Ответить
Развернуть ветку
P.G. P

Что то уже слишком много Сбера становится...

Ответить
Развернуть ветку
Кирилл Стенцов

ЦРТ, какие же вы все-таки долбае*ы.
У меня все.

Ответить
Развернуть ветку
Сергей Борисов

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

Ответить
Развернуть ветку
Николай Черных

А нельзя "гнусавый" голос из телефона в начале ролика тоже поправить? А зачем так было ломать звуковой ряд, где Милославский забивает мяч в кольцо, это же сложно воспринимать. А нельзя эту рожу вырезать целиком, которая "любимка"? А то блевать очень тянет.

Ответить
Развернуть ветку
Макс Фактор

Че сказал?!

Ответить
Развернуть ветку
3 комментария

Комментарий удален модератором

Развернуть ветку
Evgeny Sergeev

"Суета суЁт"? Однако...

Ответить
Развернуть ветку
Viacheslav B

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

Ответить
Развернуть ветку
Sergey Taraban

Не понял, он в ролике не говорит практически ничего кроме фразы из фильма? Тут же про голос статья? Где голос? 

Ответить
Развернуть ветку
Павел Ро

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

Ответить
Развернуть ветку
Maxim Kalinovich

Лицо выглядит не плохо, но голос не получился. 

Ответить
Развернуть ветку
Татьяна Новикова

Многая лета Леониду Вячеславовичу Куравлеву!

Ответить
Развернуть ветку
Влад Алексеев

Искусственный интеллект в телефоне какойто кривой сделали, который на вопросы отвечает. На 0:11 секунде его спрашивают "Где я?" а он про то какой год отвечает.
Это как если спросить "Сколько время?" а в ответ услышать "Вы на 195 километре Киевского шоссе".

Ответить
Развернуть ветку
Василь Васильев

Сбер недаром сделал ролик с вором Милославский, потому что сам Сбербанк - это такой всероссийский вор! Ведь они до сих пор не вернули людям вклады, украденные в 90-91 годах. Что скажете, Сбер?

Ответить
Развернуть ветку
Дживан Гаспарян

Безотносительно банка и его репутации, ролик - пушка! Один из самых высокотехнологичных на сегодняшний день, ИМХО.

Ответить
Развернуть ветку
Читать все 82 комментария
null