Introduction
Version Google Colab (cloud computing gratuit dans le navigateur)
Installation locale
Soutien
Meilleures pratiques
Configuration et exécution simples - localement et via Colab.
pas de problème avec le téléchargement et l'installation manuels des prérequis
Google Colab n'a que 2 cellules à exécuter
Les utilisateurs Windows n'ont besoin que d'un seul fichier pour installer, mettre à jour et exécuter.
Options bien documentées ci-dessous.
Ne vous demandez plus ce que fait quelque chose !
Pour mon clip de test de 9 secondes 720p 60fps via Colab T4 :
Wav2Lip originale | Facile-Wav2Lip |
---|---|
Temps d'exécution : 6m 53s | Temps d'exécution : 56s |
Ce n'est pas une faute de frappe ! Mon clip passe de presque 7 minutes à moins d'1 minute !
Les données de suivi sont enregistrées entre les générations de la même vidéo, ce qui permet de gagner encore plus de temps :
Easy-Wav2Lip à nouveau sur la même vidéo |
---|
Temps d'exécution : 25s |
Easy-Wav2Lip corrige des bugs visuels sur les lèvres :
3 options pour la qualité :
Rapide : Wav2Lip
Amélioré : Wav2Lip avec un masque à plumes autour de la bouche pour restaurer la résolution originale pour le reste du visage
Amélioré : Wav2Lip + masque + upscaling GFPGAN effectué sur le visage
https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
Exigences : carte Nvidia prenant en charge cuda 12.2 ou appareil MacOS prenant en charge mps via Apple Silicon ou AMD GPU
Télécharger Easy-Wav2Lip.bat
Placez-le dans un dossier sur votre PC (EG : dans Documents)
Exécutez-le et suivez les instructions. Il créera un dossier appelé Easy-Wav2Lip dans le dossier à partir duquel vous l'exécutez.
Exécutez ce fichier chaque fois que vous souhaitez utiliser Easy-Wav2Lip
Cela devrait gérer l’installation de tous les composants requis.
Assurez-vous que les éléments suivants sont installés et accessibles via votre terminal :
Python 3.10 (je n'ai testé que la 3.10.11 - les autres versions peuvent ne pas fonctionner !)
Git
Windows & Linux : Cuda (il suffit d'avoir les derniers pilotes Nvidia pour cela, je n'ai testé que 12.2)
Exécutez ce qui suit dans votre terminal une fois que vous avez accédé au dossier dans lequel vous souhaitez installer Easy-Wav2Lip :
Configure un venv, y installe ffmpeg, puis installe Easy-Wav2Lip :
Ouvrez cmd et accédez au dossier dans lequel vous souhaitez installer EasyWav2Lip à l'aide de cd EG : cd Documents
Copiez et collez le code suivant dans votre fenêtre cmd : Remarque : 2 dossiers seront créés à cet emplacement : Easy-Wav2Lip et Easy-Wav2Lip-venv (une installation python isolée)
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
Maintenant, pour exécuter Easy-Wav2Lip :
3. Fermez et rouvrez cmd puis cd dans le même répertoire qu'à l'étape 1.
4. Collez le code suivant :
Easy-Wav2Lip-venvScriptsactivate cd Easy-Wav2Lip call run_loop.bat
Voir Utilisation pour des instructions supplémentaires.
Configure un venv, y installe ffmpeg, puis installe Easy-Wav2Lip :
Ouvrez le Terminal et accédez au dossier dans lequel vous souhaitez installer Easy0Wav2Kip en utilisant cd EG : cd ~/Documents
Copiez et collez le code suivant dans la fenêtre de votre terminal : Remarque : 2 dossiers seront créés à cet emplacement : Easy-Wav2Lip et Easy-Wav2Lip-venv (une installation python isolée)
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
Maintenant, pour exécuter Easy-Wav2Lip :
3. Fermez et rouvrez le terminal, puis accédez au même répertoire qu'à l'étape 1.
4. Collez le code suivant :
source Easy-Wav2Lip-venv/bin/activate cd Easy-Wav2Lip ./run_loop.sh
Une fois que tout est installé, un fichier appelé config.ini devrait apparaître.
Ajoutez ici le(s) chemin(s) d'accès à vos fichiers vidéo et audio et configurez les paramètres à votre guise.
Conseil de pro :
Sous Windows, maintenez la touche Maj enfoncée lorsque vous faites un clic droit sur le fichier que vous souhaitez utiliser, puis appuyez sur "a" ou cliquez sur "Copier comme chemin" et vous obtiendrez le chemin que vous pourrez coller en tant que fichier_vidéo ou fichier_vocal.
MacOS : cliquez avec le bouton droit sur le fichier, maintenez la touche Option (Alt) enfoncée et sélectionnez « Copier [nom du fichier] comme nom de chemin » dans le menu contextuel.
Enregistrez config.ini et fermez-le, cela démarrera le processus Wav2Lip et votre fichier sera enregistré dans le même répertoire que votre fichier video_path.
config.ini s'ouvrira à nouveau et vous pourrez modifier les entrées et les paramètres.
Consultez les meilleures pratiques ci-dessous pour obtenir des conseils sur la façon de démarrer.
Voir Advanced Tweaking ci-dessous pour l'explication des paramètres qui ne sont pas déjà expliqués dans config.ini
Le Wav2Lip original bien sûr.
L'énorme augmentation de vitesse et l'amélioration de la qualité de base proviennent de cog-Wav2Lip.
Le code à mettre à niveau avec GFPGAN provenait principalement de wav2lip-hq-updated-ESRGAN.
Je n'aurais pas pu faire cela sans l'aide de l'IA ; Avant de faire cela, j'avais une expérience très minime de Python ! LLM de choix : Bing Chat (maintenant appelé « Copilot »).
Merci à JustinJohn d'avoir créé les collaborations Wav2Lip_simplified qui m'ont inspiré pour créer ma propre version, encore plus simple.
Si vous rencontrez des problèmes pour exécuter ceci, veuillez consulter l'onglet Problèmes pour voir si quelqu'un a écrit à ce sujet. Sinon, créez un nouveau fil de discussion mais assurez-vous d'inclure les éléments suivants :
Si colab :
Numéro de version de la collaboration Easy-Wav2Lip
Informations sur les fichiers utilisés.
Si installation locale :
EasyWav2Lip.bat ou installation manuelle
Système d'exploitation (windows 11, linux, etc.)
Modèle de GPU
Version du pilote GPU
Version Python
Informations sur les fichiers utilisés et si d'autres fichiers fonctionnent
Sans cette information, je la demanderai de toute façon et une réponse sur le problème lui-même prendra plus de temps.
Il y a de fortes chances que si l'un d'entre eux est différent des exigences, c'est la raison pour laquelle cela ne fonctionne pas et vous devrez peut-être simplement utiliser la version Colab si ce n'est déjà fait.
Pour des discussions générales à ce sujet et sur tout autre discours de synchronisation labiale, je serai sur ce discord :
Lien d'invitation : https://discord.gg/FNZR9ETwKY
Chaîne Wav2Lip : https://discord.com/channels/667279414681272320/1076077584330280991
Les meilleurs résultats viennent de l’alignement du discours sur les actions et expressions de l’orateur avant de l’envoyer via wav2lip !
Fichiers vidéo :
Doit avoir un visage dans toutes les images, sinon Wav2Lip échouera
Recadrez ou masquez les visages que vous ne souhaitez pas synchroniser sur les lèvres ou il choisira au hasard.
Utilisez h264 .mp4 - d'autres types de fichiers peuvent être pris en charge, mais voici ce qu'il génère
Les images ne sont actuellement pas testées.
Utilisez un petit fichier de toutes les manières (essayez <720p, <30 secondes, 30 ips, etc. - Des fichiers plus gros peuvent fonctionner mais sont généralement la raison de l'échec)
Pour votre premier essai, utilisez un tout petit clip juste pour vous habituer au processus. Une fois que vous serez familiarisé, essayez des fichiers plus gros pour voir s'ils fonctionnent.
Fichiers audio :
Enregistrez au format .wav et de la même longueur que votre vidéo d'entrée.
REMARQUE : J'ai remarqué qu'environ 80 ms sont coupées dans la vidéo/audio traitée et je ne sais pas comment résoudre ce problème, alors assurez-vous d'avoir un peu plus que ce dont vous avez réellement besoin !
Vous pouvez simplement l'encoder dans votre fichier vidéo et laisser vocal_path vide, mais cela ajoutera quelques secondes au temps de traitement car il divisera l'audio de la vidéo.
OU
Sélectionnez votre fichier audio séparément
Je ne suis pas sûr des types de fichiers pris en charge, au moins les formats .wav et .mp3 fonctionnent.
Option | Avantages | Inconvénients |
---|---|---|
Wav2Lip | + Synchronisation labiale plus précise + Tente de garder la bouche fermée lorsqu'il n'y a pas de son | - Produit parfois des dents manquantes (rare) |
Wav2Lip_GAN | + Ça a l'air plus joli + Conserve davantage les expressions originales de l'orateur | - Pas aussi efficace pour masquer les mouvements originaux des lèvres, surtout lorsqu'il n'y a pas de son |
Je suggère d'essayer d'abord Wav2Lip et de passer à la version GAN si vous ressentez un effet où il semble que le haut-parleur ait de grands espaces entre les dents.
Lorsqu'il est activé, wav2lip recadrera le visage sur chaque image indépendamment.
Idéal pour les mouvements rapides ou les coupures dans la vidéo.
Peut provoquer des contractions si le visage est dans un angle étrange.
Lorsqu'il est désactivé, wav2lip mélangera la position détectée du visage entre 5 images.
Idéal pour les mouvements lents, en particulier pour les visages présentant un angle inhabituel.
La bouche peut être décalée lorsque le visage se déplace rapidement dans le cadre, ce qui semble horrible entre les coupes.
Cette option contrôle le nombre de pixels ajoutés ou supprimés du recadrage du visage dans chaque direction.
Valeur | Exemple | Effet |
---|---|---|
U | U = -5 | Supprime 5 pixels du haut du visage |
D | D = 10 | Ajoute 10 pixels au bas du visage |
L | L = 0 | Aucun changement à gauche du visage |
R. | R = 15 | Ajoute 15 pixels à droite du visage |
Le rembourrage peut aider à éliminer les lignes dures au niveau du menton ou d’autres bords du visage, mais trop ou pas assez de rembourrage peut modifier la taille ou la position de la bouche. Il est courant d'ajouter 10 pixels en bas, mais vous devez expérimenter différentes valeurs pour trouver le meilleur équilibre pour votre clip.
Cette option contrôle la manière dont la face traitée est fusionnée avec la face d'origine. Cela n'a aucun effet sur l'option de qualité "Rapide".
La taille augmentera la taille de la zone couverte par le masque.
l'adoucissement détermine le degré de fusion entre le centre du masque et les bords.
Mouth_tracking mettra à jour la position du masque à l'endroit où se trouve la bouche à chaque image (plus lent)
Remarque : La position de la bouche est déjà bien approximative car le cadre est recadré sur le visage. Activez cette option uniquement si vous trouvez une vidéo dans laquelle le masque ne semble pas suivre la bouche.
debug_mask créera l'arrière-plan en niveaux de gris et le masque en couleur afin que vous puissiez facilement voir où se trouve le masque dans le cadre.
Cette option vous permet de traiter automatiquement plusieurs fichiers vidéo et/ou audio.
Nommez vos fichiers avec un numéro à la fin, par exemple. Video1.mp4, Video2.mp4, etc. et placez-les tous dans le même dossier.
Les fichiers seront traités par ordre numérique en commençant par celui que vous sélectionnez. Par exemple, si vous sélectionnez Video3.mp4, Video3.mp4, Video4.mp4, etc.
Si vous sélectionnez des fichiers vidéo numérotés et un fichier audio non numéroté, il traitera chaque vidéo avec le même fichier audio. Utile pour faire en sorte que différentes images/vidéos disent la même ligne.
De même, si vous sélectionnez un fichier vidéo non numéroté et des fichiers audio numérotés, il utilisera la même vidéo pour chaque fichier audio. Utile pour faire dire des choses différentes à la même image/vidéo.
Cela ajoute un suffixe à vos fichiers de sortie afin qu'ils n'écrasent pas vos originaux.
Ajoute les paramètres utilisés - idéal pour comparer différents paramètres car vous saurez ce que vous avez utilisé pour chaque rendu. Ajoutera : Qualty_resolution_nosmooth_pads-UDLR EG : _Enhanced_720_nosmooth1_pads-U15D10L-15R30 pads_UDLR ne seront pas inclus s'ils sont définis sur 0. La résolution ne sera pas incluse si la hauteur de sortie est définie sur la pleine résolution.
Affiche la vidéo/l'audio d'entrée avant le traitement afin que vous puissiez vérifier que vous avez choisi le(s) fichier(s) correct(s). Cela ne fonctionne peut-être qu'avec .mp4, je sais juste que cela n'a pas fonctionné sur un .avi que j'ai essayé. La désactivation de cette option permettra d'économiser quelques secondes de temps de traitement pour chaque vidéo.
Cela ne restituera qu'une seule image de votre vidéo et l'affichera en taille réelle, afin que vous puissiez modifier les paramètres sans avoir à restituer la vidéo entière à chaque fois. frame_to_preview sert à sélectionner une image particulière que vous souhaitez extraire - peut ne pas être complètement précise par rapport à l'image réelle.