DeepFuze é uma ferramenta de aprendizado profundo de última geração que se integra perfeitamente ao ComfyUI para revolucionar transformações faciais, sincronização labial, geração de vídeo, clonagem de voz, troca de rosto e tradução de sincronização labial. Aproveitando algoritmos avançados, o DeepFuze permite aos usuários combinar áudio e vídeo com realismo incomparável, garantindo movimentos faciais perfeitamente sincronizados. Esta solução inovadora é ideal para criadores de conteúdo, animadores, desenvolvedores e qualquer pessoa que queira elevar seus projetos de edição de vídeo com recursos sofisticados baseados em IA.
Você deve instalar o Visual Studio, ele funciona com a versão da comunidade OU VS C++ Build Tools e selecionar "Desenvolvimento de Desktop com C++" em "Workloads -> Desktop & Mobile"
No ComfyUI-Manager, procure DeepFuze e instale o nó. Reinicie seu ComfyUI e observe a janela do terminal para garantir que não há erro ou instale a partir do gerenciador ComfyUI, selecione "Instalar via URL GIT" e copie:
https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Reinicie seu ComfyUI
LINK DO YOUTUBE instruções passo a passo
Instale Nvidia CUDA Toolkit == 11.8 e cuDNN (CUDA Deep Neural Network) para Deep Learning, você deve baixar o cuDNN versão 8.9.2.26 do NVIDIA DEVELOPER cuDNN Archive, se você não tiver uma conta de desenvolvedor, você pode baixá-lo diretamente do GoogleDrive . Certifique-se de instalar o Cuda1 1.8 . Achei este vídeo do YOUTUBE útil para instalação. Se você tiver uma versão diferente do CUDA, aqui está um link do YOUTUBE que o orienta sobre como desinstalar o CUDA. Certifique-se de criar caminhos em sua variável de ambiente conforme descrito em YOUTUBE VIDEO Reinicie seu computador após criar caminhos. Confirme sua instalação do Cuda, cole este código na janela do seu terminal nvcc --version
você deverá obter uma resposta 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`
Não instalar via ComfyUI-Manager não funcionará, você deve instalar manualmente e seguir as instruções abaixo:
Ative seu Ambiente Virtual, Conda ou Venv
Veja como instalar e testar seu PyTorch
Este método foi testado em um Mac M1 e M3. Você deve executar o código abaixo na janela do terminal para Mac Metal Performance Shaders (MPS), a solução especializada da Apple para programação de GPU de alto desempenho em seus dispositivos. Integrando-se estreitamente com a estrutura Metal, o MPS fornece um conjunto de shaders altamente otimizados para tarefas gráficas e de computação, o que é particularmente benéfico em aplicações de aprendizado de máquina.
Copie e cole o comando abaixo na janela do seu terminal.
export PYTORCH_ENABLE_MPS_FALLBACK=1
Os usuários de Mac devem INSTALAR CPU ONNX RUNTIME em vez de onnxruntime-gpu
pip install onnxruntime
O macOS precisa instalar o dlib original.
pip install dlib
Instalar texto em fala para nó de clonagem de voz
pip install TTS
Navegue até a pasta custom_nodes
cd custom_nodes
git clone https://github.com/SamKhoze/CompfyUI-DeepFuze.git
Navegue até a pasta CompfyUI-DeepFuze
e instale o arquivo requirements.txt
cd CompfyUI-DeepFuze
pip install -r requirements.txt
Pré-requisitos para clonagem de voz e sincronização labial
Abaixo estão os dois repositórios ComfyUI necessários para carregar vídeo e áudio. Instale-os em sua pasta custom_nodes
:
Clone os repositórios:
cd custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
Erro CV: Se você encontrar o erro "ComfyUI_windows_portableComfyUIoutputdeepfuzefaceswap_file.mp4 não pôde ser carregado com cv", significa que onnxruntime
não está instalado. Para corrigir isso, certifique-se de instalar onnxruntime
para CPU e onnxruntime-gpu
para Windows. Os usuários de Mac devem atualizar o OpenCV usando o comando pip install --upgrade opencv-python-headless
em seu ambiente virtual. Para usuários do Windows, vá para o ComfyUI Manager, clique em "pip install", cole --upgrade opencv-python-headless
, clique em OK e reinicie o ComfyUI.
Erro zlibwapi.dll ausente: Procure o arquivo NVIDIA zlibwapi.dll, baixe-o e copie-o em C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.8binzlibwapi.dll
Se você receber um erro ao instalar o TTS, provavelmente é porque você tem versões diferentes do Python, certifique-se de instalar a versão correta
Se você receber um erro: ImportError: não é possível importar o nome 'get_full_repo_name' de 'huggingface_hub' Execute os códigos abaixo em seu terminal, isso resolverá o problema
conda install chardet
pip install --upgrade transformers==4.39.2
se você receber algum erro para algum pacote, abra o arquivo requirements.txt com qualquer editor de texto, remova a versão da frente do nome do pacote e reinstale o requirements.txt novamente
Você pode baixar modelos diretamente do GoogleDrive e colocá-los no PATH ./ComfyUI/models/deepfuze/
Certifique-se de baixar manualmente cada modelo, um por um, e colocá-los, devido ao tamanho dos modelos, alguns dos modelos não serão baixados se você baixa a pasta que prepara as variáveis ambientais, navega até sua pasta custom_nodes e git clone ou baixa manualmente o código e extrai-o para a pasta custom_nodes.
Para usar o nó "Openai LLM" para diálogos de clonagem de voz, você precisa de uma chave de API OpenAI. Você pode obter essa chave e configurá-la seguindo as instruções no guia de início rápido do OpenAI Developer. Observe que o nó "Openai LLM" não salva sua chave API. Cada vez que você fechar o nó, precisará copiar e colar manualmente sua chave de API. Você também pode adicionar a chave de API como uma variável de ambiente usando os seguintes comandos: Para Windows: setx OPENAI_API_KEY "your-api-key-here"
e para Mac: export OPENAI_API_KEY='your-api-key-here'
. Na próxima vez que você precisar copiar e colar sua chave de API no nó LLM, você pode digitar o seguinte comando em seu terminal: echo $OPENAI_API_KEY
, e ele imprimirá sua chave de API, permitindo que você copie e cole em seu Openai LLM nó.
Este nó gera vídeo com sincronização labial de arquivos de vídeo, imagem e áudio. Para exportar a saída IMAGE com qualidade superior como um lote de imagens em vez de um vídeo combinado, você pode obter tamanho de imagem com qualidade de até 4k. IMPORTANTE: Você deve carregar o áudio com o nó "VHS load audio" do nó VideoHelperSuit.
Tipos de entrada:
images
: imagens de quadro extraídas como tensores PyTorch.audio
: uma instância de dados de áudio carregados.mata_batch
: carrega números de lote por meio do nó Meta Batch Manager.Tipos de saída:
IMAGES
: Imagens de quadros extraídas como tensores PyTorch.frame_count
: contagem de quadros de saída int.audio
: Saída de áudio.video_info
: saída de metadados de vídeo.Recursos do DeepFuze Lipsync:
enhancer
: você pode adicionar um intensificador de rosto para melhorar a qualidade do vídeo gerado por meio da rede de restauração facial.frame_enhancer
: Você pode adicionar um aprimoramento a todo o quadro do vídeo.face_mask_padding_left
: preenchimento à esquerda do rosto durante a sincronização labial.face_mask_padding_right
: Preenchimento à direita do rosto durante a sincronização labial.face_mask_padding_bottom
: Preenchimento na parte inferior do rosto durante a sincronização labial.face_mask_padding_top
: Preenchimento na parte superior do rosto durante a sincronização labial.device
: [cpu,gpu]frame_rate
: Defina a taxa de quadros.loop_count
: quantas vezes adicionais o vídeo deve ser repetido.filename_prefix
: Nomeação de prefixo para o vídeo de saída.pingpong
: Faz com que a entrada seja reproduzida ao contrário para criar um loop limpo.save_output
: salvando a saída na pasta de saída. Este nó troca, aprimora e restaura faces de vídeo e imagem. ou com qualidade superior, exporte a saída IMAGE como um lote de imagens em vez de um vídeo combinado, você pode obter tamanho de imagem com qualidade de até 4k.
Tipos de entrada:
source_images
: imagem de quadro extraída como tensores PyTorch para troca.target_images
: imagens de quadro extraídas como tensores PyTorch para inserir o vídeo/imagem de origem.mata_batch
: carrega números de lote por meio do nó Meta Batch Manager.Tipos de saída:
IMAGES
: Imagens de quadros extraídas como tensores PyTorch.frame_count
: contagem de quadros de saída int.audio
: Saída de áudio.video_info
: saída de metadados de vídeo.Recursos do DeepFuze FaceSwap:
enhancer
: você pode adicionar um intensificador de rosto para melhorar a qualidade do vídeo gerado por meio da rede de restauração facial.faceswap_model
: Você pode selecionar diferentes modelos para troca.frame_enhancer
: Você pode adicionar um aprimoramento a todo o quadro do vídeo.face_detector_model
: Você pode selecionar diferentes modelos para detecção de rosto.face_mask_padding_left
: Preenchimento para a esquerda no rosto durante a sincronização labial.face_mask_padding_right
: Preenchimento para a direita no rosto durante a sincronização labial.face_mask_padding_bottom
: Preenchimento na parte inferior do rosto durante a sincronização labial.face_mask_padding_top
: Preenchimento na parte superior do rosto durante a sincronização labial.device
: [cpu,gpu]frame_rate
: Defina a taxa de quadros.loop_count
: quantas vezes adicionais o vídeo deve ser repetido.filename_prefix
: Nomeação de prefixo para o vídeo de saída.pingpong
: Faz com que a entrada seja reproduzida ao contrário para criar um loop limpo.save_output
: salvando a saída na pasta de saída.Tabela de resumo do modelo de detector de rosto (RetinaFace oferece maior qualidade ao incorporar informações contextuais ao redor do rosto, o que ajuda na detecção de rostos sob diversas condições, como oclusões, diferentes escalas e poses.
Recurso | YOLOFace | RetinaFace | SCRFD | YuNet |
---|---|---|---|---|
Arquitetura | YOLO de tiro único | RetinaNet de estágio único | Cascata de estágio único | Personalizado leve |
Velocidade | Muito rápido | Moderado | Rápido | Muito rápido |
Precisão | Bom | Muito alto | Alto | Bom |
Robustez | Moderado | Muito alto | Alto | Moderado |
Eficiência Computacional | Alto | Moderado | Alto | Muito alto |
Casos de uso | Cenas menos complexas em tempo real | Necessidades robustas e de alta precisão | Dispositivos balanceados, móveis/de borda | Móvel, integrado, em tempo real |
Prós | Velocidade | Precisão, robustez | Eficiência, precisão | Leve, eficiente |
Contras | Compensações de precisão | Computacionalmente pesado | Não é o mais rápido | Menos robusto em cenas complexas |
Idiomas:
A clonagem de voz DeepFuze_TTS suporta 17 idiomas: inglês (en), espanhol (es), francês (fr), alemão (de), italiano (it), português (pt), polonês (pl), turco (tr), russo (ru ), Holandês (nl), Tcheco (cs), Árabe (ar), Chinês (zh-cn), Japonês (ja), Húngaro (hu), Coreano (ko) Hindi (hi).
Este nó é usado para clonar qualquer voz da entrada digitada. O arquivo de áudio deve ter de 10 a 15 segundos de duração para melhores resultados e não deve ter muito ruído. Para evitar qualquer erro de taxa de amostragem, carregue o áudio MP3 e trabalhe apenas com o nó AudioScheduler. Estamos trabalhando no desenvolvimento de um nó conversor para resolver esse problema.
Tipos de entrada:
audio
: uma instância de dados de áudio carregados.text
: Texto para gerar o áudio da voz clonada.Tipos de saída:
audio
: uma instância de dados de áudio carregados.O nó "LLM Integration" é usado para incorporar LLM (Language Model) no processo de clonagem de voz. Você pode inserir seu diálogo e configurar parâmetros, e os textos gerados por IA serão empregados para clonagem de voz. Além disso, você pode utilizar este nó no lugar do ChatGPT para produzir texto do LLM ou para fazer perguntas da mesma maneira que faria com o ChatGPT. Você pode visualizar a saída do DeepFuze_LLM conectando o LLM_RESPONSE ao nó "Display Any" de rgtwo-comfy. Este nó também pode ser usado para gerações de prompt e quaisquer textos de entrada de nós.
Tipos de entrada:
user_query
: Digite seus diálogos.Tipos de saída:
LLM_RESPONSE
: Produz textos gerados por IA.Recursos do DeepFuze Openai LLM:
model_name
: você pode selecionar um dos modelos openai disponíveis.api_key
: adicione sua chave de API. (Sua chave API não será salva, cada vez que você usar este nó você deverá inseri-la manualmente.max_tokens
: é um parâmetro que limita o número de tokens na resposta de um modelo em APIs OpenAI GPT. É usado em solicitações feitas por meio do GPT para Planilhas e Documentos e na classe ChatOpenAI(). O valor padrão para max_tokens é 4.096 tokens, o que equivale aproximadamente a 3.000 palavras.temperature
: controla o nível de aleatoriedade e criatividade em suas respostas. É um hiperparâmetro em Large Language Models (LLMs) que equilibra criatividade e coerência no texto gerado. A configuração de temperatura é sempre um número entre 0 e 1, com o padrão sendo 0,7: 0: Produz respostas muito diretas, quase determinísticas 1: Resulta em respostas muito variadas 0,7: A temperatura padrão para ChatGPT.timeout
: configure o tempo caso a solicitação demore muito para ser concluída e o servidor feche a conexão.Tipos de entrada:
image
: fornece uma visualização do preenchimento da máscara facial.Recursos de preenchimento do DeepFuze:
face_mask_padding_left
: Preenchimento para a esquerda no rosto durante a sincronização labial.face_mask_padding_right
: Preenchimento para a direita no rosto durante a sincronização labial.face_mask_padding_bottom
: Preenchimento na parte inferior do rosto durante a sincronização labial.face_mask_padding_top
: Preenchimento na parte superior do rosto durante a sincronização labial.Este nó é usado para salvar a saída do nó "Voice Cloning". Além disso, você pode cortar o áudio e reproduzi-lo.
Tipos de entrada:
audio
: uma instância de dados de áudio carregados.Recursos de preenchimento do DeepFuze:
METADATA
: Metadados Sting.start_time
: cortando a hora de início.end_time
: cortando o horário de término.playback window
: fornece opções de reprodução, salvamento e velocidade de reprodução.Clonagem de voz + geração de sincronização labial
Clonagem de voz + geração de sincronização labial + 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 repositório não poderia ter sido concluído sem as contribuições de FaceFusion, InsightFace, SadTalker, Facexlib, GFPGAN, GPEN, Real-ESRGAN, TTS, SSD e wav2lip,
O código DeepFuze foi desenvolvido pelo Dr. Sam Khoze e sua equipe. Sinta-se à vontade para usar o código DeepFuze para fins pessoais, de pesquisa, acadêmicos e comerciais. Você pode criar vídeos com esta ferramenta, mas siga as leis locais e use-as com responsabilidade. Os desenvolvedores não serão responsáveis por qualquer uso indevido da ferramenta pelos usuários.