How aifsh/comfyui-xtts works
ComfyUI-XTTS adds a ComfyUI node for multilingual XTTS synthesis and voice cloning. The user supplies text and reference audio, optionally with SRT subtitles for multi-speaker output; the node produces audio that can be previewed or saved. The README documents 17-language support and subtitle-based speaker handling. The node implementation is not sampled, so its precise calls and how uploads reach synthesis are uncertain; the graph shows the documented workflow and imports visible in the XTTS model source.
Main entry points: xtts.py XTTS synthesis · nodes.py XTTS node · uploadAudio.js Reference audio upload · uploadSRT.js SRT upload
Components 11
ComfyUI interface
- Reference audio upload
web/js/uploadAudio.js - SRT upload
web/js/uploadSRT.js - Audio preview
web/js/previewAudio.js
Synthesis workflow
- XTTS node
nodes.py
XTTS model
- XTTS synthesis
TTS/tts/models/xtts.py - Text tokenizer
TTS/tts/layers/xtts/tokenizer.py - Autoregressive GPT
TTS/tts/layers/xtts/gpt.py - Audio decoder
TTS/tts/layers/xtts/hifigan_decoder.py - Speaker and language managers
TTS/tts/layers/xtts/xtts_manager.py
Other components
- ComfyUI user
- Generated audio
Connections 13
- ComfyUI user → Reference audio upload: selects audio
- ComfyUI user → SRT upload: selects subtitles
- ComfyUI user → XTTS node: provides text and options
- Reference audio upload → XTTS node: supplies reference
- SRT upload → XTTS node: supplies subtitles
- XTTS node → XTTS synthesis: invokes synthesis
- XTTS synthesis → Text tokenizer: tokenizes text
- XTTS synthesis → Autoregressive GPT: generates tokens
- XTTS synthesis → Audio decoder: decodes audio
- XTTS synthesis → Speaker and language managers: uses speaker and language data
- XTTS synthesis → XTTS node: returns generated audio
- XTTS node → Audio preview: exposes audio
- Audio preview → Generated audio: previews or saves