Эксперимент: создаем цифровых двойников Ленина и Николая II
Идея этого эксперимента возникла во время изучения возможностей сервиса HeyGen. Казалось, что задумка проста и гениальна. Мне, как любителю истории, очень хотелось узнать ответы на целый ряд вопросов непосредственно из уст Императора. Но, забегая вперед, скажу, что трудности возникли, причем в очень неожиданном месте — пришлось не раз применять смекалку, чтобы их преодолеть.
Для создания исторически обоснованного диалога были собраны 54 тома сочинений Ленина, которые были загружены в специальный модуль системы ChatGpt для обработки больших массивов данных. Следом за ними сервису были скормлены дневники Николая II и сборники его речей. Эти материалы были в дореволюционной орфографии, но после оцифровки проблем с их обработкой у нейросети не возникло.
Оригинальный отрывок из сборника речей императора
На основе исходных данных нейросеть по моему запросу попыталась воссоздать лингвистического двойника со всеми нюансами личности Ленина, и в манере его речей и записей составила список вопросов Николаю. После серии промптов удалось даже повторить нюансы его произношения, ведь известно что Ленин не выговаривал некоторые буквы. Затем система воссоздала личность Императора.
Генерация и создание слепка голоса
Для воссоздания голоса использовалась система ElevenLabs. Туда я загрузил две сохранившиеся оригинальные аудиозаписи — речь императора на французском языке, а также речь на параде. Удивительно, но несмотря на плохое качество исходников, после загрузки старых записей удалось получить годные для дальнейшей работы слепки голоса. Подобная работа была проделана и с записями речей вождя революции.
После обработки, эти голоса через API можно задействовать в сторонних AI-сервисах. Единственная проверка — пришлось галочкой подтвердить, что данные голоса принадлежат именно мне (зуб даю!).
Для визуализации диалога сперва планировал применять HeyGen, но сразу возник ряд трудностей. Во-первых, создатели сервиса добавили умную проверку, где нужно с веб-камерой доказать, что это ты.
Проверка личности
Без данной проверки разрешено создавать только видеоряд, где статичная фотография шевелит губами. Но даже с этим была сложность: оказалось, что при загрузке фотографий Heygen хорошо распознает знаменитостей — и не позволяет добавлять фото Ленина и Николая.
К слову, сейчас такая проверка есть и в сервисах генерации изображений, в том числе отечественных. Она не позволяет генерировать фотографии знаменитости почти везде, от Шедеврума до Dall-e — за исключением Кандинского от Сбера, который рисует настолько непохожих на исходный запрос людей, что подобная проверка там бесполезна.
После ряда настойчивых попыток удалось достичь определенного успеха — прокатила загрузка состаренного императора, а также редкая фотография Ленина.
Так мог бы выглядеть Император, если бы дожил до старости. Автор изображения неизвестен.
Но результат генерации разочаровал. Губы шевелились на статичной фотографии, и это, мягко говоря не тот результат, который хотелось получить — как в баянистых роликах про надоедливый апельсин на Ютубе.
Ну и губы
Пришлось идти другим путем. Попробовал взять фрагменты оригинальных роликов и заставить Н2 и Ленина говорить текст. Но оригинальные видео были в очень плохом качестве, и даже инструменты по типу CodeFormer RealEsrGan не смогли исправить ситуацию:
Пример работы CodeFormer
Хотя в описании они дают потрясающие результаты.
Пример работы из документации одного из сервисов улучшения изображений
Поэтому пришлось мыслить творчески. Я взял за основу хорошие фрагменты из фильмов и заменил лица, используя процедуру FaceSwap через утилиту Roop, после чего наложил звуковую дорожку из IIlevenlabs и анимировал движения губ с помощью скрипта Wav2Lip.
Фильмов про Николая Второго не так много, до 1960х годов его показ был под строжайшим запретом, но все же нашлась кинокартина «Пролог», которую и взяли за основу. С Лениным же проблем не возникло.
Был вырезан подходящий фрагмент, затем в дело пошли инструменты Roop и Wav2Lip. Удобно, что гугл предоставляет условно-бесплатную среду Colab, позволяющую запускать разные скрипты — таким образом процедуры преобразования видео можно и делать на компьютерах со слабыми видеокартами.
Запуск Wav2Lip в GoogleColab
Для лучшего результата было сделано несколько прогонов, получилась такая схема:
FaceSwap (замена лиц на видео) -> Wav2Lip (озвучка и шевеление губ) -> Faceswap (улучшение результата).
В начале казалось, что на весь эксперимент уйдет пара часов -, но ушло гораздо больше времени. В ходе данной работы я убедился, что эпоха Дикого Запада в нейросетях проходит — крупные сервисы уже достаточно жестко регулируются, и там довольно много проверок, хотя на локальных компьютерах пока еще можно запускать какие угодно скрипты. Плюс некоторое пространство для экспериментов предоставляют такие площадки как Goggle Colab, Runpod.io и их аналоги.
Если было интересно, буду рад вашей подписке на телеграм-канал про нейросети от создателя этого ролика.