Nodes/SpicyAPI/Gemini 3.8 Flash-Lite TTS · Text to Speech
ComfyUI Node

Gemini 3.8 Flash-Lite TTS · Text to Speech

The cheapest voice in the pack, with one caveat

By spicyapi-ai·Created 21 days ago·Updated 2 days ago· 2
Gemini 3.8 Flash-Lite TTS · Text to Speech
    • audio
    • task id
    ◄text►
    ◄dialogue►
    ◄speakers►
    ◄voice_idKore►
    ◄stylemodel default►
    ◄pacemodel default►
    ◄accentmodel default►
    ◄instructions►
    ◄scene►
    ◄temperature-1.00►
    ◄seed0►

    Cheapest per second of any audio node here: $0.00021, against $0.00032 for Flash and $0.00045 for 2.5 Pro. Same 30 voices, same 24 kHz mono WAV, usually back within seconds. For long-form narration, audiobook drafts, or anything where you're generating a lot of speech and only some of it survives, this is the node to reach for.

    The caveat is in the node's own tooltip, and it's worth reading twice: spell out sounds such as sighs or laughter; bracketed cues may be read aloud. That's the tell that this tier is the least theatrical of the three Google TTS endpoints. Flash acts out [whispering]; Lite might just say "whispering" at you. If you need the performance, pay the extra $0.00011 a second and use Flash. If you need the words read clearly and cheaply, this is the one.

    How it runs

    Your script and settings go to SpicyAPI, the model returns audio, and the pack gives it back as a ComfyUI AUDIO - the same AUDIO type any ComfyUI audio node produces, so it drops into Save Audio or a video-sync workflow with no conversion. No local model, no VRAM, no download. One quirk worth knowing before you wire it up: several results can return as a batch, and Save Audio writes one file per result.

    The inputs

    • text - spoken exactly as written, and the field that determines the bill.
    • voice_id - 30 voices, Kore by default, each with a fixed character.
    • style, pace, accent - all left to the model's defaults on this node. There's real room here: a slower pace and a tighter style do more for a narration than any amount of punctuation tweaking.
    • instructions - mood, mic distance, who's listening. Free text, not spoken, not billed.
    • scene - where and to whom it's spoken. Same deal: free, and it shapes delivery.
    • temperature - −1 to 2, default −1 (model's choice).
    • dialogue + speakers - JSON for a two-person conversation, used instead of text. Leave text blank if you go this way.

    Speakers carry a name plus an optional pace, style, accent, profile and required voice_id; each dialogue line names its speaker:

    {"speakers": [{"name": "Host", "voice_id": "Kore"}],
     "dialogue": [{"speaker": "Host", "text": "Welcome back to the show."}]}
    

    Outputs: audio and task id, a STRING identifying the SpicyAPI request.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/spicyapi-ai/comfyui-spicyapi
    

    Restart ComfyUI, then Settings > SpicyAPI and paste a key from spicyapi.ai/console/keys - or export SPICY_API_KEY on a server. Restart once more so the node list is rebuilt from your account. ComfyUI Manager users: search SpicyAPI. No dependencies and no model files; the pack ships nothing but Python that talks to the API.

    Cost

    $0.00021 per second of audio - a rate so low that the real cost of a bad read is your time, not your balance. Rate shown on the node, quote taken before submission, and Settings > SpicyAPI > Max cost per run stops anything above your ceiling before it's charged. The pack forces seeds to fixed, so re-queueing reuses the cached result rather than paying for a second read; set control after generate to randomize when you want a different take.

    Errors are uniform across the pack: No SpicyAPI key is set, 40310 for an unverified account email, 40004 when no deployment serves the combination (the message names the field, nothing charged), and request_id ... errors to pass to support. Invalid JSON in dialogue or speakers is rejected as an input error. Cancelling a run stops your wait, not the server-side job.

    CategorySpicyAPI/Audio/Google

    Inputs (11)

    NameTypeDefaultDescription
    textSTRINGThe words to be spoken, exactly as written. Spell out sounds such as sighs or laughter; bracketed cues may be read aloud.
    dialogueSTRINGA scripted conversation, used instead of text: each line names a speaker from speakers. JSON. A list of objects with "text", "speaker".
    speakersSTRINGThe cast for dialogue: one or two voices, each with a name the lines refer to. JSON. A list of objects with "name", "pace"?, "style"?, "accent"?, "profile"?, "voice_id".
    voice_idCOMBOKorePrebuilt voice that reads the text. Each voice has a fixed character.
    styleCOMBOmodel defaultOverall manner of the reading. Omit it to use the voice's own default manner.
    paceCOMBOmodel defaultRhythm of the reading. Omit it to keep the voice's own rhythm.
    accentCOMBOmodel defaultEnglish accent used for the reading.
    instructionsSTRINGHow to read the text: mood, distance from the microphone, who is listening. Shapes the delivery and is not spoken.
    sceneSTRINGWhere and to whom the words are spoken. Shapes the delivery and is not spoken.
    temperatureFLOAT-1.00-1–2Variation between takes; higher is less predictable. -1 leaves it to the model.
    seedINT00–2147483647This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed.

    Outputs (2)

    NameTypeDescription
    audioAUDIOSeveral results come back as a batch; Save Audio writes one file each.
    task idSTRINGThe SpicyAPI task id, for the console logs or support.