Nodes/ComfyUI-F5-TTS-TH/🎤 F5-TTS-Advance TH 🇹🇭
ComfyUI Node

🎤 F5-TTS-Advance TH 🇹🇭

Thai TTS in ComfyUI that clones a voice from a five-second clip

By gordon123·Created about a year ago·Updated 9 days ago· 14
🎤 F5-TTS-Advance TH 🇹🇭
  • sample_audio
  • remove_silence
  • audio
  • text
sample_textText of sample_audio
textสวัสดีครับ
model_pathVIZINTZOR/F5-TTS-THAI/model/model_1000000.pt
seed-1
speed1.0
cross_fade_duration0.15
nfe_step32
cfg_strength2.0
sway_sampling_coef-1.0
fix_duration0.0
max_chars250

So you've got a ComfyUI pipeline that makes video, and now it needs to talk. Not in English - in Thai, in a specific person's voice. That's exactly what this node is for: F5-TTS-Advance TH wraps the F5-TTS voice-cloning model fine-tuned for Thai, and it does the whole job inside ComfyUI. No API, no key, no ElevenLabs bill. Just a reference clip, some text, and out comes speech.

If you've met F5-TTS before, you know the deal: it's SWivid's non-autoregressive flow-matching TTS, and in the open voice-cloning world it's the fast corner - under two seconds on a 4090, comfortable on ~8GB. Chatterbox beats it on fidelity and gets the MIT license; F5-TTS's weights are CC-BY-NC-4.0, so keep it out of anything you sell. But for Thai specifically there isn't a real alternative in the ecosystem, which is the whole reason this pack exists.

How it works

The node loads a DiT model plus the Vocos vocoder (that's where the "speech" actually gets turned into audio), then runs zero-shot cloning: you feed it a short clip of a voice via sample_audio and the node learns the voice from that reference - no per-voice training. There's Thai-specific text handling you don't see, and it's worth knowing: your input runs through an English→Thai transliterator, a number-to-Thai-words pass, and a Thai repeat-de-dup, so you can type English words and get Thai pronunciation back. The cleaned text is what actually gets spoken, and the node hands it back to you.

The model is auto-downloaded from HuggingFace - it watches VIZINTZOR/F5-TTS-THAI and Muscari/F5-TTS-TH_Finetuned, and model_path defaults to VIZINTZOR/F5-TTS-THAI/model/model_1000000.pt. The first run will pull it and the vocab, so give it a minute.

The inputs that matter

The required set is where 90% of beginners live:

  • sample_audio + sample_text - your voice reference. A few seconds of clean, one-person audio; the text field should be exactly what's said in it.
  • text - what you want spoken (multiline, Thai or English-to-Thai).
  • model_path - the HF path above. Change it only if you're swapping to a different Thai fine-tune.
  • seed - -1 means random; set it to anything else for a repeatable take.

The optional dials are mostly F5-TTS's native sampling controls, and you can ignore them for a while. The two worth touching early: speed (0.1–5.0, a nice way to fix pacing) and max_chars (default 250). Long inputs are where F5-TTS gets weird - output degrades, sometimes into mush - so this splits the text into chunks internally. If a long paragraph comes out garbage, the fix is usually shorter text, not louder CFG. cfg_strength, sway_sampling_coef, and nfe_step are the quality/speed knobs if you want to dig in; remove_silence (default on) trims the dead air; fix_duration pins the clip length.

Outputs

Two: audio (AUDIO) and text (STRING). Wire the audio into the pack's own SaveAudioAndText node, a preview node, or any AUDIO consumer - VHS video, a lip-sync step, whatever comes next. The text output is the cleaned string the model actually read, which is handy if you want the subtitle to match the pronunciation.

Installing it

The README is blunt about Manager: it "doesn't like to update," so when in doubt, install manually.

cd ComfyUI/custom_nodes
git clone https://github.com/gordon123/ComfyUI-F5-TTS-TH.git
cd ComfyUI-F5-TTS-TH

# The critical step - this pack ships F5-TTS as a git submodule
git submodule update --init --recursive

apt-get update
apt-get install -y gfortran libopenblas-dev liblapack-dev ffmpeg
pip install -r requirements.txt

Then restart ComfyUI and look for the 🇹🇭 Thai TTS category. If you must use Manager, search "F5-TTS-TH" - but check that the submodule landed.

Common issues

  • "No module named 'f5_tts'" or "Submodule initialization failed" - the classic. Manager and container installs often skip submodules. Fix it from the node folder with git submodule update --init --recursive, then pip install -e submodules/F5TTS-on-Pod, and restart.
  • Compile errors during pip install -r requirements.txt - usually missing BLAS/LAPACK dev headers; the apt-get install gfortran libopenblas-dev liblapack-dev line above is the fix.
  • opencv/numpy conflict - the pack pins numpy<2.0 and opencv-python-headless<4.10 for a reason; if you see the numpy 2.0 error, pip install "opencv-python-headless<4.10" sorts it.
  • Whining or echoed output - your reference clip is probably too long or noisy. Keep the sample to a few seconds of one clean speaker.

Remember the license: the weights are non-commercial. This is a great node for hobby projects, character voices, and Thai narration - just don't build the paid product on it.

Category🇹🇭 Thai TTS

Inputs (13)

NameTypeDefaultDescription
sample_audioAUDIO
sample_textSTRINGText of sample_audio
textSTRINGสวัสดีครับ
model_pathSTRINGVIZINTZOR/F5-TTS-THAI/model/model_1000000.pt
seedINT-1
remove_silenceoptBOOLtrue
speedoptFLOAT1.00.1–5
cross_fade_durationoptFLOAT0.150–1
nfe_stepoptINT321–128
cfg_strengthoptFLOAT2.00–10
sway_sampling_coefoptFLOAT-1.0-5–5
fix_durationoptFLOAT0.00–30
max_charsoptINT2501–2000

Outputs (2)

NameTypeDescription
audioAUDIO
textSTRING