DeepFuze는 ComfyUI와 원활하게 통합되어 얼굴 변형, 립싱크, 비디오 생성, 음성 복제, 얼굴 교환 및 립싱크 번역에 혁명을 일으키는 최첨단 딥 러닝 도구입니다. DeepFuze는 고급 알고리즘을 활용하여 사용자가 비교할 수 없는 현실감으로 오디오와 비디오를 결합하여 완벽하게 동기화된 얼굴 움직임을 보장할 수 있도록 해줍니다. 이 혁신적인 솔루션은 콘텐츠 제작자, 애니메이터, 개발자 및 정교한 AI 기반 기능으로 비디오 편집 프로젝트를 향상시키려는 모든 사람에게 이상적입니다.
Visual Studio를 설치해야 합니다. 커뮤니티 버전 또는 VS C++ 빌드 도구에서 작동하고 "워크로드 -> 데스크톱 및 모바일"에서 "C++를 사용한 데스크톱 개발"을 선택하세요.
ComfyUI-Manager에서 DeepFuze를 검색하고 노드를 설치합니다. ComfyUI를 다시 시작하고 터미널 창을 확인하여 오류가 없는지 확인하거나 ComfyUI 관리자에서 설치하고 "GIT URL을 통해 설치"를 선택한 후 다음을 복사하세요.
https://github.com/SamKhoze/CompfyUI-DeepFuze.git
ComfyUI를 다시 시작하세요
YOUTUBE LINK 단계별 지침
딥 러닝을 위한 Nvidia CUDA Toolkit==11.8 및 cuDNN(CUDA Deep Neural Network)을 설치하려면 NVIDIA DEVELOPER cuDNN Archive에서 cuDNN 버전 8.9.2.26 을 다운로드해야 합니다. 개발자 계정이 없는 경우 GoogleDrive에서 직접 다운로드할 수 있습니다. . Cuda1 1.8을 설치했는지 확인하세요. 이 YOUTUBE 비디오가 설치에 유용하다고 생각했습니다. 다른 버전의 CUDA가 있는 경우 CUDA를 제거하는 방법을 안내하는 YOUTUBE 링크가 있습니다. YOUTUBE VIDEO에 설명된 대로 환경 변수에 경로를 생성했는지 확인하세요. 경로를 생성한 후 컴퓨터를 다시 시작하세요. Cuda 설치를 확인하고 이 코드를 터미널 창 nvcc --version
에 붙여넣으면 다음과 같은 응답을 받게 됩니다.
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`
ComfyUI-Manager를 통해 설치하지 마십시오. 작동하지 않습니다. 수동으로 설치하고 아래 지침을 따라야 합니다.
가상 환경, Conda 또는 Venv 활성화
PyTorch를 설치하고 테스트하는 방법은 다음과 같습니다.
이 방법은 M1 및 M3 Mac에서 테스트되었습니다. Mac MPS(Metal Performance Shaders) 장치의 고성능 GPU 프로그래밍을 위한 Apple의 전문 솔루션에 대한 터미널 창에서 아래 코드를 실행해야 합니다. Metal 프레임워크와 긴밀하게 통합된 MPS는 그래픽 및 컴퓨팅 작업에 고도로 최적화된 셰이더 제품군을 제공하며 이는 기계 학습 애플리케이션에 특히 유용합니다.
아래 명령을 복사하여 터미널 창에 붙여넣으세요.
export PYTORCH_ENABLE_MPS_FALLBACK=1
Mac 사용자는 onnxruntime-gpu 대신 ONNX RUNTIME CPU를 설치해야 합니다.
pip install onnxruntime
macOS에서는 원본 dlib를 설치해야 합니다.
pip install dlib
음성 복제 노드를 위한 텍스트 음성 변환 설치
pip install TTS
custom_nodes
폴더 로 이동합니다 .
cd custom_nodes
git clone https://github.com/SamKhoze/CompfyUI-DeepFuze.git
CompfyUI-DeepFuze
폴더 로 이동하여 requirements.txt
파일을 설치합니다.
cd CompfyUI-DeepFuze
pip install -r requirements.txt
음성 복제 및 립싱크를 위한 전제 조건
다음은 비디오와 오디오를 로드하는 데 필요한 두 개의 ComfyUI 저장소입니다. custom_nodes
폴더에 설치하세요:
저장소를 복제합니다.
cd custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
CV 오류: "ComfyUI_windows_portableComfyUIoutputdeepfuzefaceswap_file.mp4를 cv와 함께 로드할 수 없습니다."라는 오류가 발생하는 경우 onnxruntime
이 설치되지 않았음을 의미합니다. 이 문제를 해결하려면 CPU용 onnxruntime
과 Windows용 onnxruntime-gpu
설치해야 합니다. Mac 사용자는 가상 환경에서 pip install --upgrade opencv-python-headless
명령을 사용하여 OpenCV를 업그레이드해야 합니다. Windows 사용자의 경우 ComfyUI 관리자로 이동하여 "pip install"을 클릭하고 --upgrade opencv-python-headless
붙여 넣은 다음 확인을 클릭하고 ComfyUI를 다시 시작하세요.
누락된 zlibwapi.dll 오류: NVIDIA zlibwapi.dll 파일을 검색하여 다운로드하고 C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.8binzlibwapi.dll에 복사합니다.
TTS 설치 중 오류가 발생하는 경우 Python 버전이 다르기 때문일 가능성이 높습니다. 올바른 버전을 설치했는지 확인하세요.
오류가 발생하는 경우: ImportError: 'huggingface_hub'에서 'get_full_repo_name' 이름을 가져올 수 없습니다. 터미널에서 아래 코드를 실행하면 문제가 해결됩니다.
conda install chardet
pip install --upgrade transformers==4.39.2
패키지에 대해 오류가 발생하면 텍스트 편집기로 요구사항.txt 파일을 열고 패키지 이름 앞부분의 버전을 제거한 다음 requirments.txt를 다시 설치하십시오.
GoogleDrive에서 직접 모델을 다운로드하고 PATH ./ComfyUI/models/deepfuze/
에 배치할 수 있습니다. 모델의 크기로 인해 일부 모델은 다음과 같은 경우 다운로드되지 않으므로 각 모델을 하나씩 수동으로 다운로드하여 배치해야 합니다. 환경 변수를 준비하는 폴더를 다운로드하고 custom_nodes 폴더로 이동하여 git clone을 하거나 수동으로 코드를 다운로드하여 custom_nodes 폴더에 추출합니다.
음성 복제 대화에 "Openai LLM" 노드를 사용하려면 OpenAI API 키가 필요합니다. OpenAI 개발자 빠른 시작 가이드의 지침에 따라 이 키를 얻고 설정할 수 있습니다. "Openai LLM" 노드는 API 키를 저장하지 않습니다. 노드를 닫을 때마다 API 키를 수동으로 복사하여 붙여넣어야 합니다. 다음 명령을 사용하여 API 키를 환경 변수로 추가할 수도 있습니다. Windows의 경우: setx OPENAI_API_KEY "your-api-key-here"
, Mac의 경우: export OPENAI_API_KEY='your-api-key-here'
. 다음에 API 키를 LLM 노드에 복사하여 붙여넣어야 할 때 터미널에 echo $OPENAI_API_KEY
명령을 입력하면 API 키가 인쇄되어 Openai LLM에 복사하여 붙여넣을 수 있습니다. 마디.
이 노드는 비디오, 이미지 및 오디오 파일에서 립싱크 비디오를 생성합니다. 더 높은 품질의 IMAGE 출력을 결합된 비디오 대신 이미지 배치로 내보내려면 최대 4K 품질의 이미지 크기를 얻을 수 있습니다. 중요: VideoHelperSuit 노드에서 "VHS 오디오 로드" 노드를 사용하여 오디오를 로드해야 합니다.
입력 유형:
images
: PyTorch 텐서로 추출된 프레임 이미지입니다.audio
: 로드된 오디오 데이터의 인스턴스입니다.mata_batch
: Meta Batch Manager 노드를 통해 배치 번호를 로드합니다.출력 유형:
IMAGES
: 프레임 이미지를 PyTorch 텐서로 추출했습니다.frame_count
: 출력 프레임 수 int.audio
: 오디오를 출력합니다.video_info
: 비디오 메타데이터를 출력합니다.DeepFuze 립싱크 기능:
enhancer
: 얼굴 복원 네트워크를 통해 생성된 비디오의 품질을 향상시키기 위해 얼굴 강화 기능을 추가할 수 있습니다.frame_enhancer
: 비디오의 전체 프레임을 강화할 수 있습니다.face_mask_padding_left
: 립싱크하는 동안 얼굴 왼쪽에 패딩을 적용합니다.face_mask_padding_right
: 립싱크하는 동안 얼굴 오른쪽에 패딩을 적용합니다.face_mask_padding_bottom
: 립싱크하는 동안 얼굴 아래쪽에 패딩을 적용합니다.face_mask_padding_top
: 립싱크하는 동안 얼굴 상단에 패딩을 적용합니다.device
: [cpu,gpu]frame_rate
: 프레임 속도를 설정합니다.loop_count
: 동영상이 반복되어야 하는 추가 횟수입니다.filename_prefix
: 출력 비디오의 접두사 이름 지정입니다.pingpong
: 입력을 역방향으로 재생하여 깨끗한 루프를 생성합니다.save_output
: 출력 폴더에 출력을 저장합니다. 이 노드는 비디오 및 이미지에서 얼굴을 교환, 향상 및 복원합니다. 또는 더 높은 품질의 이미지 출력을 결합된 비디오 대신 이미지 배치로 내보내면 최대 4K 품질의 이미지 크기를 얻을 수 있습니다.
입력 유형:
source_images
: 교환을 위해 PyTorch 텐서로 추출된 프레임 이미지입니다.target_images
: 소스 비디오/이미지를 입력하기 위해 PyTorch 텐서로 프레임 이미지를 추출합니다.mata_batch
: Meta Batch Manager 노드를 통해 배치 번호를 로드합니다.출력 유형:
IMAGES
: 프레임 이미지를 PyTorch 텐서로 추출했습니다.frame_count
: 출력 프레임 수 int.audio
: 오디오를 출력합니다.video_info
: 비디오 메타데이터를 출력합니다.DeepFuze FaceSwap 기능:
enhancer
: 얼굴 복원 네트워크를 통해 생성된 비디오의 품질을 향상시키기 위해 얼굴 강화 기능을 추가할 수 있습니다.faceswap_model
: 교체할 다른 모델을 선택할 수 있습니다.frame_enhancer
: 비디오의 전체 프레임을 강화할 수 있습니다.face_detector_model
: 얼굴 감지를 위해 다양한 모델을 선택할 수 있습니다.face_mask_padding_left
: 립싱크하는 동안 얼굴 왼쪽에 패딩을 적용합니다.face_mask_padding_right
: 립싱크하는 동안 얼굴 오른쪽에 패딩을 적용합니다.face_mask_padding_bottom
: 립싱크 시 얼굴 아래쪽 패딩입니다.face_mask_padding_top
: 립싱크 시 얼굴 윗부분을 패딩합니다.device
: [cpu,gpu]frame_rate
: 프레임 속도를 설정합니다.loop_count
: 동영상이 반복되어야 하는 추가 횟수입니다.filename_prefix
: 출력 비디오의 접두사 이름 지정입니다.pingpong
: 입력을 역방향으로 재생하여 깨끗한 루프를 생성합니다.save_output
: 출력 폴더에 출력을 저장합니다.얼굴 감지기 모델 요약 테이블 (RetinaFace는 얼굴 주위의 상황별 정보를 통합하여 더 높은 품질을 제공하며, 이는 폐색, 다양한 크기, 포즈 등 다양한 조건에서 얼굴을 감지하는 데 도움이 됩니다.
특징 | 욜로페이스 | 망막얼굴 | SCRFD | 유넷 |
---|---|---|---|---|
건축학 | 싱글샷 YOLO | 단일 스테이지 RetinaNet | 단일 스테이지 캐스케이드 | 경량 맞춤 |
속도 | 매우 빠름 | 보통의 | 빠른 | 매우 빠름 |
정확성 | 좋은 | 매우 높음 | 높은 | 좋은 |
견고성 | 보통의 | 매우 높음 | 높은 | 보통의 |
계산 효율성 | 높은 | 보통의 | 높은 | 매우 높음 |
사용 사례 | 실시간, 덜 복잡한 장면 | 고정밀, 견고한 요구 사항 | 균형 잡힌 모바일/에지 장치 | 모바일, 임베디드, 실시간 |
장점 | 속도 | 정확성, 견고성 | 효율성, 정확성 | 가볍고 효율적 |
단점 | 정확도 절충 | 계산적으로 무거움 | 가장 빠르지 않음 | 복잡한 장면에서는 덜 견고함 |
언어:
DeepFuze_TTS 음성 복제는 17개 언어를 지원합니다: 영어(en), 스페인어(es), 프랑스어(fr), 독일어(de), 이탈리아어(it), 포르투갈어(pt), 폴란드어(pl), 터키어(tr), 러시아어(ru) ), 네덜란드어(nl), 체코어(cs), 아랍어(ar), 중국어(zh-cn), 일본어(ja), 헝가리어(hu), 한국어(ko) 힌디어(hi).
이 노드는 입력된 입력에서 음성을 복제하는 데 사용됩니다. 더 나은 결과를 얻으려면 오디오 파일의 길이가 10~15초여야 하며 잡음이 많지 않아야 합니다. 샘플링 속도 오류를 방지하려면 MP3 오디오를 로드하고 AudioScheduler 노드에서만 작동하세요. 우리는 이 문제를 해결하기 위해 변환기 노드를 개발하기 위해 노력하고 있습니다.
입력 유형:
audio
: 로드된 오디오 데이터의 인스턴스입니다.text
: 복제된 음성 오디오를 생성할 텍스트입니다.출력 유형:
audio
: 로드된 오디오 데이터의 인스턴스입니다."LLM 통합" 노드는 LLM(언어 모델)을 음성 복제 프로세스에 통합하는 데 사용됩니다. 대화를 입력하고 매개변수를 구성할 수 있으며 AI가 생성한 텍스트가 음성 복제에 사용됩니다. 또한 ChatGPT 대신 이 노드를 활용하여 LLM에서 텍스트를 생성하거나 ChatGPT와 동일한 방식으로 질문을 할 수 있습니다. LLM_RESPONSE를 rg three-comfy의 "Display Any" 노드에 연결하여 DeepFuze_LLM의 출력을 볼 수 있습니다. 이 노드는 프롬프트 생성 및 모든 노드 입력 텍스트에도 사용할 수 있습니다.
입력 유형:
user_query
: 대화를 입력하세요.출력 유형:
LLM_RESPONSE
: AI 생성 텍스트를 출력합니다.DeepFuze Openai LLM 기능:
model_name
: 사용 가능한 openai 모델 중에서 선택할 수 있습니다.api_key
: API 키를 추가합니다. (귀하의 API 키는 저장되지 않으며, 이 노드를 사용할 때마다 수동으로 입력해야 합니다.max_tokens
: OpenAI GPT API에서 모델 응답의 토큰 수를 제한하는 매개변수입니다. Sheets 및 Docs에 대해 GPT를 통해 이루어진 요청과 ChatOpenAI() 클래스에서 사용됩니다. max_tokens의 기본값은 4096개의 토큰이며 이는 대략 3,000단어에 해당합니다.temperature
: 응답의 무작위성과 창의성 수준을 제어합니다. 생성된 텍스트의 창의성과 일관성의 균형을 맞추는 LLM(대형 언어 모델)의 하이퍼 매개변수입니다. 온도 설정은 항상 0과 1 사이의 숫자이며 기본값은 0.7입니다. 0: 매우 간단하고 거의 결정적인 응답을 생성합니다. 1: 매우 다양한 응답을 생성합니다. 0.7: ChatGPT의 기본 온도입니다.timeout
: 요청을 완료하는 데 너무 오랜 시간이 걸려 서버가 연결을 닫는 경우 시간을 설정합니다.입력 유형:
image
: 안면 마스크의 패딩 미리보기를 제공합니다.DeepFuze 패딩 기능:
face_mask_padding_left
: 립싱크하는 동안 얼굴 왼쪽에 패딩을 적용합니다.face_mask_padding_right
: 립싱크하는 동안 얼굴 오른쪽에 패딩을 적용합니다.face_mask_padding_bottom
: 립싱크 시 얼굴 아래쪽 패딩입니다.face_mask_padding_top
: 립싱크 시 얼굴 윗부분을 패딩합니다.이 노드는 "Voice Cloning" 노드의 출력을 저장하는 데 사용됩니다. 또한 오디오를 다듬고 재생할 수도 있습니다.
입력 유형:
audio
: 로드된 오디오 데이터의 인스턴스입니다.DeepFuze 패딩 기능:
METADATA
: Sting 메타데이터.start_time
: 시작 시간을 자릅니다.end_time
: 종료 시간을 자릅니다.playback window
: 재생, 저장, 재생 속도 옵션을 제공합니다.음성 복제 + 립싱크 생성
음성 복제 + 립싱크 생성 + 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 } " )
이 저장소는 FaceFusion, InsightFace,SadTalker, Facexlib, GFPGAN, GPEN, Real-ESRGAN, TTS, SSD 및 wav2lip의 기여 없이는 완료될 수 없었습니다.
DeepFuze 코드는 Sam Khoze 박사와 그의 팀이 개발했습니다. 개인, 연구, 학술 및 상업적 목적으로 DeepFuze 코드를 자유롭게 사용하십시오. 이 도구를 사용하여 동영상을 만들 수 있지만 현지 법률을 준수하고 책임감 있게 사용하시기 바랍니다. 개발자는 사용자가 도구를 오용하는 것에 대해 책임을 지지 않습니다.