Nodes/DeepFuze/DeepFuze TTS
ComfyUI Node

DeepFuze TTS

Clone a voice from a 10-second clip, in 17 languages, no training required

By SamKhoze·Created 2 years ago·Updated about a year ago· 461
DeepFuze TTS
  • audio
  • llm_response
  • AUDIO
text
device
supported_language

This is the node that makes DeepFuze more than a faceswap: it clones a voice. Feed it a short recording of someone talking plus some text, and it hands you back an audio clip of that voice speaking your text - no training, no LoRA, no fine-tuning. Under the hood it's Coqui's XTTS v2, the multilingual model that supports 17 languages (English, Spanish, French, German, Italian, Portuguese, Polish, Turkish, Russian, Dutch, Czech, Arabic, Chinese, Japanese, Hungarian, Korean, Hindi). The classic use is the full voice-cloning loop: DeepFuze LLM writes the dialogue → this node speaks it in the cloned voice → the Lipsync node drives the video's mouth to match.

How it works

The node saves your reference audio to a temp wav, then shells out to the pack's tts_generation.py script with the XTTS model, your text, the reference file as --speaker_wav, and your chosen language and device. XTTS samples the timbre from the reference and synthesizes the new speech to match. The result is read back into ComfyUI's AUDIO format. Two practical consequences: the first run downloads the XTTS weights from HuggingFace (it's a big download, hundreds of MB), and the whole thing needs the TTS Python package installed - the README calls this out explicitly for Mac users (pip install TTS).

Inputs that matter

  • audio (required) - the reference voice. Load it with the VideoHelperSuite "VHS load audio" node, which DeepFuze expects for all audio/video input. The author's advice is worth taking literally: keep the clip 10–15 seconds and low-noise for the best clone.
  • text - the script to speak, multiline. Leave blank if you're feeding an LLM response.
  • llm_response - wire the DeepFuze Openai LLM node's output here. It takes precedence over text, and if both are empty the node raises an error.
  • supported_language - the 17-language dropdown. Match it to what you actually typed.
  • device - cpu / cuda / mps, defaulting to cpu. See the pack's install notes before picking cuda.

The only output is AUDIO. From here you can wire it into DeepFuze Save to keep the file, Play Audio to hear it instantly, or straight into the Lipsync node to animate a face.

Install

Same story as every DeepFuze node - the pack is one install, and this node brings the heaviest extras with it:

  • Windows: ComfyUI Manager → search "DeepFuze" → install → restart. Or clone manually:
    cd ComfyUI/custom_nodes
    git clone https://github.com/SamKhoze/ComfyUI-DeepFuze
    
    then pip install -r requirements.txt in the pack folder. Windows also wants Visual Studio C++ Build Tools, and CUDA is optional - the README is very clear that GPU setup (CUDA 11.8 + cuDNN) is not beginner-friendly and CPU works fine, just slower.
  • Mac: skip Manager, clone manually, and before running set export PYTORCH_ENABLE_MPS_FALLBACK=1, pip install onnxruntime, pip install dlib, pip install TTS.

Troubleshooting

Sample-rate errors are the classic complaint, and the README's own workaround is to load MP3 audio and route it through the AudioScheduler node (a1lazydog/ComfyUI-AudioScheduler) to keep rates consistent. The other two landmines: if pip install TTS errors, you almost certainly have multiple Python installs and it landed in the wrong one; and the old ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' is fixed by pinning transformers==4.39.2. Like the rest of this pack it's unmaintained, so treat "works on the ComfyUI version I installed it on" as the best-case promise.

CategoryDeepFuze

Inputs (5)

NameTypeDefaultDescription
audioAUDIO
llm_responseoptNEW_STRING
textoptSTRING
deviceoptCOMBO3 options: cpu, cuda, mps
supported_languageoptCOMBO17 options: English (en), Spanish (es), French (fr), German (de), Italian (it), Portuguese (pt), +11

Outputs (1)

NameTypeDescription
AUDIOAUDIO