Nodes/ComfyUI-Artha-Nodes/πŸ”± Artha Gemini Speech
ComfyUI Node

πŸ”± Artha Gemini Speech

Artha Gemini Speech turns text into spoken audio

By CyrostarΒ·Created 10 months agoΒ·Updated 8 months agoΒ· 0
πŸ”± Artha Gemini Speech
    • audio
    β—„text_promptA cat with a hatβ–Ί
    β—„voiceKoreβ–Ί
    β—„api_keyβ–Ί
    β—„modelgemini-2.5-flash-preview-ttsβ–Ί
    β—„max_tokens5000β–Ί
    β—„temperature0.7β–Ί

    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.json or 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.

    CategoryArtha/LLM/Gemini

    Inputs (6)

    NameTypeDefaultDescription
    text_promptSTRINGA cat with a hatβ€”
    voiceCOMBOKore30 options: Zephyr, Autonoe, Puck, Laomedeia, Charon, Rasalgethi, +24
    api_keySTRINGAPI key will be visible in plain text. Consider adding your api to the api.json located inside this custom node folder.
    modelCOMBOgemini-2.5-flash-preview-tts1 options: gemini-2.5-flash-preview-tts
    max_tokensINT50001–8192For Gemini models, a token is equivalent to about 4 characters. 100 tokens is equal to about 60–80 English words.
    temperatureFLOAT0.70–2A temperature of 0 means only the most likely tokens are selected. Higher values increase randomness.

    Outputs (1)

    NameTypeDescription
    audioAUDIOβ€”