Недавно мне пригодился мой open-source проект Wunjo AI для создания собственного дипфейка - синтеза английской речи с минимальным акцентом. В этой статье я хочу рассказать, как мне удалось добиться этого, зачем я это сделал, и продемонстрировать полученный результат. Вы узнаете, как дипфейки могут обогатить процесс создания контента. Позже вы сможете для себя решить, могут ли дипфейки и синтез речи оказаться полезными для вас.

В чем суть проблемы?

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

Проблема 1: Речь и звук

При записи моего голоса возникла проблема низкого качества звука и заметного акцента, что делало речь трудно разборчивой. Хотя звук можно улучшить с помощью обработки, вряд ли можно исправить неправильное произношение слов (однако есть идея и об этом ниже). Первым шагом стал синтез речи из текста с использованием голосового синтезатора, которого я обучил. Если вы заинтересованы в создании собственной модели на основе вашего голоса или другого голоса на английском без акцента, для вас подойдет видеоинструкция. Я интегрировал свою модель в Wunjo AI и потратил около 15-20 минут, чтобы превратить весь текст презентации в синтезированную речь. Обучение модели заняло у меня около суток, но так как она уже была обучена заранее, мне не потребовалось повторять этот процесс. Запись и обработка собственного голоса заняли бы гораздо больше времени, чем синтез речи.

Результаты сравнения

Сравнив мой голос и синтезированную речь, разница ощущается как небо и земля. Сейчас я считаю, что стоило бы клонировать мой голос, используя небольшой фрагмент обработанной речи. Таким образом, звук речи сохранял бы мой голос без акцента, а encoder, synthesizer и vocoder для английского в открытом доступе. Мне так понравилась эта мысль, что я добавил клонирование голоса на этих выходных в Wunjo AI. Вы можете ожидать его в версии 1.5 или уже использовать ветку v1.5 на GitHub.

Проблема 2: Видео с человеком

Я решил создать видео с говорящим человеком в кадре, так как мне больше нравятся такие видеопрезентации, где можно видеть говорящего человека, а не только слайды с текстом. Создание качественного видео с участием человека требует вложения усилий: правильное освещение, подходящая атмосфера и подходящее лицо, которое умеет держаться в кадре. К сожалению, у меня не было ничего из этого. Я решил не снимать себя на видео (это бы выглядило примерно как здесь на 37 секунде, ну как-то не очень), а вместо этого поискать подходящее на YouTube, например видео обозревателя Chris Tomshack с формой лица, схожей с моей, так как несоответствие формы лица и размера будет заметно на дипфейке.

Дипфейк в котором есть несоответствие формы лица и размера
Дипфейк в котором есть несоответствие формы лица и размера

Обработка видео

Так как в качестве основы я искал видео на YouTube с запросом видеообзорах технологических новинок, говорящие люди в кадре часто появлялись меньше времени, чем объект обзора. Я выделил самые длинные сегменты видео с человеком, сделал reverse для видео и соединил с исходником, чтобы сделать loop. Затем я синхронизировал движения губ с аудиоречью с помощью Wunjo AI для улучшения лица, так как речь длилась дольше самого отрезка, видео просто было в loop и резкого перехода кадра не было заметно. Это позволило добиться более качественного результата.

Дипфейк движения губ
Дипфейк движения губ

Исправление дефектов

Иногда возникали проблемы с неправильным положением губ и, например, двойным подбородком в месте среза. Я разделил видео на кадры с помощью ffmpeg и внес исправления в дефектные кадры с помощью ретуши. Этот этап потребовал немного времени, примерно ручным способом доработал 40-60 кадров.

Замена лица на видео

Свой дипфейк я создал сделав лишь одну фотографию своего лица. Я использовал свою фотографию снятую на фронтальную камеру и в Wunjo AI 1.5 наложил ее на синтезированное видео, затем улучшил качество лица до HD. Результат вышел хорошим для меня, если не знать, что это дипфек, тогда сложно это заметить.

Дипфейк замены лица по фото
Дипфейк замены лица по фото

Что имеем?

Итоговое видео с речью и дипфейком мне понадобилось около 2 часов + 30 минут для добавления слайдов и видео говорящего человека. При желании, для более длинного видео, можно было бы добавить дипфейк эмоций в некоторые сегменты речи.

Надеюсь, поход в этой статье вы найдете полезным для себя, как использовать дипфейк и синтез речи для создания контента, презентаций и работы. Я планирую создать видеоурок о работе со всеми дипфейками в приложении на своем YouTube-канале после выпуска версии 1.5, где будет доступно все из выше перечисленных (кроме ручной ретуши). До новых встреч!

Комментарии (19)


  1. Wladradchenko Автор
    29.08.2023 15:00

    Написал документацию об open-source проекте. Возможно вы найдете его полезным для. Со временем она будет пополняться, в том числе и видео по установке, настройки и работы с фичами.


  1. csharpreader
    29.08.2023 15:00
    +1

    Так а где само видео? На канале его нет.


    1. Wladradchenko Автор
      29.08.2023 15:00
      +1

      Привет. Видео опубликую в комментарии позже, так как там упоминается продукт, и я не могу от себя без разрешения владельца продукта его опубликовать. Если оно будет, опубликую видео на презентацию научной статьи, если нет, тогда опубликую видео сравнение, что было и что стало. Предположительно завтра.


    1. Wladradchenko Автор
      29.08.2023 15:00

      Видео сравнение, что было до, и что стало после применения дипфейка https://youtube.com/shorts/rxfu4k5mKE4?feature=share


      1. csharpreader
        29.08.2023 15:00

        Какой-то не совсем удачный кусочек – и там, и там рассинхрон по звуку.


        1. Wladradchenko Автор
          29.08.2023 15:00

          Похоже это произошло после экспорта из DJI Mimo, где я быстренько видео монтировал на телефоне для примера к статье. Звук немного сдвинулся относительно видео. В принципе ладно, визуальный результат и изменение движения губ видно.

          Интересно станет ли визуально лучше этот дипфейк, если на лицо добавить немного шумов и наложить дипфейк эмоций. Надо бы проверить))


        1. Wladradchenko Автор
          29.08.2023 15:00

          Вот, если интересно будет посмотреть на исходники, там уже не может быть задержки вызванной приложением, там уже как выходит из программы результат.


  1. aamonster
    29.08.2023 15:00
    +6

    Т.е. получается, что у вас из нескольких килобайт текста создаётся видео? Ох... Мне б наоборот, чтобы все эти видеоролики обратно в текст сматывать, не тратить же часы на их просмотр?


    1. Wladradchenko Автор
      29.08.2023 15:00
      +1

      В обновлении 1.5, я уже добавил речь в текст в приложении, чтобы пользователь мог (а) произносить текст для синтеза, а он вводился в окно для ввода текста и (б) распознавание текста из аудио файла. Но это работает на решение от Google и далеко не идеально распознает.

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


      1. aamonster
        29.08.2023 15:00

        Я, похоже, не смог донести мысль

        Я один из тех (нас таких на Хабре много), кто предпочитает там, где это возможно (т.е. почти всегда) получать текстовое представление, а не видео. Меньше времени тратить, меньше визуального мусора разглядывать. Поэтому вашу задачку (пусть она и интересна технически) склонен воспринимать как что-то в лучшем случае бесполезное, а в худшем – вредное.

        А вот обратная задача (из видео получить полностью заменяющий его текст, или презентацию с текстом и картинками, в худшем случае с небольшими видеовставками) кажется очень интересной и полезной. Т.е. сделать из чего-то, что требует для восприятия час – нечто на 10 минут. Автоматическое конспектирование лекций, если вам будет угодно, а не разворачивание конспекта в прочитанную роботом лекцию.

        Задача, очевидно, сложнее, чем просто распознавание речи. Не уверен, что вообще можно её решить без задействования человека для разметки "вот это надо показать, а тут и текста хватит", но если сделать хоть какое-то приближение + удобный инструмент редактирования – уже круто.


        1. vmkazakoff
          29.08.2023 15:00
          +6

          Для вашей задачи есть whisper, разворачивается на своем компе/сервере очень легко, есть чистая версия (консольная), а есть с GUI на любой вкус и цвет. Я молчу что для всяких ютубов полно приложений которые не только распознают, но и саммари сделают.

          Тут же решали другую задачу, и она совсем не бесполезная и тем более не вредная.

          Смотрите. Если вы знакомы с кулинарией и в целом умеете готовить, то вам для того чтобы узнать как готовить определенное блюдо надо максимум ингредиенты и последовательность увидеть в общих чертах. Но если вы ни разу не готовили ничего, сложнее бутерброда, то для приготовления борща или селёдки под шубой вам будет нужно как минимум фото процесса, желательно много.

          С уроками по другим темам то же самое - если вы уже знаете питон/джаву/... и хотите просто больше деталей или какой-то конкретной инфы - вам нужен текст. Если же вы вообще не писали раньше ни на каком языке и не работали в консоли, то даже для установки окружения текста будет мало, а со скринами страница превратится в адскую простыню. В итоге для объяснения основ удобнее видео со слайдами и голосом, для профи - тест и минимум картинок типа схем, для промежуточного состояния - текст со всеми основными скринами.

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

          Какие бонусы вижу сходу:

          • можно исключить мелкие проблемы с речью типа заикания при волнении

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

          • минус все проблемы с волнением, мимикой, взглядом

          • долой головная боль с организацией приличного фона (как визуального, так и звукового) в домашних условиях

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

          • идеальный звук надо получить один раз, а не париться с микрофоном за несколько тысяч рублей и эхоподавлением ака "одеяло на стене"

          • можно отретушировать фото и не париться про прыщи и немытые волосы

          • очень удобно делать монтаж - если стало понятно что в уроке что-то забыли, то просто генерим ещё кусочек и вставляем - в жизни так не получится, даже в студии на следующий день без профи стилистов и визажистов актеры бы не смогли повторить образ, а дома через неделю точно изменится и фон, и свет, и звук, и одежда, и прическа, и все на свете... я помню как снимал урок в один день и только на монтаже заметил как свет солнца из окна прыгает в моменты где мы вырезали куски неудачные (

            Так что решение весьма и весьма полезнее, просто не для вас и ваших задач.


          1. aamonster
            29.08.2023 15:00

            Whisper, как я понимаю, это не вся задача, а её часть. Получить текст из речи.

            Остаётся ещё куча нетривиального – как минимум, какие кадры надо сохранить, потому что без них чистый текст непонятен.

            Так что решение весьма и весьма полезнее, просто не для вас и ваших задач.

            Ну да, как-то так. Поэтому я и не критикую этот продукт, а говорю о нужности противоположного.


        1. SUNsung
          29.08.2023 15:00
          +2

          Я такой же любитель читать, но прочитал с интересом. Ведь статья натолкнула меня на мысль обучить модель и отвечать за меня на всех созвонах. Четко, внятно, на любом нужном языке. От меня только по клавишам стучать требуется)


          1. holodoz
            29.08.2023 15:00
            +1

            Зачем стучать по клавишам, когда можно дообучить llm какую-нибудь. А в конце созвона пусть саммари на пару абзацев пришлет. Эх, если бы я мог на irl совещаниях такое использовать


          1. aamonster
            29.08.2023 15:00
            +1

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


  1. Aspos
    29.08.2023 15:00
    +1

    Uncanny valley.


  1. vinodimus
    29.08.2023 15:00

    Круто!


  1. TimID
    29.08.2023 15:00
    +1

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


  1. Wladradchenko Автор
    29.08.2023 15:00

    А если вам интересно увидеть полностью результат, либо вам интересно послушать об исследовании способов распознования трафика нейронными сетями. Вот это самое видео для которого создавался дипфейк. Голос синтезирован нейронной сетью.


  1. Wladradchenko Автор
    29.08.2023 15:00

    Написал документацию об open-source проекте. Возможно вы найдете его полезным для. Со временем она будет пополняться, в том числе и видео по установке, настройки и работы с фичами.