π± Artha Gemini Speech
Artha Gemini Speech turns text into spoken audio
- audio
Artha Gemini Speech is the node in the π± Artha pack that makes your workflow talk. It takes a text prompt and sends it to Google's Gemini text-to-speech model, then hands you back a real audio tensor you can preview, save, or wire into a video. It's the only reason to open ComfyUI just to get narration, but if you're already building an LLM-driven pipeline this is the missing mouth.
Here's the thing to understand first: this node doesn't run any model locally. It's a thin wrapper around the Google Gemini API, which means no checkpoint downloads, no VRAM hit, and no soundfile models to babysit - but also no local TTS if you're offline. You need a Gemini API key before anything happens.
How it works
When you hit Run, the node calls Gemini's generate_content with audio as the requested output modality and a specific voice name baked into the request. The raw audio bytes come back, get decoded as 24 kHz mono PCM16, normalized, and reshaped into a waveform tensor that ComfyUI's AUDIO type understands. So the output plugs straight into ComfyUI's built-in audio preview or video/audio nodes - no conversion step in between.
The voice dropdown is populated from the pack's bundled speech.json, which lists the real Gemini TTS preview voices with their personality tags - Kore (firm, the default), Puck (upbeat), Charon (informative), Zephyr (bright), Fenrir (excitable), and about two dozen more. Pick a couple and stick with them; voices are per-request, so you can vary narration per generation.
Inputs that matter
- text_prompt - the actual script. Multiline, defaults to "A cat with a hat". Keep it under whatever the model's output limit allows; this is narration, not a novel.
- voice - who says it. Default
Kore. - api_key, model, max_tokens, temperature - the shared Gemini parameter block every Artha LLM node has. Model defaults to
gemini-2.5-flash-preview-tts.
The output is a single audio (AUDIO) output. That's it.
Installing it
Install the whole pack once - all the π± Artha nodes come together:
cd ComfyUI/custom_nodes
git clone https://github.com/Cyrostar/ComfyUI-Artha-Nodes
then install the dependencies and restart ComfyUI:
pip install -r ComfyUI/custom_nodes/ComfyUI-Artha-Nodes/requirements.txt
ComfyUI Manager works too - search "ComfyUI-Artha-Nodes" and let it handle the pip step. The requirements pull in google-genai (the SDK this actually talks to), soundfile for the audio decoding, plus the usual torch/numpy/Pillow. And you still need the API key: grab one free at aistudio.google.com, then either paste it into the node's api_key field or - cleaner - drop it into the pack's api.json as gemini_api_key, or set a GEMINI_API_KEY environment variable.
Common issues
- Empty audio output: almost always a missing or invalid API key. The node prints an error to the console but still returns; check your ComfyUI log.
- Key visible in plain text: the field on the node is exactly that - plain text, saved in your workflow JSON. The pack itself warns about this. Use
api.jsonor the env var if the key matters to you. - Rate limits / cost: this is a cloud API call on the free tier's metered usage. Long scripts at high temperature chew through quota fast.
- No audio widget to look at: the AUDIO output needs a preview/save node downstream; the pack's Artha Image Preview only handles images, so use ComfyUI's own audio preview.
It's a one-trick node, but it's a good trick. Voice-over for video workflows, spoken labels for image batches, even just a sanity-check readout of your prompt - for the cost of one API key.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| text_prompt | STRING | A cat with a hat | β |
| voice | COMBO | Kore | 30 options: Zephyr, Autonoe, Puck, Laomedeia, Charon, Rasalgethi, +24 |
| api_key | STRING | API key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder. | |
| model | COMBO | gemini-2.5-flash-preview-tts | 1 options: gemini-2.5-flash-preview-tts |
| max_tokens | INT | 50001β8192 | For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60β80 English words. |
| temperature | FLOAT | 0.70β2 | A temperature of 0 means only the most likely tokens are selected. Higher values increase randomness. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |