Higgs v3 Voice Clone
The zero-shot voice clone that made this pack worth installing
- higgs_model
- reference_audio
- audio
This is the node people actually come to the Higgs v3 pack for. Higgs v3 Voice Clone takes one reference clip and synthesizes new speech in that voice, zero-shot - no training, no fine-tuning, just a AUDIO input and a prompt. In the wider ComfyUI ecosystem, which has historically been image-first and is only now getting serious local TTS options, this is the moment the graph starts replacing your cloud TTS. If you've been fighting Qwen3-TTS clones that drift or flatten, Higgs v3 is the current community recommendation, and this node is how you run it inside ComfyUI.
Here's the honest part: the whole game is the reference. The node internally trims the clip (silence threshold −42 dB, max 100 seconds), then conditions the model on the cleaned audio. But the single biggest lever is reference_text - an exact transcript of the reference clip. The README says it flat out: a correct transcript materially improves cloning. Feed it a clip with no transcript and you'll get a voice that's recognizably the same but weaker and less stable. Feed it an exact transcript and the clone snaps into focus.
The inputs that matter
- reference_audio (required) - clean speech, little music or noise. Same clip reused for every longform chunk, so the voice stays consistent across a whole narration.
- reference_text - the transcript, and the field that separates a good clone from a mediocre one. This is where the pack's Whisper node feeds in (see Higgs v3 Whisper Transcribe), though a manually corrected transcript beats raw Whisper output.
- text - what you want spoken in that voice. Inline tags work here too:
<|emotion:amusement|>,<|prosody:pause|>,<|sfx:sigh|>Ahh.... - Everything else is the shared generation set -
max_new_tokens(2048 ≈ 25–30s),temperature(0.8–1.1 natural),top_p,top_k,seed,longform_chunking,words_per_chunk,pause_between_chunks. Same defaults, same behavior as Generate.
Output is audio (AUDIO), straight into Preview Audio or Save Audio.
The emotion-tag trap
Strong emotions at the start of the prompt can overpower the speaker conditioning and make the clone drift - the README specifically flags <|emotion:sadness|> first-token as a culprit, while milder tags like amusement usually survive. This is a known model limitation, not the node picking a random speaker. The workaround: let Higgs establish the cloned voice with at least one word first, then tag.
This <|emotion:sadness|>is a short test sentence to test the text to speech.
And put the next word directly against the tag with no space: <|emotion:sadness|>is, not <|emotion:sadness|> is.
Troubleshooting, grounded
Weak clone? Clean up the reference (cut music/noise), then fix the transcript. Whisper helps, but a corrected one is better - this is the fix people skip. Long script cutting off mid-sentence? Keep longform_chunking=True and words_per_chunk around 35–55. And if you're comparing takes, use a fixed seed and the same settings - the README gives a concrete recipe (fixed seed 12345, temp 0.8, top_p 1.0, top_k 50, chunking off) for verifying delivery controls like speed.
Two footnotes before you go clone your favorite podcaster: Boson releases this for research and non-commercial use, and the license is explicit that you don't clone voices without consent. This is a genuinely impressive model - people call it "incredible" when it lands - but it's also the kind of power you keep on the right side of.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| higgs_model | HIGGSV3TTS_MODEL | — | |
| text | STRING | Hello! 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. |
| reference_audio | AUDIO | Reference voice clip for cloning. Use clean speech with little music/noise; the same clip is reused for every longform chunk. | |
| reference_text | STRING | Exact transcript of the reference clip. This strongly improves cloning and is reused for every chunk; Whisper output should be corrected if needed. | |
| max_new_tokens | INT | 204832–8192 | Maximum audio-code tokens per single pass. 2048 is roughly 25-30 seconds; raise it or enable chunking if speech cuts off. |
| temperature | FLOAT | 1.000–2 | Sampling variety. 0 is greedy and repeatable; around 0.8-1.1 is usually natural. |
| top_p | FLOAT | 0.950–1 | Nucleus sampling cutoff. 1.0 disables it; 0.9-0.98 keeps speech expressive without wandering too much. |
| top_k | INT | 500–1026 | Limits each codebook sample to the top K choices. 0 disables; 50 is a steady default. |
| seed | INT | 00–2147483647 | 0 uses the current random state. A positive value is repeatable and is reused unchanged for every longform chunk. |
| longform_chunking | BOOLEAN | true | Split 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_chunk | INT | 4520–300 | Target words per chunk. Around 35-55 fits the 2048-token default better; raise with max_new_tokens for longer chunks. |
| pause_between_chunks | FLOAT | 0.150–2 | Seconds of silence inserted between longform chunks. Does not replace inline pause tags. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |