DeepFuze est un outil d'apprentissage profond de pointe qui s'intègre parfaitement à ComfyUI pour révolutionner les transformations faciales, la synchronisation labiale, la génération de vidéos, le clonage vocal, l'échange de visage et la traduction lipsync. Tirant parti d'algorithmes avancés, DeepFuze permet aux utilisateurs de combiner l'audio et la vidéo avec un réalisme inégalé, garantissant des mouvements du visage parfaitement synchronisés. Cette solution innovante est idéale pour les créateurs de contenu, les animateurs, les développeurs et tous ceux qui cherchent à élever leurs projets de montage vidéo avec des fonctionnalités sophistiquées basées sur l'IA.
Vous devez installer Visual Studio, il fonctionne avec la version communautaire OU VS C++ Build Tools et sélectionner "Desktop Development with C++" sous "Workloads -> Desktop & Mobile"
À partir de ComfyUI-Manager, recherchez DeepFuze et installez le nœud. Redémarrez votre ComfyUI et regardez la fenêtre de votre terminal pour vous assurer qu'il n'y a pas d'erreur, ou installez à partir du gestionnaire ComfyUI, sélectionnez « Installer via l'URL GIT » et copiez :
https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Redémarrez votre ComfyUI
Instructions étape par étape de LIEN YOUTUBE
Installez Nvidia CUDA Toolkit==11.8 et cuDNN (CUDA Deep Neural Network) pour le Deep Learning, vous devez télécharger la version 8.9.2.26 de cuDNN à partir de NVIDIA DEVELOPER cuDNN Archive, si vous n'avez pas de compte développeur, vous pouvez le télécharger directement depuis GoogleDrive. . Assurez-vous d'installer Cuda1 1.8 . J'ai trouvé cette vidéo YOUTUBE utile pour l'installation. Si vous disposez d'une version différente de CUDA, voici un lien YOUTUBE qui vous guide sur la façon de désinstaller votre CUDA. Assurez-vous de créer des chemins dans votre variable d'environnement comme décrit sur YOUTUBE VIDEO Redémarrez votre ordinateur après avoir créé des chemins. Confirmez votre installation Cuda, collez ce code dans la fenêtre de votre terminal nvcc --version
vous devriez obtenir une réponse comme celle-ci :
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0`
N'installez pas via ComfyUI-Manager cela ne fonctionnera pas, vous devez l'installer manuellement et suivre les instructions ci-dessous :
Activez votre environnement virtuel, Conda ou Venv
Ici comment installer et tester votre PyTorch
Cette méthode a été testée sur un Mac M1 et M3. Vous devez exécuter le code ci-dessous sur la fenêtre de votre terminal pour Mac Metal Performance Shaders (MPS), la solution spécialisée d'Apple pour la programmation GPU hautes performances sur leurs appareils. S'intégrant étroitement au framework Metal, MPS fournit une suite de shaders hautement optimisés pour les tâches graphiques et informatiques, ce qui est particulièrement bénéfique dans les applications d'apprentissage automatique.
Copiez et collez la commande ci-dessous dans la fenêtre de votre terminal.
export PYTORCH_ENABLE_MPS_FALLBACK=1
Les utilisateurs Mac doivent INSTALLER LE CPU ONNX RUNTIME au lieu de onnxruntime-gpu
pip install onnxruntime
macOS doit installer le dlib d'origine.
pip install dlib
Installer la synthèse vocale pour le nœud de clonage vocal
pip install TTS
Accédez au dossier custom_nodes
cd custom_nodes
git clone https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Accédez au dossier CompfyUI-DeepFuze
et installez le fichier requirements.txt
cd CompfyUI-DeepFuze
pip install -r requirements.txt
Conditions préalables au clonage vocal et à la synchronisation labiale
Vous trouverez ci-dessous les deux référentiels ComfyUI requis pour charger la vidéo et l'audio. Installez-les dans votre dossier custom_nodes
:
Clonez les dépôts :
cd custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
Erreur CV : si vous rencontrez l'erreur « ComfyUI_windows_portableComfyUIoutputdeepfuzefaceswap_file.mp4 n'a pas pu être chargé avec cv », cela signifie onnxruntime
n'est pas installé. Pour résoudre ce problème, assurez-vous d'installer onnxruntime
pour CPU et onnxruntime-gpu
pour Windows. Les utilisateurs Mac doivent mettre à niveau OpenCV à l'aide de la commande pip install --upgrade opencv-python-headless
dans leur environnement virtuel. Pour les utilisateurs Windows, accédez à ComfyUI Manager, cliquez sur « pip install », collez --upgrade opencv-python-headless
, cliquez sur OK et redémarrez votre ComfyUI.
Erreur zlibwapi.dll manquante : recherchez le fichier NVIDIA zlibwapi.dll, téléchargez-le et copiez-le dans C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.8binzlibwapi.dll
Si vous obtenez une erreur lors de l'installation de TTS, c'est probablement parce que vous disposez de différentes versions de Python, assurez-vous d'installer la bonne version.
Si vous obtenez une erreur : ImportError : impossible d'importer le nom 'get_full_repo_name' depuis 'huggingface_hub' Exécutez les codes ci-dessous sur votre terminal, cela résoudra le problème
conda install chardet
pip install --upgrade transformers==4.39.2
si vous obtenez une erreur pour un package, ouvrez le fichier exigences.txt avec n'importe quel éditeur de texte, supprimez la version au début du nom du package et réinstallez à nouveau requirments.txt
Vous pouvez télécharger des modèles directement depuis GoogleDrive et placer des modèles dans le PATH ./ComfyUI/models/deepfuze/
Assurez-vous de télécharger manuellement chaque modèle un par un et de les placer. En raison de la taille des modèles, certains modèles ne seront pas téléchargés si vous téléchargez le dossier préparant les variables d'environnement, accédez à votre dossier custom_nodes et git clone ou téléchargez manuellement le code et extrayez-le dans le dossier custom_nodes.
Pour utiliser le nœud « Openai LLM » pour les dialogues de clonage vocal, vous avez besoin d'une clé API OpenAI. Vous pouvez obtenir cette clé et la configurer en suivant les instructions du guide de démarrage rapide d'OpenAI Developer. Veuillez noter que le nœud « Openai LLM » n'enregistre pas votre clé API. Chaque fois que vous fermez le nœud, vous devrez copier et coller manuellement votre clé API. Vous pouvez également ajouter la clé API en tant que variable d'environnement à l'aide des commandes suivantes : Pour Windows : setx OPENAI_API_KEY "your-api-key-here"
et pour Mac : export OPENAI_API_KEY='your-api-key-here'
. La prochaine fois que vous aurez besoin de copier et coller votre clé API dans le nœud LLM, vous pourrez taper la commande suivante dans votre terminal : echo $OPENAI_API_KEY
, et il imprimera votre clé API, vous permettant de la copier et de la coller dans votre Openai LLM. nœud.
Ce nœud génère une vidéo de synchronisation labiale à partir de fichiers vidéo, image et audio. Pour une exportation de meilleure qualité de la sortie IMAGE sous forme de lot d'images au lieu d'une vidéo combinée, vous pouvez obtenir une taille d'image de qualité jusqu'à 4K. IMPORTANT : Vous devez charger l'audio avec le nœud "VHS Load Audio" du nœud VideoHelperSuit.
Types d'entrée :
images
: images de trame extraites en tant que tenseurs PyTorch.audio
: Une instance de données audio chargées.mata_batch
: Chargez les numéros de lots via le nœud Meta Batch Manager.Types de sortie :
IMAGES
: images d'image extraites en tant que tenseurs PyTorch.frame_count
: nombre d'images de sortie int.audio
: Sortie audio.video_info
: Sortie des métadonnées vidéo.Fonctionnalités de synchronisation labiale DeepFuze :
enhancer
: Vous pouvez ajouter un exhausteur de visage pour améliorer la qualité de la vidéo générée via le réseau de restauration de visage.frame_enhancer
: Vous pouvez ajouter une amélioration à l'ensemble de l'image de la vidéo.face_mask_padding_left
: Remplissage à gauche du visage lors de la synchronisation labiale.face_mask_padding_right
: Remplissage à droite du visage lors de la synchronisation labiale.face_mask_padding_bottom
: Rembourrage au bas du visage lors de la synchronisation des lèvres.face_mask_padding_top
: Rembourrage vers le haut du visage lors de la synchronisation labiale.device
: [processeur, GPU]frame_rate
: Définissez la fréquence d'images.loop_count
: combien de fois supplémentaires la vidéo doit être répétée.filename_prefix
: Nom du préfixe pour la vidéo de sortie.pingpong
: provoque la lecture de l'entrée en sens inverse pour créer une boucle propre.save_output
: Sauvegarde de la sortie dans le dossier de sortie. Ce nœud échange, améliore et restaure les visages, la vidéo et l'image. ou une qualité supérieure, exportez la sortie IMAGE sous forme de lot d'images au lieu d'une vidéo combinée, vous pouvez obtenir une taille d'image de qualité jusqu'à 4k.
Types d'entrée :
source_images
: image de trame extraite en tant que tenseurs PyTorch pour l'échange.target_images
: images d'images extraites en tant que tenseurs PyTorch pour saisir la vidéo/l'image source.mata_batch
: Chargez les numéros de lots via le nœud Meta Batch Manager.Types de sortie :
IMAGES
: images d'image extraites en tant que tenseurs PyTorch.frame_count
: nombre d'images de sortie int.audio
: Sortie audio.video_info
: Sortie des métadonnées vidéo.Caractéristiques de DeepFuze FaceSwap :
enhancer
: Vous pouvez ajouter un rehausseur de visage pour améliorer la qualité de la vidéo générée via le réseau de restauration de visage.faceswap_model
: Vous pouvez sélectionner différents modèles à échanger.frame_enhancer
: Vous pouvez ajouter une amélioration à l'ensemble de l'image de la vidéo.face_detector_model
: Vous pouvez sélectionner différents modèles pour la détection des visages.face_mask_padding_left
: Remplissage vers la gauche sur le visage lors de la synchronisation labiale.face_mask_padding_right
: Remplissage vers la droite sur le visage lors de la synchronisation labiale.face_mask_padding_bottom
: Rembourrage vers le bas du visage lors de la synchronisation des lèvres.face_mask_padding_top
: Rembourrage vers le haut du visage lors de la synchronisation labiale.device
: [processeur, GPU]frame_rate
: Définissez la fréquence d'images.loop_count
: combien de fois supplémentaires la vidéo doit être répétée.filename_prefix
: Nom du préfixe pour la vidéo de sortie.pingpong
: provoque la lecture de l'entrée en sens inverse pour créer une boucle propre.save_output
: Sauvegarde de la sortie dans le dossier de sortie.Tableau récapitulatif du modèle de détecteur de visage (RetinaFace offre une qualité supérieure en incorporant des informations contextuelles autour du visage, ce qui facilite la détection des visages dans diverses conditions, telles que des occlusions, différentes échelles et poses.
Fonctionnalité | YOLOVisage | RétineVisage | SCRFD | YuNet |
---|---|---|---|---|
Architecture | YOLO à un coup | RetinaNet en une seule étape | Cascade à un étage | Léger personnalisé |
Vitesse | Très rapide | Modéré | Rapide | Très rapide |
Précision | Bien | Très élevé | Haut | Bien |
Robustesse | Modéré | Très élevé | Haut | Modéré |
Efficacité informatique | Haut | Modéré | Haut | Très élevé |
Cas d'utilisation | Scènes en temps réel moins complexes | Des besoins robustes et de haute précision | Appareils mobiles/edge équilibrés | Mobile, embarqué, en temps réel |
Avantages | Vitesse | Précision, robustesse | Efficacité, précision | Léger, efficace |
Inconvénients | Compromis en matière de précision | Informatique lourde | Pas le plus rapide | Moins robuste dans les scènes complexes |
Langues :
Le clonage vocal DeepFuze_TTS prend en charge 17 langues : anglais (en), espagnol (es), français (fr), allemand (de), italien (it), portugais (pt), polonais (pl), turc (tr), russe (ru). ), néerlandais (nl), tchèque (cs), arabe (ar), chinois (zh-cn), japonais (ja), hongrois (hu), coréen (ko) hindi (hi).
Ce nœud est utilisé pour cloner n'importe quelle voix à partir d'une entrée saisie. Le fichier audio doit durer 10 à 15 secondes pour de meilleurs résultats et ne doit pas contenir beaucoup de bruit. Pour éviter toute erreur de fréquence d'échantillonnage, chargez l'audio MP3 et travaillez uniquement avec le nœud AudioScheduler. Nous travaillons sur le développement d'un nœud de convertisseur pour résoudre ce problème.
Types d'entrée :
audio
: Une instance de données audio chargées.text
: Texte pour générer l’audio vocal cloné.Types de sortie :
audio
: Une instance de données audio chargées.Le nœud « LLM Integration » est utilisé pour intégrer LLM (Language Model) dans le processus de clonage vocal. Vous pouvez saisir votre dialogue et configurer les paramètres, et les textes générés par l'IA seront utilisés pour le clonage vocal. De plus, vous pouvez utiliser ce nœud à la place de ChatGPT pour produire du texte à partir de LLM ou pour poser des questions de la même manière qu'avec ChatGPT. Vous pouvez afficher la sortie de DeepFuze_LLM en connectant le LLM_RESPONSE au nœud "Display Any" de rgtrois-comfy, ce nœud peut également être utilisé pour les générations d'invites et tous les textes de saisie de nœuds.
Types d'entrée :
user_query
: Tapez vos dialogues.Types de sortie :
LLM_RESPONSE
: produit les textes générés par l'IA.Caractéristiques de DeepFuze Openai LLM :
model_name
: Vous pouvez sélectionner parmi les modèles openai disponibles.api_key
: Ajoutez votre clé API. (Votre clé API ne sera pas enregistrée, chaque fois que vous utilisez ce nœud, vous devez la saisir manuellement.max_tokens
: est un paramètre qui limite le nombre de jetons dans la réponse d'un modèle dans les API OpenAI GPT. Il est utilisé dans les requêtes effectuées via GPT pour Sheets et Docs, ainsi que dans la classe ChatOpenAI(). La valeur par défaut de max_tokens est de 4 096 jetons, ce qui équivaut à peu près à 3 000 mots.temperature
: contrôle le niveau de caractère aléatoire et de créativité dans ses réponses. Il s'agit d'un hyper-paramètre dans les grands modèles linguistiques (LLM) qui équilibre la créativité et la cohérence dans le texte généré. Le réglage de la température est toujours un nombre compris entre 0 et 1, la valeur par défaut étant 0,7 : 0 : produit des réponses très simples, presque déterministes 1 : entraîne des réponses très variables 0,7 : la température par défaut pour ChatGPT.timeout
: configurez le délai si la requête prend trop de temps à se terminer et que le serveur ferme la connexion.Types d'entrée :
image
: Fournit un aperçu du rembourrage du masque facial.Caractéristiques du rembourrage DeepFuze :
face_mask_padding_left
: Remplissage vers la gauche sur le visage lors de la synchronisation labiale.face_mask_padding_right
: Remplissage vers la droite sur le visage lors de la synchronisation labiale.face_mask_padding_bottom
: Rembourrage vers le bas du visage lors de la synchronisation des lèvres.face_mask_padding_top
: Rembourrage vers le haut du visage lors de la synchronisation labiale.Ce nœud est utilisé pour sauvegarder la sortie du nœud « Voice Cloning ». De plus, vous pouvez couper l'audio et le lire.
Types d'entrée :
audio
: Une instance de données audio chargées.Caractéristiques du rembourrage DeepFuze :
METADATA
: Métadonnées Sting.start_time
: Couper l'heure de début.end_time
: Couper l'heure de fin.playback window
: fournit des options de lecture, d'enregistrement et de vitesse de lecture.Clonage vocal + génération Lipsync
Clonage vocal + Génération Lipsync + FaceSwap
ComfyUI-DeepFuze/ ├── __init__.py ├── __pycache__/ │ ├── __init__.cpython-311.pyc │ ├── audio_playback.cpython-311.pyc │ ├── llm_node.cpython-311.pyc │ ├── nodes.cpython-311.pyc │ └── utils.cpython-311.pyc ├── audio_playback.py ├── deepfuze/ │ ├── __init__.py │ ├── audio.py │ ├── choices.py │ ├── common_helper.py │ ├── config.py │ ├── content_analyser.py │ ├── core.py │ ├── download.py │ ├── execution.py │ ├── face_analyser.py │ ├── face_helper.py │ ├── face_masker.py │ ├── face_store.py │ ├── ffmpeg.py │ ├── filesystem.py │ ├── globals.py │ ├── installer.py │ ├── logger.py │ ├── memory.py │ ├── metadata.py │ ├── normalizer.py │ ├── process_manager.py ├── requirements.txt ├── images/ ├── install.py ├── LICENSE.txt ├── llm_node.py ├── mypy.ini ├── nodes.py ├── README.md ├── requirements.txt ├── run.py ├── tests/ │ ├── __init__.py │ ├── test_audio.py │ ├── test_cli_face_debugger.py │ ├── test_cli_face_enhancer.py │ ├── test_cli_face_swapper.py │ ├── test_cli_frame_colorizer.py │ ├── test_cli_frame_enhancer.py │ ├── test_cli_lip_syncer.py │ ├── test_common_helper.py │ ├── test_config.py │ ├── test_download.py │ ├── test_execution.py │ ├── test_face_analyser.py │ ├── test_ffmpeg.py │ ├── test_filesystem.py │ ├── test_memory.py │ ├── test_normalizer.py │ ├── test_process_manager.py │ ├── test_vision.py │ └── test_wording.py ├── tts_generation.py └── utils.py
from deepfuze import DeepFuze
# Initialize the DeepFuze instance
deepfuze = DeepFuze ()
# Load video and audio files
deepfuze . load_video ( 'path/to/video.mp4' )
deepfuze . load_audio ( 'path/to/audio.mp3' )
deepfuze . load_checkpoint ( 'path/to/checkpoint_path' )
# Set parameters (optional)
deepfuze . set_parameters ( sync_level = 5 , transform_intensity = 3 )
# Generate lipsynced video
output_path = deepfuze . generate ( output = 'path/to/output.mp4' )
print ( f"Lipsynced video saved at { output_path } " )
Ce référentiel n'aurait pas pu être réalisé sans les contributions de FaceFusion, InsightFace,SadTalker, Facexlib, GFPGAN, GPEN, Real-ESRGAN, TTS, SSD et wav2lip,
Le code DeepFuze est développé par le Dr Sam Khoze et son équipe. N'hésitez pas à utiliser le code DeepFuze à des fins personnelles, de recherche, académiques et commerciales. Vous pouvez créer des vidéos avec cet outil, mais assurez-vous de respecter les lois locales et de l'utiliser de manière responsable. Les développeurs ne seront pas responsables de toute mauvaise utilisation de l'outil par les utilisateurs.