Введение
Версия Google Colab (бесплатные облачные вычисления в браузере)
Локальная установка
Поддерживать
Лучшие практики
Простая настройка и выполнение — локально и через Colab.
не нужно возиться с ручной загрузкой и установкой предварительных требований
Google Colab имеет только 2 ячейки для выполнения
Пользователям Windows для установки, обновления и запуска нужен только один файл.
Хорошо документированные варианты ниже.
Больше не нужно задаваться вопросом, что что-то делает!
Мой 9-секундный тестовый ролик с разрешением 720p и частотой 60 кадров в секунду через Colab T4:
Оригинальный Wav2Lip | Easy-Wav2Lip |
---|---|
Время выполнения: 6м 53с | Время выполнения: 56 с. |
Это не опечатка! Мой клип длится с почти 7 минут до менее 1 минуты!
Данные отслеживания сохраняются между поколениями одного и того же видео, что экономит еще больше времени:
Easy-Wav2Lip снова на том же видео |
---|
Время выполнения: 25 с. |
Easy-Wav2Lip исправляет визуальные ошибки на губах:
3 варианта качества:
Быстро: Wav2Lip
Улучшено: Wav2Lip с растушеванной маской вокруг рта для восстановления исходного разрешения остальной части лица.
Улучшено: Wav2Lip + маска + масштабирование GFPGAN на лице.
https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
Требования: карта Nvidia, поддерживающая cuda 12.2, или устройство MacOS, поддерживающее MPS через процессор Apple или графический процессор AMD.
Скачать Easy-Wav2Lip.bat
Поместите его в папку на вашем компьютере (например, в «Документы»).
Запустите его и следуйте инструкциям. Он создаст папку с именем Easy-Wav2Lip в любой папке, из которой вы ее запустите.
Запускайте этот файл всякий раз, когда захотите использовать Easy-Wav2Lip.
Это должно обеспечить установку всех необходимых компонентов.
Убедитесь, что следующие компоненты установлены и доступны через ваш терминал:
Python 3.10 (я тестировал только 3.10.11 — другие версии могут не работать!)
Гит
Windows и Linux: Cuda (для этого достаточно иметь последние версии драйверов Nvidia, я тестировал только 12.2)
Запустите в своем терминале следующую команду, как только вы перейдете в папку, в которую хотите установить Easy-Wav2Lip:
Настраивает venv, устанавливает на него ffmpeg, а затем устанавливает Easy-Wav2Lip:
Откройте cmd и перейдите к папке, в которую вы хотите установить EasyWav2Lip, с помощью компакт-диска EG: cd Documents
Скопируйте и вставьте следующий код в окно cmd: Примечание. В этом месте будут созданы 2 папки: Easy-Wav2Lip и Easy-Wav2Lip-venv (изолированная установка Python).
py -3.10 -m venv Easy-Wav2Lip-venv Easy-Wav2Lip-venvScriptsactivate python -m pip install --upgrade pip python -m pip install requests set url=https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip python -c "import requests; r = requests.get('%url%', stream=True); open('ffmpeg.zip', 'wb').write(r.content)" powershell -Command "Expand-Archive -Path .\ffmpeg.zip -DestinationPath .\" xcopy /e /i /y "ffmpeg-master-latest-win64-gplbin*" .Easy-Wav2Lip-venvScripts del ffmpeg.zip rmdir /s /q ffmpeg-master-latest-win64-gpl git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
Теперь запустим Easy-Wav2Lip:
3. Закройте и снова откройте cmd, затем перейдите в тот же каталог, что и на шаге 1.
4. Вставьте следующий код:
Easy-Wav2Lip-venvScriptsactivate cd Easy-Wav2Lip call run_loop.bat
Дополнительные инструкции см. в разделе «Использование».
Настраивает venv, устанавливает на него ffmpeg, а затем устанавливает Easy-Wav2Lip:
Откройте терминал и перейдите к папке, в которую вы хотите установить Easy0Wav2Kip, с помощью cd EG: cd ~/Documents
Скопируйте и вставьте следующий код в окно терминала: Примечание. В этом месте будут созданы 2 папки: Easy-Wav2Lip и Easy-Wav2Lip-venv (изолированная установка Python).
python3.10 -m venv Easy-Wav2Lip-venv source EW2Lvenv/bin/activate python -m pip install --upgrade pip python -m pip install requests for file in ffmpeg ffprobe ffplay; do curl -O "https://evermeet.cx/ffmpeg/${file}-6.1.1.zip" unzip "${file}-6.1.1.zip" done mv -f ffmpeg ffprobe ffplay /Easy-Wav2Lip-venv/bin/ rm -f ffmpeg-6.1.1.zip ffprobe-6.1.1.zip ffplay-6.1.1.zip source EW2Lvenv/bin/activate git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
Теперь запустим Easy-Wav2Lip:
3. Закройте и снова откройте терминал, затем перейдите в тот же каталог, что и на шаге 1.
4. Вставьте следующий код:
source Easy-Wav2Lip-venv/bin/activate cd Easy-Wav2Lip ./run_loop.sh
Как только все будет установлено, должен появиться файл с именем config.ini.
Добавьте сюда пути к вашим видео- и аудиофайлам и настройте параметры по своему вкусу.
Совет для профессионалов:
В Windows удерживайте сдвиг при щелчке правой кнопкой мыши по файлу, который вы хотите использовать, затем нажмите «a» или нажмите «копировать как путь», и вы получите путь, который вы можете вставить как video_file или voice_file.
MacOS: щелкните файл правой кнопкой мыши, удерживайте клавишу Option (Alt) и выберите «Копировать [имя файла] как путь» в контекстном меню.
Сохраните config.ini и закройте его. Это запустит процесс Wav2Lip, и ваш файл будет сохранен в том же каталоге, что и ваш файл video_path.
config.ini откроется снова, и вы сможете изменить входные данные и настройки.
См. рекомендации ниже, где приведены советы о том, как начать работу.
См. раздел «Расширенная настройка» ниже для объяснения настроек, которые еще не объяснены в config.ini.
Конечно же, оригинальный Wav2Lip.
Огромное увеличение скорости и улучшение базового качества достигается благодаря cog-Wav2Lip.
Код для масштабирования с помощью GFPGAN в основном взят из wav2lip-hq-updated-ESRGAN.
Я не смог бы сделать это без помощи ИИ; До этого у меня был очень минимальный опыт работы с Python! Предпочтительный LLM: Bing Chat (теперь называемый «Второй пилот»).
Спасибо Джастину Джону за создание коллабов Wav2Lip_simplified, которые вдохновили меня на создание собственной, еще более простой версии.
Если у вас возникли проблемы с запуском, просмотрите вкладку «Проблемы» и посмотрите, писал ли кто-нибудь об этом. Если нет, создайте новую тему, но обязательно укажите следующее:
Если коллаб:
Номер версии Colab Easy-Wav2Lip
Информация об используемых файлах.
Если локальная установка:
EasyWav2Lip.bat или установка вручную
Операционная система (Windows 11, Linux и т. д.)
Модель графического процессора
Версия драйвера графического процессора
Версия Python
Информация об используемых файлах и о том, работают ли другие файлы.
Без этой информации я все равно ее попрошу, поэтому ответ по самой проблеме займет больше времени.
Скорее всего, если какое-либо из них отличается от требований, то это причина того, что оно не работает, и вам, возможно, придется использовать версию Colab, если еще не сделали этого.
Для общей болтовни об этом и любых других разговорах о синхронизации губ я буду в этом разногласии:
Ссылка для приглашения: https://discord.gg/FNZR9ETwKY
Канал Wav2Lip: https://discord.com/channels/667279414681272320/1076077584330280991
Наилучшие результаты достигаются, если согласовать речь с действиями и выражениями говорящего, прежде чем отправлять ее через wav2lip!
Видео файлы:
Лицо должно присутствовать во всех кадрах, иначе Wav2Lip не удастся.
Обрежьте или замаскируйте лица, которые не хотите синхронизировать по губам, иначе они будут выбраны случайным образом.
Используйте h264.mp4 — могут поддерживаться другие типы файлов, но выводится именно это.
Изображения на данный момент не проверены.
Используйте небольшой файл во всех отношениях (попробуйте <720p, <30 секунд, 30 кадров в секунду и т. д. — файлы большего размера могут работать, но обычно являются причиной неудачи)
Для первой попытки используйте очень маленький клип, просто чтобы привыкнуть к процессу, и только после того, как вы освоитесь, вы можете попробовать файлы большего размера, чтобы проверить, работают ли они.
Аудио файлы:
Сохраните в формате .wav и той же длины, что и входное видео.
ПРИМЕЧАНИЕ. Я заметил, что обработанное видео/аудио сокращается примерно на 80 мс, и я не знаю, как это исправить, поэтому убедитесь, что у вас есть немного больше, чем вам действительно нужно!
Вы можете просто закодировать его в свой видеофайл и оставить поле voice_path пустым, но это добавит пару секунд ко времени обработки, поскольку аудио будет отделено от видео.
ИЛИ
Выберите аудиофайл отдельно
Я не уверен, какие типы файлов поддерживаются, по крайней мере, .wav и .mp3 работают.
Вариант | Плюсы | Минусы |
---|---|---|
Wav2Lip | + Более точная синхронизация губ + Пытается держать рот закрытым, когда нет звука | - Иногда возникает отсутствие зубов (редко) |
Wav2Lip_GAN | + Выглядит красивее + Сохраняет оригинальные выражения говорящего | - Не так хорошо маскирует исходные движения губ, особенно когда нет звука. |
Я предлагаю сначала попробовать Wav2Lip и переключиться на версию GAN, если вы почувствуете эффект, когда кажется, что у говорящего большие щели между зубами.
Если эта опция включена, wav2lip будет обрезать лицо в каждом кадре независимо.
Подходит для быстрых движений или нарезки видео.
Может вызвать подергивание, если лицо находится под странным углом.
Если этот параметр отключен, wav2lip будет смешивать обнаруженное положение лица между 5 кадрами.
Подходит для медленных движений, особенно для лиц под необычным углом.
Рот может быть смещен, когда лицо быстро движется в кадре, между кадрами выглядит ужасно.
Этот параметр определяет, сколько пикселей добавляется или удаляется из кадра лица в каждом направлении.
Ценить | Пример | Эффект |
---|---|---|
ты | У = -5 | Удаляет 5 пикселей в верхней части лица. |
Д | Д = 10 | Добавляет 10 пикселей к нижней части лица. |
л | Л = 0 | Никаких изменений слева от лица. |
Р | Р = 15 | Добавляет 15 пикселей справа от лица. |
Набивка может помочь убрать резкие линии на подбородке или других краях лица, но слишком большое или слишком мало набивки может изменить размер или положение рта. Обычной практикой является добавление 10 пикселей внизу, но вам следует поэкспериментировать с разными значениями, чтобы найти лучший баланс для вашего клипа.
Этот параметр определяет, как обработанная грань смешивается с исходной. Это не влияет на параметр качества «Быстро».
size увеличит размер области, которую покрывает маска.
Растушевка определяет степень растушевки между центром маски и краями.
mouth_tracking будет обновлять положение маски до того места, где находится рот в каждом кадре (медленнее).
Примечание. Положение рта уже хорошо приближено, поскольку кадр обрезается до лица. Включайте эту функцию только в том случае, если вы найдете видео, где маска не следует за ртом.
debug_mask сделает фон полутоновым, а маску цветной, чтобы вы могли легко видеть, где находится маска в кадре.
Эта опция позволяет автоматически обрабатывать несколько видео и/или аудиофайлов.
Назовите свои файлы цифрой в конце, например. Video1.mp4, Video2.mp4 и т.д. и поместить их все в одну папку.
Файлы будут обрабатываться в порядке номеров, начиная с выбранного вами. Например, если вы выберете Video3.mp4, он будет обрабатывать Video3.mp4, Video4.mp4 и т. д.
Если вы выберете пронумерованные видеофайлы и ненумерованный аудиофайл, каждое видео будет обработано одним и тем же аудиофайлом. Полезно для того, чтобы разные изображения/видео говорили одну и ту же строку.
Аналогично, если вы выберете ненумерованный видеофайл и пронумерованные аудиофайлы, для каждого аудиофайла будет использоваться одно и то же видео. Полезно, если одно и то же изображение/видео говорит о разных вещах.
Это добавит суффикс к вашим выходным файлам, чтобы они не перезаписывали ваши оригиналы.
Добавляет, какие настройки были использованы — удобно для сравнения различных настроек, так как вы будете знать, что вы использовали для каждого рендеринга. Будет добавлено: Qualty_solve_nosmooth_pads-UDLR. Например: _Enhanced_720_nosmooth1_pads-U15D10L-15R30. Pads_UDLR не будет включен, если для него установлено значение 0. Разрешение не будет включено, если для параметра output_height установлено полное разрешение.
Отображает входное видео/аудио перед обработкой, чтобы вы могли убедиться, что выбрали правильный файл(ы). Он может работать только с .mp4, я просто знаю, что он не работает с .avi, который я пробовал. Отключение этого параметра позволит сэкономить несколько секунд времени обработки каждого видео.
Это позволит отобразить только 1 кадр вашего видео и отобразить его в полном размере. Это позволит вам настроить параметры без необходимости каждый раз отображать все видео. Frame_to_preview предназначен для выбора конкретного кадра, который вы хотите проверить, и может быть не совсем точным по отношению к фактическому кадру.