Идея этого эксперимента возникла во время изучения возможностей сервиса HeyGen. Казалось, что задумка проста и гениальна. Мне, как любителю истории, очень хотелось узнать ответы на целый ряд вопросов непосредственно из уст Императора. Но, забегая вперед, скажу, что трудности возникли, причем в очень неожиданном месте - пришлось не раз применять смекалку, чтобы их преодолеть.
Для создания исторически обоснованного диалога были собраны 54 тома сочинений Ленина, которые были загружены в специальный модуль системы ChatGpt для обработки больших массивов данных. Следом за ними сервису были скормлены дневники Николая II и сборники его речей. Эти материалы были в дореволюционной орфографии, но после оцифровки проблем с их обработкой у нейросети не возникло.
![Оригинальный отрывок из сборника речей императора Оригинальный отрывок из сборника речей императора](https://habrastorage.org/getpro/habr/upload_files/f28/256/e33/f28256e335da769fc5891cba089d422b.png)
На основе исходных данных нейросеть по моему запросу попыталась воссоздать лингвистического двойника со всеми нюансами личности Ленина, и в манере его речей и записей составила список вопросов Николаю. После серии промптов удалось даже повторить нюансы его произношения, ведь известно что Ленин не выговаривал некоторые буквы. Затем система воссоздала личность Императора.
![Генерация и создание слепка голоса Генерация и создание слепка голоса](https://habrastorage.org/getpro/habr/upload_files/457/e83/23c/457e8323ce1cc281f1332ac2b24af63c.png)
Для воссоздания голоса использовалась система ElevenLabs. Туда я загрузил две сохранившиеся оригинальные аудиозаписи - речь императора на французском языке, а также речь на параде. Удивительно, но несмотря на плохое качество исходников, после загрузки старых записей удалось получить годные для дальнейшей работы слепки голоса. Подобная работа была проделана и с записями речей вождя революции.
После обработки, эти голоса через API можно задействовать в сторонних AI-сервисах. Единственная проверка - пришлось галочкой подтвердить, что данные голоса принадлежат именно мне (зуб даю!).
Для визуализации диалога сперва планировал применять HeyGen, но сразу возник ряд трудностей. Во-первых, создатели сервиса добавили умную проверку, где нужно с веб-камерой доказать, что это ты.
![Проверка личности Проверка личности](https://habrastorage.org/getpro/habr/upload_files/ba3/7f0/3af/ba37f03aff72514c04ee67c21d7684bf.png)
Без данной проверки разрешено создавать только видеоряд, где статичная фотография шевелит губами. Но даже с этим была сложность: оказалось, что при загрузке фотографий Heygen хорошо распознает знаменитостей - и не позволяет добавлять фото Ленина и Николая.
К слову, сейчас такая проверка есть и в сервисах генерации изображений, в том числе отечественных. Она не позволяет генерировать фотографии знаменитости почти везде, от Шедеврума до Dall-e - за исключением Кандинского от Сбера, который рисует настолько непохожих на исходный запрос людей, что подобная проверка там бесполезна.
После ряда настойчивых попыток удалось достичь определенного успеха - прокатила загрузка состаренного императора, а также редкая фотография Ленина.
![Так мог бы выглядеть Император, если бы дожил до старости. Автор изображения неизвестен. Так мог бы выглядеть Император, если бы дожил до старости. Автор изображения неизвестен.](https://habrastorage.org/getpro/habr/upload_files/3f8/d8f/75d/3f8d8f75d6938a3e12e4f94c4ef530b2.png)
Но результат генерации разочаровал. Губы шевелились на статичной фотографии, и это, мягко говоря не тот результат, который хотелось получить - как в баянистых роликах про надоедливый апельсин на Ютубе.
![Ну и губы Ну и губы](https://habrastorage.org/getpro/habr/upload_files/eb9/e0e/a26/eb9e0ea2678fb43766868a7ac0014d02.gif)
Пришлось идти другим путем. Попробовал взять фрагменты оригинальных роликов и заставить Н2 и Ленина говорить текст. Но оригинальные видео были в очень плохом качестве, и даже инструменты по типу CodeFormer RealEsrGan не смогли исправить ситуацию:
![Пример работы CodeFormer Пример работы CodeFormer](https://habrastorage.org/getpro/habr/upload_files/183/82e/34a/18382e34a8ad21597bc535fa47269f4f.png)
Хотя в описании они дают потрясающие результаты.
![Пример работы из документации одного из сервисов улучшения изображений Пример работы из документации одного из сервисов улучшения изображений](https://habrastorage.org/getpro/habr/upload_files/a04/608/26f/a0460826f57b018e9e77426e2fe4525b.png)
Поэтому пришлось мыслить творчески. Я взял за основу хорошие фрагменты из фильмов и заменил лица, используя процедуру FaceSwap через утилиту Roop, после чего наложил звуковую дорожку из IIlevenlabs и анимировал движения губ с помощью скрипта Wav2Lip.
Фильмов про Николая Второго не так много, до 1960х годов его показ был под строжайшим запретом, но все же нашлась кинокартина “Пролог”, которую и взяли за основу. С Лениным же проблем не возникло.
![](https://habrastorage.org/getpro/habr/upload_files/174/9a1/5ab/1749a15abf3519261cfd3b5ad73a60af.png)
Был вырезан подходящий фрагмент, затем в дело пошли инструменты Roop и Wav2Lip. Удобно, что гугл предоставляет условно-бесплатную среду Colab, позволяющую запускать разные скрипты - таким образом процедуры преобразования видео можно и делать на компьютерах со слабыми видеокартами.
![Запуск Wav2Lip в GoogleColab Запуск Wav2Lip в GoogleColab](https://habrastorage.org/getpro/habr/upload_files/7a7/de3/2ad/7a7de32ad234a460ef4e55112eead0ed.png)
Для лучшего результата было сделано несколько прогонов, получилась такая схема:
FaceSwap (замена лиц на видео) -> Wav2Lip (озвучка и шевеление губ) -> Faceswap (улучшение результата).
В начале казалось, что на весь эксперимент уйдет пара часов - но ушло гораздо больше времени. В ходе данной работы я убедился, что эпоха Дикого Запада в нейросетях проходит - крупные сервисы уже достаточно жестко регулируются, и там довольно много проверок, хотя на локальных компьютерах пока еще можно запускать какие угодно скрипты. Плюс некоторое пространство для экспериментов предоставляют такие площадки как Goggle Colab, Runpod.io и их аналоги.
Если было интересно, буду рад вашей подписке на телеграм-канал про нейросети от создателя этого ролика.
Комментарии (20)
Sly_tom_cat
09.06.2024 13:36+1По смыслу получился какой-то допрос с пристрастием. Однако это получилось довольно интересно и довольно связно. Было бы интересно и других видных деятелей там воспроизвести. Разговор старого Брежнева со Сталиным прям так и просится :)
PereslavlFoto
09.06.2024 13:36+1Или хотя бы воспроизвести знаменитую речь генералиссимуса Сталина, в которой он требует перекрасить Мавзолей в белый цвет и расстрелять всё хрущёвское Политбюро.
Volodichev
09.06.2024 13:36+2Больше похоже на пустопорожнее сотрясание воздуха в политических пабликах.
И да, реальный разговор Николая и Ильича был бы похож на допрос. Всё таки Ильич - юрист, и ставил целью осуждение Николая. Жаль, что Николай не дожил до того суда.
PikPok77
Очень интересно и хорошая актуальная работа. Поздравляю. Так не хватает ещё и Сталина.
SanSeich_78
Сталин - он как Google: ты ему слово - он тебе ссылку.
MAXH0
Главное, чтобы Гугл не стал как Сталин.
SanSeich_78
Есть в лингвистике термин, означающий невозможность убрать/заменить мат, из-за изменения смысла всей фразы //термин, конечно же, я не помню ))
Так вот: Нам, татарам, всё равно: Что наступать - бежать, что отступать - бежать.
Мне как-то всё равно, кто меня нагнёт: товарищ из яндекса или господин из гугла. Пока чаще нагибал яндекс и я максимально, ручками, выпиливаю его из своего окружения. А если и использую, то для незначительных дел. Например, регистрация на форумах
MAXH0
Тут просто две палочки Твикс. А альтернативного, но работоспособного поиска не контролируемого крупными корпорациями - НЕТ. Эффект размера. В результате и там и там цензура.
garwall
Googlag
MAXH0
О!!! Прям стоит патентовать слово, насколько оно точно отражает сущность цифрового концлагеря.