Как стать автором
Обновить

Эксперимент: создаем цифровых двойников Ленина и Николая II

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.9K

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

Для создания исторически обоснованного диалога были собраны 54 тома сочинений Ленина, которые были загружены в специальный модуль системы ChatGpt для обработки больших массивов данных. Следом за ними сервису были скормлены дневники Николая II и сборники его речей. Эти материалы были в дореволюционной орфографии, но после оцифровки проблем с их обработкой у нейросети не возникло.

Оригинальный отрывок из сборника речей императора
Оригинальный отрывок из сборника речей императора

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

Генерация и создание слепка голоса
Генерация и создание слепка голоса

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

После обработки, эти голоса через API можно задействовать в сторонних AI-сервисах. Единственная проверка - пришлось галочкой подтвердить, что данные голоса принадлежат именно мне (зуб даю!).

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

Проверка личности
Проверка личности

Без данной проверки разрешено создавать только видеоряд, где статичная фотография шевелит губами. Но даже с этим была сложность: оказалось, что при загрузке фотографий Heygen хорошо распознает знаменитостей - и не позволяет добавлять фото Ленина и Николая.

К слову, сейчас такая проверка есть и в сервисах генерации изображений, в том числе отечественных. Она не позволяет генерировать фотографии знаменитости почти везде, от Шедеврума до Dall-e - за исключением Кандинского от Сбера, который рисует настолько непохожих на исходный запрос людей, что подобная проверка там бесполезна.

После ряда настойчивых попыток удалось достичь определенного успеха - прокатила загрузка состаренного императора, а также редкая фотография Ленина.

Так мог бы выглядеть Император, если бы дожил до старости. Автор изображения неизвестен.
Так мог бы выглядеть Император, если бы дожил до старости. Автор изображения неизвестен.

Но результат генерации разочаровал. Губы шевелились на статичной фотографии, и это, мягко говоря не тот результат, который хотелось получить - как в баянистых роликах про надоедливый апельсин на Ютубе.

Ну и губы
Ну и губы

Пришлось идти другим путем. Попробовал взять фрагменты оригинальных роликов и заставить Н2 и Ленина говорить текст. Но оригинальные видео были в очень плохом качестве, и даже инструменты по типу CodeFormer RealEsrGan не смогли исправить ситуацию:

Пример работы CodeFormer
Пример работы CodeFormer

Хотя в описании они дают потрясающие результаты.

Пример работы из документации одного из сервисов улучшения изображений
Пример работы из документации одного из сервисов улучшения изображений

Поэтому пришлось мыслить творчески. Я взял за основу хорошие фрагменты из фильмов и заменил лица, используя процедуру FaceSwap через утилиту Roop, после чего наложил звуковую дорожку из IIlevenlabs и анимировал движения губ с помощью скрипта Wav2Lip.

Фильмов про Николая Второго не так много, до 1960х годов его показ был под строжайшим запретом, но все же нашлась кинокартина “Пролог”, которую и взяли за основу. С Лениным же проблем не возникло.

Был вырезан подходящий фрагмент, затем в дело пошли инструменты Roop и Wav2Lip. Удобно, что гугл предоставляет условно-бесплатную среду Colab, позволяющую запускать разные скрипты - таким образом процедуры преобразования видео можно и делать на компьютерах со слабыми видеокартами.

Запуск Wav2Lip в GoogleColab
Запуск Wav2Lip в GoogleColab

Для лучшего результата было сделано несколько прогонов, получилась такая схема:

FaceSwap (замена лиц на видео)  -> Wav2Lip (озвучка и шевеление губ)  -> Faceswap (улучшение результата). 

В начале казалось, что на весь эксперимент уйдет пара часов - но ушло гораздо больше времени. В ходе данной работы я убедился, что эпоха Дикого Запада в нейросетях проходит - крупные сервисы уже достаточно жестко регулируются, и там довольно много проверок, хотя на локальных компьютерах пока еще можно запускать какие угодно скрипты. Плюс некоторое пространство для экспериментов предоставляют такие площадки как Goggle Colab, Runpod.io и их аналоги.

Если было интересно, буду рад вашей подписке на телеграм-канал про нейросети от создателя этого ролика.

Теги:
Хабы:
+12
Комментарии21

Публикации

Истории

Работа

Data Scientist
83 вакансии

Ближайшие события