Gemini Text to Speech (PMS)
Five named voices, one REST call
- audio
Google's Gemini TTS voices, exposed as a single ComfyUI node: paste text, get an AUDIO tensor. If you're building narrated content inside ComfyUI - explainer videos, character dialogue, a voiceover for a generated slideshow - this is the Gemini-side alternative to the pack's Grok TTS node. Same shape, different provider, and the trade-off between them is basically which API you already pay for.
It's a plain REST call to Google's TTS endpoint, no SDKs, no local model, and the returned audio is decoded into a standard ComfyUI {waveform, sample_rate} AUDIO tensor. That means it wires directly into video pipelines - concatenate it with frames, mix it, save it alongside your output. One nice detail: if the API call fails, the node returns a short silence tensor instead of raising, so your downstream graph keeps running instead of dying mid-render.
The inputs that matter
- text - what gets spoken. Multiline, so a whole paragraph or script line fits.
- voice_name - five options: Aoede, Charon, Fenrir, Kore, Puck. These are Google's named Gemini TTS voices, and they differ more than you'd expect in delivery and timbre - worth auditioning all five on the same line before you commit.
- language_code - a BCP-47 code, default
es-419. The default is Latin American Spanish, which tells you where this pack's author lives; switch toen-US,fr-FR, etc. as needed. - api_key - leave empty; resolved from
.envasGEMINI_API_KEY.
Output: a single audio AUDIO tensor.
Installing it
ComfyUI Manager → search "COMFYUI_PROMPTMODELS" → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/cdanielp/COMFYUI_PROMPTMODELS
Add to the pack's .env:
GEMINI_API_KEY=AI...
Restart. Requires ComfyUI >= 0.26.0; dependencies are requests and Pillow only.
The traps
The key-in-the-field warning applies here like everywhere in this pack: put GEMINI_API_KEY in .env, leave the node's api_key blank, or the key ends up in your workflow JSON and in saved PNG metadata.
And set your expectations on range: five fixed voices, no custom voice cloning, no speech tags like the Grok TTS node offers. If you need an expressive voice with [laugh] and [whisper] direction, that's the Grok node's territory. This one is clean, reliable, multi-language narration - pick it when you need a specific language code (it's genuinely strong at Spanish and other non-English output) or when Gemini credits are what you're spending anyway.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | Hola, soy Gemini. Encantado de hablar contigo. | — |
| voice_nameopt | STRING | Aoede | Nombre de voz: Aoede, Charon, Fenrir, Kore, Puck. |
| language_codeopt | STRING | es-419 | Código BCP-47. ej: es-419, en-US, fr-FR. |
| api_keyopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |