Nodes/SpicyAPI/Gemini 2.5 Pro TTS · Text to Speech
ComfyUI Node

Gemini 2.5 Pro TTS · Text to Speech

30 voices, acted-out cues like [sighs], and two-speaker dialogue

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

    Write [sighs] in the middle of a line and the model sighs. Bracket your direction, describe the scene, pick one of 30 voices, and a 24 kHz mono WAV comes back - for $0.00045 per second of audio, which is the priciest rate among the three Gemini TTS nodes in this pack and the one you pay when you want the performance to land.

    This is the Pro tier, and the useful distinction against its Flash siblings is direction-taking. The Gemini TTS line lets you tell it how to read: mood, pace, accent, how close to the mic it should feel. The instructions and scene fields are free text, unbilled, and they're where most of the quality difference between a flat read and a good one actually lives.

    How the node works

    text goes to SpicyAPI with the voice and delivery settings, and the audio comes back as a ComfyUI AUDIO value that wires straight into Save Audio or a video node. Nothing runs locally - no voice model to download, no VRAM, which is the reason the pack exists on machines that can't host one. Note the output tooltip: several results can return as a batch, and Save Audio writes one file per result, so a three-clip job gives you three files.

    The inputs worth setting

    • text - read exactly as written. Bracket cues like [sighs] are performed rather than spoken aloud, which is the trick that makes this node fun.
    • voice_id - 30 prebuilt voices, Kore by default. Each has a fixed character, so audition a few rather than assuming.
    • style and pace - the overall manner and rhythm of the read, both defaulting to the voice's own. accent - the English accent, neutral by default here (the Flash nodes leave this to the model).
    • instructions - pace, mood, distance from the microphone, who is listening. Not spoken, not billed. Say more here than feels necessary.
    • scene - where the words are spoken and to whom. Also free and also shapes delivery.
    • temperature - −1 to 2, default −1, meaning the model decides. Nudge it up for variation between takes.
    • dialogue and speakers - the two-voice mode, described below.

    Two-speaker dialogue

    Dialogue is used instead of text, and it's JSON rather than prose, which is the part people fumble. dialogue is a list of lines, each naming a speaker from speakers; speakers is a list of one or two voices, each with a name the lines refer to:

    [
      {"name": "Ana", "voice_id": "Kore", "style": "warm"},
      {"name": "Ben", "voice_id": "Puck", "pace": "brisk"}
    ]
    

    and the lines that reference them:

    [
      {"speaker": "Ana", "text": "You kept the receipt, right?"},
      {"speaker": "Ben", "text": "[laughs] Obviously not."}
    ]
    

    Speaker fields other than name and voice_id are optional - pace, style, accent, profile. Leave text empty when you use dialogue, or you'll have given the model two scripts.

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

    Install

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

    Restart ComfyUI, paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI (or set SPICY_API_KEY), restart once more. ComfyUI Manager: search SpicyAPI. No dependencies, no downloads.

    Cost

    $0.00045 per second of generated audio - a few cents for a minute of narration, which makes the cheap experimentation obvious: fix the direction in instructions and scene rather than buying retakes. The node shows its rate, the run is quoted before submission, and Settings > SpicyAPI > Max cost per run refuses anything over your ceiling before charging. Seeds default to fixed, so re-queueing doesn't bill a duplicate read.

    Failures: No SpicyAPI key is set, 40310 for an unverified email, 40004 for a combination with no deployment - with the offending field named, and nothing charged - and request_id ... errors for support. Malformed JSON in dialogue or speakers will be rejected as an input error, so validate it before blaming the model.

    CategorySpicyAPI/Audio/Google

    Inputs (11)

    NameTypeDefaultDescription
    textSTRINGThe words to be spoken, exactly as written. Cues in square brackets such as [sighs] are performed rather than 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.
    accentCOMBOneutralEnglish accent used for the reading.
    instructionsSTRINGHow to read the text: pace, 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.