Привет всем! В этой статье я хочу поделиться с вами новостями об недавнем обновлении, рассказать какие появились новые функции в моем open-source проекте Wunjo AI v1.5. Изначально я начал разрабатывать это приложение для собственных нужд — чтобы синтезировать свой голос и создавать подкасты для еще одного моего open-source проекта под названием "Бесконечное нейронное радио". В этом проекте музыка создается с использованием нейронных сетей, и о нем я уже рассказывал на Хабре.

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

Со временем мои амбиции выросли, и я добавил в приложение возможность оживления фотографий и изображений, созданных с помощью Stable Diffusion. Это удивительно и увлекательно — наблюдать, как изображение начинает оживать, произносить речь, моргать и двигать головой. Это действительно захватывающее зрелище! Как это выглядело, смотрите в первом ролики о приложении.

Однако, со временем я понял, что анимация лица сама по себе стала скучной, да и работает не идеально. Поэтому я добавил функциональность, которая позволяет брать фрагменты видео с людьми и анимировать движение их губ в соответствии с аудиозаписью. Позднее я также начал экспериментировать с изменением лиц и окружения в Stable Diffusion, чтобы создавать собственные, уникальные эффекты. У меня уже есть планы, включить возможность изменения видео согласно текстовому запросу с использованием Stable Diffusion в Wunjo AI, но об этом чуть позже. А сейчас давайте рассмотрим, что у нас есть на данный момент:

Wunjo AI предоставляет вам широкий спектр возможностей нейронных сетей, включая синтез речи, клонирование голоса, создание дипфейковой анимации и удаление объектов из видео.

Что нового в последней версии?

Клонирование голоса: Теперь вы можете клонировать голоса из предоставленных аудиофайлов или записывать свой голос непосредственно в приложении в реальном времени. В данный момент доступны модели для клонирования голоса на английском и китайском языках, и в скором времени будет доступна модель для клонировании русского языка. Такой подход позволил мне сделать так, чтобы модели обученные работать с русским языком, могли работать и на английском, и китайском. Например, как меняется голос с датасета RusLan, если его клонировать.

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


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

Результат выглядит так:

Замена всех лиц
Замена всех лиц
Замена одного лица по фото
Замена одного лица по фото
Панель замены лица в приложении
Панель замены лица в приложении

В качестве target и source могут быть изображения, gif анимация или видео, вы сами выбираете, если необходимо нужный кадр.

Распознавание речи в реальном времени: Теперь вы можете произносить текст или загружать аудиофайлы с речью, и программа автоматически переведет речь в текст, что позволит вам создавать диалоги без необходимости набирать текст вручную.

Панель настройки для синтеза голоса
Панель настройки для синтеза голоса
После добавления аудио или записи голоса, его можно клонировать или распознать
После добавления аудио или записи голоса, его можно клонировать или распознать

Ретушь видео и удаление объектов: Я добавил возможность ретушировать видео с помощью нейронных сетей, чтобы улучшить качество дипфейков. Кроме того, вы можете использовать эту функцию для удаления объектов из видео.

Удаление машины с видео
Удаление машины с видео
Панель удаления объектов и ретуши
Панель удаления объектов и ретуши

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

Дипфейк эмоций: Я также начал исследовать возможность создания дипфейка для эмоций на основе wav2lip. Я обучил небольшую модель на датасете, в который разметил нейронной сетью распознающей эмоции, а затем применял это к обучению нужной мне модели. Результаты выглядят необычно, многогранно, но больше крипово, и следует продолжить исследования в этой области. Думаю, что интересно было бы работать с дипфейком эмоций в связке со Stable Diffusion. Вы также можете попробовать эту экспериментальную функцию сами и посмотреть, как это работает.

6 эмоций Кристен Стюарт
6 эмоций Кристен Стюарт
Панель анимации лица и губ
Панель анимации лица и губ

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

Панель обработки видео
Панель обработки видео

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

Панель отслеживания состояния приложения
Панель отслеживания состояния приложения

И так, обновление Wunjo v1.5 оказалось крупным, и принесло огромное количество полезных нововведений. Проект вы можете найти на GitHub или на его официальном сайте. Следует отметить, если вы захотите ускорить генерацию, вы можете использовать GPU, но для этого нужно будет установить драйвера CUDA, как это сделать я описал в документации. С переключением на GPU вам станет также доступна и фича для тренировки модели нейронной сети на вашем датасете, чтобы в последующем использовать ее в приложении. Там же вы найдете решение самых частых вопросов, которые возникали у пользователей версии 1.4.

Небольшой ролик на моем канале YouTube об обновлении:

Проект с открытым исходным кодом, бесплатен, без ограничений и цензур, локальный. И я верю, что Wunjo AI сможет помочь вам в создании вашего контента. До новых встреч на Хабр и на GitHub!

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


  1. Wladradchenko Автор
    08.09.2023 09:59
    +2

    Спасибо. Если вам нравится, вы можете поддержать проект. Например рассказав о нём или предложить свои идеи для обновления 1.6. В документации я добавил страницу об этом.


  1. offline268
    08.09.2023 09:59
    -3

    Когда ждать продажу квартиры или оформление кредита по фальшивой (сгененрированной) биометрии?


    1. Wladradchenko Автор
      08.09.2023 09:59
      +1

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


  1. kesn
    08.09.2023 09:59
    -2

    Имхо не хватает докер-образа какого-нибудь


    1. Wladradchenko Автор
      08.09.2023 09:59
      +4

      Почему не достаточно установщика? Для Windows .msi, для Ubuntu .deb., для MacOS сразу app. После установки в самом проекте уже будет питон и все необходимые библиотеки. Имхо для простого пользователя докер сложно (да вообще лучше и для не простого без доп шагов), простой пользователь хочет нажать по кнопке, и чтобы все установилось само. К сожалению, вот приходится отдельно ffmpeg ставить))


  1. shadrap
    08.09.2023 09:59

    Кажется можно попробовать снова, после 1.2 и 1.3 неразбериха с путями закончилась?


    1. Wladradchenko Автор
      08.09.2023 09:59
      +1

      Да. Баги для винды с путями, ошибки в скачивании NLTK были исправлены. Комфортнее пользоваться версией 1.5, так как там видно статус, что скачивается, сколько скачалось, куда, какой процент генерации и есть ли ошибки + появилось документация (в том числе там есть информация, как ручным способом скачать модели, если винда не скачивает) и видео по установке


  1. heos_spb
    08.09.2023 09:59

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


    1. Wladradchenko Автор
      08.09.2023 09:59

      Привет. В документации написано как скачать github.com/wladradchenko/wunjo.wladradchenko.ru/wiki и видео как установить на Windows https://youtu.be/2qIpJYhOL2U?feature=shared

      Однако в новой версии 1.5 не должно быть проблем со скачиванием, они были в предыдущей версии.


      1. heos_spb
        08.09.2023 09:59

        1. Wladradchenko Автор
          08.09.2023 09:59

          А откуда у вас эта ссылка? В файле .wunjo/voice/voice.json https://wladradchenko.ru/static/wunjo.wladradchenko.ru/tacotron2/checkpoint_man

          Раньше была такая ссылка, но с появлением клонирования, эта директория стала вызывать путаницы, и теперь называется tacotron2. Возможно из документации, поправил, спасибо


          1. heos_spb
            08.09.2023 09:59
            +1

            А эта ссылка у меня от надёжного источника из вот этой вот статьи: https://github.com/wladradchenko/wunjo.wladradchenko.ru/wiki/Как-вручную-установить-модель-преобразования-текста-в-речь
            Upd: вижу, поправили, спасибо.


  1. Nail_S
    08.09.2023 09:59
    +1

    Выглядит итерессно, решил попробовать, но на macOS 13.5.1(intel) не запустился (ffmpeg установил). Вышла ошибка что файл поврежден давай перемещай в корзину. Может сходу знаете в чем проблема? И еще вопрос на виртуалке заработает? Решил попробовать на Ubuntu.


    1. Wladradchenko Автор
      08.09.2023 09:59

      Привет. На виртуалке заработает, например билд для винды я делаю на виртуалке, там этот билд и тестирую. Напишите в github.com/wladradchenko/wunjo.wladradchenko.ru/issues, попробуем решить, что с ним. Вы также можете попробовать установить проект из GitHub.

      Возможно такая ошибка, что сделан просто билд, а не установщик. Однако на данный момент из-за блокировки регистрации из России на Apple, у меня не получится сделать установщик. Если кто-то сможет собрать, то я прикреплю ссылки на этого человека и его установщик на сайте и GitHub приложения.


  1. Lex100500proxy
    08.09.2023 09:59
    +3

    Шикарный программист шикарного приложения. Браво!


    1. Wladradchenko Автор
      08.09.2023 09:59

      Спасибо. Если появятся предложения, не стесняйтесь писать их на github.com/wladradchenko/wunjo.wladradchenko.ru/discussion


  1. 3263927
    08.09.2023 09:59
    +1

    это очень круто! прямо не верится что это всё один человек может сделать! удачи вам с проектом! моё восхищение!


    1. Wladradchenko Автор
      08.09.2023 09:59
      +2

      Спасибо. Если вам нравится, вы можете поддержать проект. Например рассказав о нём или предложить свои идеи для обновления 1.6. В документации я добавил страницу об этом.


  1. djslava11
    08.09.2023 09:59

    Описание радует. Действительно пора собрать "все в одном". Однако, с экрана смартфона увидел отличие области, где убрана машина: следы от шин пропадают под немного не оттуда "клонированной" областью, хотя впереди, в перспективе, рисунок шин есть. Можно ли как-то переделать алгоритм, чтобы он взял область из перспективы и "натянул" ее на область закраски машины?


    1. Wladradchenko Автор
      08.09.2023 09:59

      Привет. Не получится, так работает нейронная сеть, которая применяется. Она обучалась следующим образом: на вход подавалось полное изображение и изображение, где закрашен объект и нейронная сеть училась восстанавливать изображения. Там нет алгоритма, который что-то натягивает. Единственный выход до обучать модель на данных, на которых она плохо отрабатывает))