HeyGen Text to Speech
A narrator's worth of voices without leaving ComfyUI
- AUDIO
A narrator's worth of voices, one node
HeyGen Text to Speech is the plainest node in ComfyUI's partner/audio family: type text, pick a voice, get speech back. What makes it worth a look is where the voices come from. HeyGen is the avatar-video company - the "AI presenter reads your script" service - and this node pulls from the same Starfish TTS engine that powers its talking-head products. The curated list is HeyGen's most popular Starfish-compatible voices across 17 languages, and the quality lands closer to "this could be a podcast ad" than "this is clearly a robot."
How it works
Thin client again. The node posts your text and voice ID to HeyGen's /v3/voices/speech endpoint through ComfyUI's partner-node proxy, downloads the returned audio URL, and decodes it into a normal AUDIO tensor for the rest of your graph. No local TTS model, no VRAM, no weights to fetch. It's one of five HeyGen nodes that shipped together in ComfyUI core in July 2026; the rest of the family (Talking Photo, Avatar Video) handles the video side, and this node is the audio half of the same workflow.
The inputs that matter
text- what to synthesize, up to 5000 characters. One real constraint: the generated speech must be at least 1 second long, so a single short word can error out.voice- the curated dropdown of Starfish voices, annotated with language and gender ("Chill Brian", "Aria", "Narrator Mateo", that sort of thing).custom_voice_id- paste any HeyGen voice ID from their wider library (2000+ voices) and it overrides the dropdown. Only works if that voice supports the Starfish engine.
Then three smaller ones: speed (0.5–2.0 multiplier), ssml (a boolean that switches the parser from plain text to SSML markup - your hook for pauses, emphasis, and pronunciation control), and seed. That last one deserves a warning: it's not sent to HeyGen. The tooltip says so in so many words - the seed exists purely so that changing it forces a re-run. There is no determinism knob on this node at all.
Output is a single AUDIO that plugs straight into core SaveAudio, SaveAudioMP3, or PreviewAudio, or into AudioConcat if you're building a longer narration from pieces.
Getting it
Ships with ComfyUI core - no install, no model files. It's an API node, so each run is billed to your Comfy account credits, priced per second of audio (the node shows an approximate per-second badge). A long script is a lot of seconds, and the bill scales with what you actually generate.
Where people get burned
- The 1-second floor. Tiny inputs fail; give it a real sentence.
- SSML is opt-in. Leave the toggle off and your
<break time="500ms"/>tags get read aloud literally. Flip it on only when your text actually is SSML. - Voice/engine mismatch. A
custom_voice_idthat isn't Starfish-compatible fails; stick to the dropdown unless you know the ID. - Cost creep. Per-second billing plus retakes means a voiced five-minute video with ten iterations is a pile of paid audio. Nail the script first, then generate.
If you just need a decent AI voice right now and don't want to train or babysit a local model, this is the one to reach for - especially since it shares its voice family with HeyGen's avatar nodes, so the voice you pick here is the one your presenter will use upstairs.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Text to synthesize (up to 5000 characters). The generated speech must be at least 1 second long. | |
| voice | COMBO | Voice to use (curated from HeyGen's most popular Starfish-compatible voices). | |
| custom_voice_idopt | STRING | Optional HeyGen voice ID. When set, overrides the voice selected above. The voice must support the Starfish engine. | |
| speedopt | FLOAT | 1.000.5–2 | Speech speed multiplier. |
| ssmlopt | BOOLEAN | false | Treat the text as SSML markup (for pauses, emphasis, and pronunciation control). |
| seedopt | INT | 420–2147483647 | Not sent to HeyGen; change it to force a re-run. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |