Nodes/Higgs v3 TTS/Higgs v3 Generate
ComfyUI Node

Higgs v3 Generate

Plain text to speech in ComfyUI, no reference voice required

By Saganaki22·Created 3 months ago·Updated 4 days ago· 71
Higgs v3 Generate
  • higgs_model
  • audio
textHello! This is Higgs Audio v3 running natively inside ComfyUI.
max_new_tokens2048
temperature1.00
top_p0.95
top_k50
seed0
longform_chunkingtrue
words_per_chunk45
pause_between_chunks0.15

If you just want to type a sentence and get speech out of the Higgs v3 pack, this is the node. Higgs v3 Generate is text-to-speech without any reference audio - no voice cloning, no setup beyond a loaded model. Wire its audio output into a Preview Audio or Save Audio node and you're done. It's the natural starting point before you graduate to cloning, because it also happens to be where you learn how the pack's inline control tags behave.

Mechanically, it's a native generation call against the Higgs bundle from Higgs v3 Load Model: the text becomes audio tokens (about 75 per second of speech), sampled from the model's codebook, then decoded to a ComfyUI AUDIO tensor. The interesting part is longform chunking. Higgs has a finite context and a hard max_new_tokens ceiling, so the node splits long text at sentence and pause boundaries instead of one doomed giant pass. When chunking is on, chunk one becomes the internal voice reference for the rest - that's how a whole narration stays one consistent voice without you supplying any clip. That's a genuinely nice touch.

Inputs that actually matter

  • text - the script. Inline tags work anywhere in it: <|emotion:relief|>, <|prosody:pause|>, <|sfx:laughter|>Haha. This is the whole control surface; there are no separate emotion dropdowns, which takes a minute to get used to.
  • max_new_tokens - 2048 is roughly 25–30 seconds of audio. Raise it or leave chunking on if long text cuts off.
  • temperature / top_p / top_k - defaults of 1.0 / 0.95 / 50 are fine for most things. 0 is greedy and repeatable; 0.8–1.1 reads as natural.
  • seed - 0 uses the current random state; a positive value is reused unchanged for every chunk, which is what makes fixed-seed comparisons meaningful.
  • longform_chunking - keep it on for narration. Off is one direct pass, which can stop early on long text.
  • words_per_chunk - target chunk size. Around 35–55 sits best with the 2048 default; CJK text gets character-style splitting automatically.

Output: audio (AUDIO), ready for any ComfyUI audio sink. Note that emotion tags are local to their chunk while style and delivery prosody carry forward - a strong emotion written in chunk one won't bleed into every later chunk. That's a feature, though it surprises people the first time.

Real talk on quality and gotchas

Higgs v3 is a serious model - Boson reports single-digit WER/CER across 100 languages, and the v2 predecessor already beat GPT-4o-mini-tts on emotional expression in the EmergentTTS-Eval benchmark. The community take on v3 in ComfyUI is enthusiastic but honest: people report it "sounds incredible" when the tags land, and occasionally skips an emotion or SFX tag even with the official examples. So expect most runs to be great and budget a retry or two for the fussy ones.

Practical gotchas, grounded in the README: output cutting off means you're past max_new_tokens - turn chunking on or raise the limit. If inline controls seem ignored after chunking, that's the emotion-locality behavior above; re-add the tag in the chunk where you want it. And if an SFX tag doesn't fire, make sure written sound text immediately follows it - <|sfx:laughter|>Haha, not a tag floating alone.

One more thing: unlike the clone node, this doesn't trim or clean anything, and there's no reference audio to get right. It's the low-friction on-ramp, and it's the node I'd reach for when I want a demo voice without hunting for a clean sample clip.

CategoryHiggs v3 TTS

Inputs (10)

NameTypeDefaultDescription
higgs_modelHIGGSV3TTS_MODEL
textSTRINGHello! This is Higgs Audio v3 running natively inside ComfyUI.Text to synthesize. Inline tags work anywhere, for example <|emotion:relief|>, <|prosody:pause|>, or <|sfx:laughter|>Haha at the exact moment it should happen.
max_new_tokensINT204832–8192Maximum audio-code tokens per single pass. 2048 is roughly 25-30 seconds; raise it or enable chunking if speech cuts off.
temperatureFLOAT1.000–2Sampling variety. 0 is greedy and repeatable; around 0.8-1.1 is usually natural.
top_pFLOAT0.950–1Nucleus sampling cutoff. 1.0 disables it; 0.9-0.98 keeps speech expressive without wandering too much.
top_kINT500–1026Limits each codebook sample to the top K choices. 0 disables; 50 is a steady default.
seedINT00–21474836470 uses the current random state. A positive value is repeatable and is reused unchanged for every longform chunk.
longform_chunkingBOOLEANtrueSplit long text at sentence or pause-tag boundaries. Turn this on for narration; off is one direct pass and may stop early on long text.
words_per_chunkINT4520–300Target words per chunk. Around 35-55 fits the 2048-token default better; raise with max_new_tokens for longer chunks.
pause_between_chunksFLOAT0.150–2Seconds of silence inserted between longform chunks. Does not replace inline pause tags.

Outputs (1)

NameTypeDescription
audioAUDIO