Идея этого эксперимента возникла во время изучения возможностей сервиса HeyGen. Казалось, что задумка проста и гениальна. Мне, как любителю истории, очень хотелось узнать ответы на целый ряд вопросов непосредственно из уст Императора. Но, забегая вперед, скажу, что трудности возникли, причем в очень неожиданном месте – пришлось не раз применять смекалку, чтобы их преодолеть.
Для создания исторически обоснованного диалога были собраны 54 тома сочинений Ленина, которые были загружены в специальный модуль системы ChatGpt для обработки больших массивов данных. Следом за ними сервису были скормлены дневники Николая II и сборники его речей. Эти материалы были в дореволюционной орфографии, но после оцифровки проблем с их обработкой у нейросети не возникло.
![Опыт: создание виртуальных копий Ленина и Николая II Опыт: создание виртуальных копий Ленина и Николая 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 и их аналоги.
Если было интересно, буду рад вашей подписке на телеграм-канал про нейросети от создателя этого ролика.