DeepFuze 是一款最先進的深度學習工具,可與 ComfyUI 無縫集成,徹底改變臉部變換、口型同步、視訊生成、語音克隆、面部交換和口型同步翻譯。 DeepFuze 利用先進的演算法,使用戶能夠以無與倫比的真實感將音訊和視訊結合起來,確保臉部動作完美同步。這種創新的解決方案非常適合內容創作者、動畫師、開發人員以及任何尋求透過複雜的人工智慧驅動功能來提升影片編輯專案的人。
您必須安裝 Visual Studio,它可與社群版本或 VS C++ 建置工具配合使用,並在“工作負載 -> 桌面和行動裝置”下選擇“使用 C++ 進行桌面開發”
從 ComfyUI-Manager 中搜尋 DeepFuze,然後安裝節點。重新啟動 ComfyUI,然後查看終端視窗以確保沒有錯誤,或從 ComfyUI 管理員安裝,選擇“透過 GIT URL 安裝”,然後複製過去:
https://github.com/SamKhoze/CompfyUI-DeepFuze.git
重新啟動您的 ComfyUI
YOUTUBE 連結逐步說明
安裝用於深度學習的 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,這裡有一個 YOUTUBE 鏈接,可指導您如何卸載 CUDA。確保按照 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 Metal Performance Shaders (MPS) 的終端機視窗上執行以下程式碼,這是 Apple 在其裝置上進行高效能 GPU 程式設計的專用解決方案。 MPS 與 Metal 框架緊密整合,為圖形和計算任務提供了一套高度優化的著色器,這在機器學習應用程式中特別有益。
將以下命令複製並貼上到終端機視窗。
export PYTORCH_ENABLE_MPS_FALLBACK=1
Mac 用戶必須安裝 ONNX RUNTIME CPU 而不是 onnxruntime-gpu
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 Manager,點擊“pip install”,貼上--upgrade opencv-python-headless
,點擊“確定”,然後重新啟動 ComfyUI。
缺少zlibwapi.dll錯誤:搜尋NVIDIA zlibwapi.dll文件,下載並複製到C:Program FilesNVIDIA GPUComputing ToolkitCUDAv11.8binzlibwapi.dll
如果您安裝 TTS 時出錯,很可能是因為您的 Python 版本不同,請確保安裝正確的版本
如果發生錯誤: ImportError: Cannot import name 'get_full_repo_name' from 'huggingface_hub' 在終端機上執行以下程式碼即可解決問題
conda install chardet
pip install --upgrade transformers==4.39.2
如果任何軟體包出現任何錯誤,請使用任何文字編輯器開啟requirements.txt文件,刪除軟體包名稱前面的版本,然後再次重新安裝requirements.txt
您可以直接從 GoogleDrive 下載模型並將模型放入 PATH ./ComfyUI/models/deepfuze/
確保手動一一下載每個模型並放置它們,由於模型的大小,某些模型將無法下載,如果您下載準備環境變數的資料夾,導航到您的custom_nodes 資料夾並git clone 或手動下載程式碼並將其提取到custom_nodes 資料夾中。
要使用「Openai LLM」節點進行語音複製對話,您需要一個 OpenAI API 金鑰。您可以按照 OpenAI Developer 快速入門指南中的說明取得此金鑰並進行設定。請注意,「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
:透過元批次管理器節點載入批次號。輸出類型:
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
:將輸出儲存在輸出資料夾中。 此節點交換、增強和恢復視訊和影像中的臉部。或者以更高品質將 IMAGE 輸出導出為圖像批次而不是組合視頻,您可以獲得高達 4k 質量的圖像大小。
輸入類型:
source_images
:提取幀影像作為 PyTorch 張量進行交換。target_images
:提取幀影像作為 PyTorch 張量以輸入來源視訊/影像。mata_batch
:透過元批次管理器節點載入批次號。輸出類型:
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 透過合併人臉周圍的上下文資訊來提供更高的質量,這有助於偵測各種條件下的人臉,例如遮蔽、不同尺度和姿勢。
特徵 | YOLOFace | 視網膜臉 | 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 Integration”節點用於將LLM(語言模型)合併到語音克隆過程中。您可以輸入對話並配置參數,人工智慧生成的文字將用於語音克隆。此外,您可以利用此節點代替 ChatGPT,從 LLM 產生文字或以與使用 ChatGPT 相同的方式提出任何問題。您可以透過將 LLM_RESPONSE 連接到 rg Three-comfy 中的「Display Any」節點來查看 DeepFuze_LLM 的輸出,該節點也可用於提示產生和任何節點輸入文字。
輸入類型:
user_query
:輸入您的對話。輸出類型:
LLM_RESPONSE
:輸出 AI 產生的文字。DeepFuze Openai 法學碩士特色:
model_name
:您可以從可用的 openai 模型中進行選擇。api_key
:新增您的 API 金鑰。 (您的API Key不會被儲存,每次使用該節點時都必須手動輸入。max_tokens
:是一個參數,用於限制 OpenAI GPT API 中模型回應中的令牌數量。它用於透過 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
:口型同步時填入臉部頂部。此節點用於保存“語音克隆”節點的輸出。此外,您可以修剪音訊並播放。
輸入類型:
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 程式碼用於個人、研究、學術和商業目的。您可以使用此工具創建視頻,但請確保遵守當地法律並負責任地使用它。開發人員對使用者濫用該工具不承擔任何責任。