Nodes/FireRedTTS3/FireRedTTS3 Voice Clone
ComfyUI Node

FireRedTTS3 Voice Clone

Paste text, drop a reference clip

By Saganaki22·Created about a month ago·Updated 27 days ago· 23
FireRedTTS3 Voice Clone
  • firered_model
  • prompt_audio
  • audio
textHello! This is FireRedTTS3 running natively inside ComfyUI.
prompt_text
languageauto
n_timesteps10
inference_cfg2.00
stop_threshold0.50
seed42
max_audio_seconds64
do_tntrue
do_splittrue
cross_fade_ms50

This is the node people install the pack for. You feed it a short, clean clip of someone speaking, type whatever you want them to say, and out comes a AUDIO socket with new speech in their voice - no fine-tuning, no training data collection, just a reference clip and a few seconds of generation. In the local-TTS corner this is the same pitch as Chatterbox and F5-TTS, but FireRedTTS3's selling point is the language reach: 24 languages and 21 Chinese dialects via explicit tags, with an auto mode that runs FastText language detection if you don't want to pick.

The mechanism is zero-shot cloning, not a copy-paste of the clip. The model extracts a speaker representation from your reference audio with the CAM++ encoder, then conditions a flow-matching DiT head (10 timesteps by default) on your text and that speaker embedding. Everything runs in-process - the Qwen3 backbone and RedAE codec never leave ComfyUI, and the pack makes no external API calls.

Here's what you actually set. Three inputs do 90% of the work:

  • text - what to synthesize. Long text auto-splits into sentences and cross-fades the segments together (do_split on, 50 ms cross_fade_ms), so you can paste a whole paragraph without thinking about it.
  • prompt_audio - the reference clip. Clean speech, little noise, 5–20 seconds. Longer is not better; the README warns clips over ~655 s are rejected outright, and the sweet spot is short and clean.
  • prompt_text - the exact transcript of that clip. It's empty by default, and here's the thing worth knowing: this field materially improves cloning quality. Right-click the node, convert prompt_text to an input, and wire it from the pack's Whisper Transcribe node - it exists to do exactly this job.

Then language. Match it to your prompt audio for best results; auto works but is weaker when fasttext-predict and lid.176.ftz aren't installed, and the README's own fix for a language that auto-detects badly is to just set it explicitly.

The generation controls are the official FireRedTTS3 defaults and you mostly shouldn't touch them: n_timesteps 10, inference_cfg 2.0 (classifier-free guidance for the flow head; 0 disables it), stop_threshold 0.5, max_audio_seconds 64 (the model's hard ceiling per sentence). seed 42 is repeatable; set 0 for random. The two frontend toggles, do_tn and do_split, normalize numbers/dates/units to spoken form (Chinese and English via local wetext) and sentence-split long text - leave both on.

Output is audio, standard ComfyUI AUDIO. Save it with a VHS or PreviewAudio-style node, or feed it straight into an audio-driven talking-head workflow downstream - this is the voice-generation step of exactly the Chatterbox-style pipelines in the KB's audio essay, just with a different engine.

Which variant you loaded matters here. With the base model, cloning works across all 24 languages plus dialects via the language tag. With instruct, cloning is reliable for Chinese and English, usable for Cantonese with a same-language reference, and shaky beyond - so if your target isn't zh/en/cantonese, load base.

Gotchas worth knowing before you hit generate. The pack's one honest caveat is repeated in the README: cloning inherits the reference's speaking style and language, so a Greek reference + Greek text collapses with the instruct variant. The other is etiquette, not engineering - FireRedTTS3 is Apache-2.0 for research, and voice cloning without consent is the misuse axis this whole corner of TTS carries. Clone your own voice, or voices you've got permission for, and keep the research framing in mind.

Installing is the pack-wide story: ComfyUI Manager search "FireRedTTS3-ComfyUI", or git clone https://github.com/Saganaki22/FireRedTTS3-ComfyUI into custom_nodes and run python install.py (pip or uv, never touches torch). Needs Transformers 5.3+, and expect a multi-gigabyte auto-download on first load plus roughly 8–14 GB VRAM. The payoff is one of the few genuinely multilingual open cloning pipelines that runs start-to-finish on your own GPU.

CategoryFireRedTTS3

Inputs (13)

NameTypeDefaultDescription
firered_modelFIREREDTTS3_MODEL
textSTRINGHello! This is FireRedTTS3 running natively inside ComfyUI.Text to synthesize. Long text is split into sentences automatically when do_split is on.
prompt_audioAUDIOReference voice clip for zero-shot cloning. Clean speech with little noise works best.
prompt_textSTRINGExact transcript of the reference clip. Strongly improves cloning quality.
languageCOMBOautoLanguage or Chinese dialect tag. auto uses FastText (24 languages) with zh/ja/en heuristic fallback. For best cloning, match the prompt audio language.
n_timestepsINT101–50Flow-matching steps per generated audio patch. 10 is the official default; more is slower with diminishing returns.
inference_cfgFLOAT2.000–4Classifier-free guidance strength for the flow head. 0 disables CFG. Official defaults: 2.0 for cloning, 1.2 for design/edits.
stop_thresholdFLOAT0.500.05–0.95Stop-token probability threshold that ends generation. Higher values allow longer audio.
seedINT420–21474836470 uses the current random state. A positive value is repeatable.
max_audio_secondsFLOAT644–160Hard cap on generated audio length per sentence (64s is the official maximum).
do_tnBOOLEANtrueRun text normalization (numbers, dates, units to spoken form). Chinese/English use local wetext; other languages get basic cleaning.
do_splitBOOLEANtrueSplit long text into sentences and generate them one by one (cross-faded together).
cross_fade_msFLOAT500–500Cross-fade between sentence segments in milliseconds.

Outputs (1)

NameTypeDescription
audioAUDIO