Сервис для создания видео-аватара как из загруженного изображения, так и с помощью генерации его небольшой диффузионной моделью.
Telegram: @Alexander437
Stepik ID: 151346645
Большинство из существующих подобных сервисов работают очень долго.
- поэтому данный сервис предоставляет настройки, позволяющие каждому выбрать оптимальное
для него соотношение
качество/время ожидания
Часто хочется скорректировать речь аватара - добавить паузу или изменить темп речи
- данный сервис предоставляет пользователям возможность сделать это за счет специальных символов (сочетаний)
Было бы хорошо в одном месте генерировать и исходное изображение аватара, и видео, чтобы сразу проверить, как это выглядит и иметь авторские права по сравнению с правами на скачанные фото
- этот функционал также предоставляется
Посмотрите, как сгенерированный аватар будет представлять проект)
Плюсы:
- стабильная работа и высокое качество генерации
- возможность разместить презентацию или изображение, на фоне которого будет аватар
- поддержка ru/en
- чтение pdf
Минусы:
- частично предопределенные образы аватаров
- нет настроек для генерируемого видео
- нет возможности для управления речью - скорректировать ударения, добавить паузы
Плюсы:
- генерирует речь и отвечает на вопросы, может не требовать пользовательского ввода
- обеспечивает живой диалог
- высокое качество генерации
Минусы:
- предопределенные образы аватаров
- нет настроек для генерируемого видео
Плюсы:
- стабильная работа и высокое качество генерации
- возможность разместить презентацию или изображение, на фоне которого будет аватар
- поддержка различных языков
- чтение pdf
Минусы:
- нет возможности для управления речью
- нет настроек для генерируемого видео
D-ID Плюсы:
- возможность создания агентов с живым диалогом
- агенты могут ориентироваться на базы знаний (RAG алгоритм)
- высокое качество генерации
Минусы:
- нет возможности для управления речью
- нет настроек для генерируемого видео
Microsoft Lifelike Плюсы:
- стабильная работа и высокое качество генерации
- множество настроек при генерации видео
Минусы:
- нет возможности использовать аватара на фоне презентации
- функционирует как gradio демо-версия, а не полноценный веб-сервис
Часть | Путь | Подход |
---|---|---|
Генерация речи | backend/speech |
torchTTS (silero-models) |
Генерация видео | backend/video |
SadTalker |
Генерация аватара (исходного кадра) | backend/avatar |
Diffusers |
Данный сервис предназначен для создания видео-аватара как из загруженного изображения, так и с помощью генерации его диффузионной моделью.
Большинство существующих сервисов не предоставляют многих настроек пользователям. Данный сервис позволяет выполнить тщательную настройку при:
- генерации видео (выбор
enhancer
(метод улучшения генерации лица), режималицо
илив полный рост
, способа предварительной обработки) - генерации аудио (выбор качества (
sample rate
), возможность использования специальной разметки ( возможность пользователя определить ударения, темп, тон, паузы))
Многие настройки позволяют пользователю оптимизировать качество / время ожидания
, чего не позволяют
большинство существующих сервисов (приходится долго ждать, даже когда хочется быстро посмотреть как все
будет выглядеть)
Кроме того, большинство существующих сервисов не предоставляют возможностей для генерации фото аватара (исходного кадра), для этих целей приходится пользоваться функционалом других сервисов. Данный проект предоставляет этот функционал.
Ограничения:
- проект запускался на GPU емкостью 4GB, приходилось выбирать достаточно маленькие модели и исключить их копии, поэтому не используется celery, за единицу времени обслуживается не более одного пользователя
- на загруженном (или сгенерированном) изображении должно быть лицо
- возможно улучшение качества генерации за счет более длительного обучения, подбора гиперпараметров (на сегодняшний день у меня не было ресурсов, чтобы это сделать)
sudo apt-get install -y python3-dev libasound2-dev build-essential ffmpeg curl
pip install -r backend/requirements.txt
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm alias default 20.15.1
Скопировать папки с весами weights и gfpgan и поместить их в папку backend
Запустить backend
cd backend
python main.py
Запустить frontend
cd frontend
npm i
npm run dev
Для запуска не в режиме разработки требуется:
- Собрать frontend
cd frontend
npm run build
- Использовать
gunicorn
- Использовать мощную видеокарту и настроить количество процессов в celery в соответствии с ее емкостью
При запуске данного сервиса на gpu емкостью 4GB, всю gpu занимает модель генерации видео (она работает дольше всего).
Генерировать исходное изображение аватара приходится на cpu. В данном случае Kandinsky
и Stable Diffusion
имеют ряд недостатков:
- нет гарантии, что на изображении обязательно будет лицо (даже если попробовать придумать system prompt), без этого сгенерировать видео не удастся
- модели очень большие, почему-то они падали у меня даже на cpu
Поэтому потребовалось обучить свою модель для генерации аватаров. Использовалась небольшая диффузионная модель с Unet.
Набор данных: CelebA
Из-за ограничений gpu, размер генерируемых изображений 128x128
, а batch_size
не более 3.
Вот как модель постепенно училась создавать аватаров):
От шума к неплохим генерациям: