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