π± Gemini Speech
Give your workflow a voice β Gemini text-to-speech, 30 presets
- audio
Gemini Speech is the pack's text-to-speech node: you type a line, it sends it to Gemini's TTS model, and you get back a proper AUDIO output you can play, save, or feed into a video. It's the odd one out in the Artha-Gemini pack - every other node produces text or images, this one produces sound - and it's the node that lets a generated video actually talk.
The workflow it unlocks is the fun one: generate a clip, run your script through Speech, and combine the audio with the video. Voiceover for a generated character, narration for a scene, a caption read aloud for accessibility - all from the same Gemini API you're already paying for.
How it works
The node takes your text_prompt and calls the Gemini TTS model (gemini-2.5-flash-preview-tts by default) via the API, requesting audio output. The returned audio bytes are converted into a ComfyUI AUDIO structure - a waveform tensor plus a sample_rate of 24 kHz - which is the format ComfyUI's video/audio tools expect.
The part worth caring about is the voice dropdown, which lists 30 prebuilt voices (the pack ships a full speaker list). The default is Kore, but the real variety is there: the list runs the gamut from Puck to Zubenelgenubi, and since these are Google's named voices, they're stable, consistent, and hard to confuse. The node also includes a language list in its data (English, Spanish, Japanese, Korean, Hindi, and more) - pick a voice that matches the language of your text for the best result.
Inputs and outputs
- text_prompt - the line to speak.
- voice - one of 30 presets, default
Kore. - api_key, model, max_tokens, temperature - the shared API block.
Output: audio (AUDIO) - a {"waveform": tensor, "sample_rate": 24000} dict. Wire it into a video-combine node that accepts audio, or a preview/playback node.
Installing it
Via ComfyUI Manager (search Artha-Gemini) or:
cd ComfyUI/custom_nodes
git clone https://github.com/Cyrostar/ComfyUI-Artha-Gemini
cd ComfyUI-Artha-Gemini
pip install -r requirements.txt
No model downloads - the TTS runs server-side. One dependency worth knowing: soundfile is in the pack's requirements specifically because this node decodes audio bytes, so if the audio output fails with a module error, that's the first thing to check. You'll also need a Gemini API key from Google AI Studio.
Where people get burned
The biggest gotcha is that the output isn't an audio file - it's the ComfyUI AUDIO dict. If you're used to text-to-speech tools that hand you an .mp3, this will confuse you until you wire it into a node that consumes AUDIO. Save it from there or combine it into a video; don't expect a file path.
Second, TTS voices are not universal. Each voice is trained for certain languages and registers, and a voice that sounds great reading English can sound robotic or wrong in Japanese. Match the voice to the text's language rather than picking one voice for everything.
Also note the pack's standard setup: put the key in api.json (gemini_api_key) or GEMINI_API_KEY env var instead of the plain-text workflow field, and remember every generated clip is a billable API call - cheap per run, but it adds up if you're rendering dialogue for a long video. And as with Google's other generative APIs, expect a safety filter on the content it'll speak; plan the script accordingly.
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, and there's no randomness. Conversely, a high temperature injects a high degree of randomness into the tokens selected by the model, leading to more unexpected, surprising model responses. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |