DeepFuze es una herramienta de aprendizaje profundo de última generación que se integra perfectamente con ComfyUI para revolucionar las transformaciones faciales, la sincronización de labios, la generación de videos, la clonación de voz, el intercambio de rostros y la traducción de sincronización de labios. Aprovechando algoritmos avanzados, DeepFuze permite a los usuarios combinar audio y vídeo con un realismo incomparable, asegurando movimientos faciales perfectamente sincronizados. Esta solución innovadora es ideal para creadores de contenido, animadores, desarrolladores y cualquiera que busque mejorar sus proyectos de edición de video con funciones sofisticadas impulsadas por IA.
Debe instalar Visual Studio, funciona con la versión comunitaria O VS C++ Build Tools y seleccionar "Desarrollo de escritorio con C++" en "Cargas de trabajo -> Escritorio y dispositivos móviles".
Desde ComfyUI-Manager busque DeepFuze e instale el nodo. Reinicie su ComfyUI y mire la ventana de su terminal para asegurarse de que no haya ningún error, o instale desde el administrador de ComfyUI, seleccione "Instalar mediante URL de GIT" y copie:
https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Reinicie su ComfyUI
ENLACE DE YOUTUBE instrucciones paso a paso
Instale Nvidia CUDA Toolkit==11.8 y cuDNN (CUDA Deep Neural Network) para aprendizaje profundo. Debe descargar la versión 8.9.2.26 de cuDNN del archivo NVIDIA DEVELOPER cuDNN. Si no tiene una cuenta de desarrollador, puede descargarla directamente desde GoogleDrive. . Asegúrese de instalar Cuda1 1.8 . Este vídeo de YOUTUBE me resultó útil para la instalación. Si tiene una versión diferente de CUDA, aquí hay un enlace de YOUTUBE que lo guiará sobre cómo desinstalar su CUDA. Asegúrese de crear rutas en su variable de entorno como se describe en el VIDEO DE YOUTUBE. Reinicie su computadora después de crear rutas. Confirme su instalación de Cuda, pegue este código en la ventana de su terminal nvcc --version
y debería obtener una respuesta como esta:
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`
No lo instale a través de ComfyUI-Manager, no funcionará, debe instalarlo manualmente y seguir las instrucciones a continuación:
Activa tu Entorno Virtual, Conda o Venv
Aquí cómo instalar y probar su PyTorch
Este método se ha probado en una Mac M1 y M3. Debe ejecutar el siguiente código en la ventana de su terminal para Mac Metal Performance Shaders (MPS), la solución especializada de Apple para la programación de GPU de alto rendimiento en sus dispositivos. Al integrarse estrechamente con el marco Metal, MPS proporciona un conjunto de sombreadores altamente optimizados para tareas gráficas y informáticas, lo cual es particularmente beneficioso en aplicaciones de aprendizaje automático.
Copie y pegue el siguiente comando en la ventana de su terminal.
export PYTORCH_ENABLE_MPS_FALLBACK=1
Los usuarios de Mac deben INSTALAR la CPU ONNX RUNTIME en lugar de onnxruntime-gpu
pip install onnxruntime
macOS necesita instalar el dlib original.
pip install dlib
Instalar texto a voz para el nodo de clonación de voz
pip install TTS
Navegue a la carpeta custom_nodes
cd custom_nodes
git clone https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Navegue a la carpeta CompfyUI-DeepFuze
e instale el archivo requirements.txt
cd CompfyUI-DeepFuze
pip install -r requirements.txt
Requisitos previos para la clonación de voz y la sincronización labial
A continuación se muestran los dos repositorios de ComfyUI necesarios para cargar vídeo y audio. Instálelos en su carpeta custom_nodes
:
Clonar los repositorios:
cd custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
Error de CV: si encuentra el error "ComfyUI_windows_portableComfyUIoutputdeepfuzefaceswap_file.mp4 no se pudo cargar con cv", significa que onnxruntime
no está instalado. Para solucionar este problema, asegúrese de instalar onnxruntime
para CPU y onnxruntime-gpu
para Windows. Los usuarios de Mac deben actualizar OpenCV usando el comando pip install --upgrade opencv-python-headless
en su entorno virtual. Para usuarios de Windows, vaya a ComfyUI Manager, haga clic en "pip install", pegue --upgrade opencv-python-headless
, haga clic en Aceptar y reinicie su ComfyUI.
Falta el error zlibwapi.dll: busque el archivo NVIDIA zlibwapi.dll, descárguelo y cópielo en C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.8binzlibwapi.dll
Si obtienes un error al instalar TTS, lo más probable es que tengas diferentes versiones de Python, asegúrate de instalar la versión correcta.
Si recibe un error: ImportError: no se puede importar el nombre 'get_full_repo_name' de 'huggingface_hub' Ejecute los siguientes códigos en su terminal y resolverá el problema
conda install chardet
pip install --upgrade transformers==4.39.2
Si recibe algún error para algún paquete, abra el archivo require.txt con cualquier editor de texto, elimine la versión que aparece al principio del nombre del paquete y reinstale requirments.txt nuevamente.
Puede descargar modelos directamente desde GoogleDrive y colocarlos en PATH ./ComfyUI/models/deepfuze/
Asegúrese de descargar manualmente cada modelo uno por uno y colocarlos, debido al tamaño de los modelos, algunos de los modelos no se descargarán si descarga la carpeta que prepara las variables ambientales, navega a su carpeta custom_nodes y realiza git clone o descarga manualmente el código y lo extrae en la carpeta custom_nodes.
Para utilizar el nodo "Openai LLM" para diálogos de clonación de voz, necesita una clave API de OpenAI. Puede obtener esta clave y configurarla siguiendo las instrucciones de la guía de inicio rápido para desarrolladores de OpenAI. Tenga en cuenta que el nodo "Openai LLM" no guarda su clave API. Cada vez que cierre el nodo, deberá copiar y pegar manualmente su clave API. También puede agregar la clave API como una variable de entorno usando los siguientes comandos: Para Windows: setx OPENAI_API_KEY "your-api-key-here"
y para Mac: export OPENAI_API_KEY='your-api-key-here'
. La próxima vez que necesite copiar y pegar su clave API en el nodo LLM, puede escribir el siguiente comando en su terminal: echo $OPENAI_API_KEY
e imprimirá su clave API, permitiéndole copiarla y pegarla en su Openai LLM. nodo.
Este nodo genera videos de sincronización labial a partir de archivos de video, imagen y audio. Para exportar una calidad superior, la salida de IMAGEN como un lote de imágenes en lugar de un video combinado, puede obtener un tamaño de imagen de calidad de hasta 4k. IMPORTANTE: Debes cargar audio con el nodo "VHS load audio" del nodo VideoHelperSuit.
Tipos de entrada:
images
: Imágenes de cuadros extraídas como tensores de PyTorch.audio
: una instancia de datos de audio cargados.mata_batch
: carga números de lote a través del nodo Meta Batch Manager.Tipos de salida:
IMAGES
: Imágenes de cuadros extraídas como tensores de PyTorch.frame_count
: recuento de fotogramas de salida int.audio
: salida de audio.video_info
: Metadatos de vídeo de salida.Funciones de sincronización de labios de DeepFuze:
enhancer
: puede agregar un potenciador de rostros para mejorar la calidad del video generado a través de la red de restauración de rostros.frame_enhancer
: Puede agregar y mejorar todo el cuadro del video.face_mask_padding_left
: Relleno hacia la izquierda de la cara mientras se sincronizan los labios.face_mask_padding_right
: Relleno a la derecha de la cara mientras se sincronizan los labios.face_mask_padding_bottom
: Relleno hasta la parte inferior de la cara mientras se sincronizan los labios.face_mask_padding_top
: Relleno hasta la parte superior de la cara mientras se sincronizan los labios.device
: [cpu,gpu]frame_rate
: establece la velocidad de fotogramas.loop_count
: cuántas veces adicionales debe repetirse el vídeo.filename_prefix
: nombre de prefijo para el vídeo de salida.pingpong
: Hace que la entrada se reproduzca al revés para crear un bucle limpio.save_output
: Guarda la salida en la carpeta de salida. Este nodo intercambia, mejora y restaura rostros de videos e imágenes. o exporte la salida de IMAGEN de mayor calidad como un lote de imágenes en lugar de un video combinado, puede obtener un tamaño de imagen de calidad de hasta 4k.
Tipos de entrada:
source_images
: Imagen de fotograma extraída como tensores de PyTorch para intercambiar.target_images
: imágenes de cuadros extraídas como tensores de PyTorch para ingresar el video/imagen de origen.mata_batch
: carga números de lote a través del nodo Meta Batch Manager.Tipos de salida:
IMAGES
: Imágenes de cuadros extraídas como tensores de PyTorch.frame_count
: recuento de fotogramas de salida int.audio
: salida de audio.video_info
: Metadatos de vídeo de salida.Funciones de intercambio de caras de DeepFuze:
enhancer
: puede agregar un potenciador de rostros para mejorar la calidad del video generado a través de la red de restauración de rostros.faceswap_model
: puedes seleccionar diferentes modelos para intercambiar.frame_enhancer
: Puede agregar y mejorar todo el cuadro del video.face_detector_model
: Puede seleccionar diferentes modelos para la detección de rostros.face_mask_padding_left
: Relleno hacia la izquierda en la cara mientras se sincronizan los labios.face_mask_padding_right
: Relleno hacia la derecha en la cara mientras se sincronizan los labios.face_mask_padding_bottom
: Relleno hasta la parte inferior de la cara mientras se sincronizan los labios.face_mask_padding_top
: Relleno hasta la parte superior de la cara mientras se sincronizan los labios.device
: [cpu,gpu]frame_rate
: establece la velocidad de fotogramas.loop_count
: cuántas veces adicionales debe repetirse el vídeo.filename_prefix
: nombre de prefijo para el vídeo de salida.pingpong
: Hace que la entrada se reproduzca al revés para crear un bucle limpio.save_output
: Guarda la salida en la carpeta de salida.Tabla de resumen del modelo de detector de rostros (RetinaFace proporciona mayor calidad al incorporar información contextual alrededor del rostro, lo que ayuda a detectar rostros en diversas condiciones, como oclusiones, diferentes escalas y poses.
Característica | YOLOCara | RetinaCara | SCRFD | YuNet |
---|---|---|---|---|
Arquitectura | YOLO de un solo disparo | RetinaNet de una sola etapa | Cascada de una etapa | Ligero personalizado |
Velocidad | muy rapido | Moderado | Rápido | muy rapido |
Exactitud | Bien | muy alto | Alto | Bien |
Robustez | Moderado | muy alto | Alto | Moderado |
Eficiencia computacional | Alto | Moderado | Alto | muy alto |
Casos de uso | Escenas menos complejas en tiempo real. | Necesidades robustas y de alta precisión | Dispositivos móviles/de borde equilibrados | Móvil, integrado, en tiempo real |
Ventajas | Velocidad | Precisión, robustez | Eficiencia, precisión | Ligero, eficiente |
Contras | Compensaciones de precisión | Computacionalmente pesado | No es el más rápido | Menos robusto en escenas complejas |
Idiomas:
La clonación de voz DeepFuze_TTS admite 17 idiomas: inglés (en), español (es), francés (fr), alemán (de), italiano (it), portugués (pt), polaco (pl), turco (tr), ruso (ru). ), holandés (nl), checo (cs), árabe (ar), chino (zh-cn), japonés (ja), húngaro (hu), coreano (ko) hindi (hi).
Este nodo se utiliza para clonar cualquier voz a partir de entradas escritas. El archivo de audio debe durar entre 10 y 15 segundos para obtener mejores resultados y no debe tener mucho ruido. Para evitar cualquier error en la frecuencia de muestreo, cargue audio MP3 y trabaje solo con el nodo AudioScheduler. Estamos trabajando en el desarrollo de un nodo convertidor para resolver este problema.
Tipos de entrada:
audio
: una instancia de datos de audio cargados.text
: Texto para generar el audio de voz clonado.Tipos de salida:
audio
: una instancia de datos de audio cargados.El nodo "LLM Integration" se utiliza para incorporar LLM (Language Model) al proceso de clonación de voz. Puede ingresar su diálogo y configurar parámetros, y los textos generados por IA se emplearán para la clonación de voz. Además, puede utilizar este nodo en lugar de ChatGPT para producir texto de LLM o para hacer cualquier pregunta de la misma manera que lo haría con ChatGPT. Puede ver el resultado de DeepFuze_LLM conectando LLM_RESPONSE al nodo "Mostrar cualquier" de rgtres-comfy. Este nodo también se puede usar para generaciones de mensajes y textos de entrada de cualquier nodo.
Tipos de entrada:
user_query
: escribe tus diálogos.Tipos de salida:
LLM_RESPONSE
: genera textos generados por IA.Características de DeepFuze Openai LLM:
model_name
: Puede seleccionar entre los modelos openai disponibles.api_key
: agregue su clave API. (Su clave API no se guardará, cada vez que utilice este nodo deberá ingresarla manualmente.max_tokens
: es un parámetro que limita la cantidad de tokens en la respuesta de un modelo en las API de OpenAI GPT. Se utiliza en solicitudes realizadas a través de GPT para Sheets y Docs, y en la clase ChatOpenAI(). El valor predeterminado para max_tokens es 4096 tokens, lo que equivale aproximadamente a 3000 palabras.temperature
: controla el nivel de aleatoriedad y creatividad en sus respuestas. Es un hiperparámetro en modelos de lenguaje grande (LLM) que equilibra la creatividad y la coherencia en el texto generado. La configuración de temperatura es siempre un número entre 0 y 1, siendo el valor predeterminado 0,7: 0: produce respuestas muy sencillas, casi deterministas 1: da como resultado respuestas muy variables 0,7: la temperatura predeterminada para ChatGPT.timeout
: configura el tiempo si la solicitud tarda demasiado en completarse y el servidor cierra la conexión.Tipos de entrada:
image
: Proporciona una vista previa del relleno de la máscara facial.Características del acolchado DeepFuze:
face_mask_padding_left
: Relleno hacia la izquierda en la cara mientras se sincronizan los labios.face_mask_padding_right
: Relleno hacia la derecha en la cara mientras se sincronizan los labios.face_mask_padding_bottom
: Relleno hasta la parte inferior de la cara mientras se sincronizan los labios.face_mask_padding_top
: Relleno hasta la parte superior de la cara mientras se sincronizan los labios.Este nodo se utiliza para guardar la salida del nodo "Clonación de voz". Además, puede recortar el audio y reproducirlo.
Tipos de entrada:
audio
: una instancia de datos de audio cargados.Características del acolchado DeepFuze:
METADATA
: Metadatos de Sting.start_time
: Recortando la hora de inicio.end_time
: Recortando la hora de finalización.playback window
: proporciona opciones de reproducción, guardado y velocidad de reproducción.Clonación de voz + Generación de sincronización de labios
Clonación de voz + Generación de sincronización de labios + 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 } " )
Este repositorio no podría haberse completado sin las contribuciones de FaceFusion, InsightFace,SadTalker, Facexlib, GFPGAN, GPEN, Real-ESRGAN, TTS, SSD y wav2lip.
El código DeepFuze fue desarrollado por el Dr. Sam Khoze y su equipo. No dude en utilizar el código de DeepFuze con fines personales, de investigación, académicos y comerciales. Puede crear videos con esta herramienta, pero asegúrese de seguir las leyes locales y utilizarla de manera responsable. Los desarrolladores no serán responsables del mal uso de la herramienta por parte de los usuarios.