<!-- BusyBot node reference — https://busybot.net/tools/gemini-tts/ -->

> Node: Gemini TTS (`gemini_tts`) · Action (binary) · v1
> Category: AI · Credentials: Google AI (`googleAi`)
> Updated: 2026-08-16

# Gemini TTS

> Convert text to speech using Gemini.

## Overview

Gemini TTS uses the Gemini generateContent API with an audio response modality to turn text into speech. You choose one of five prebuilt voices — Puck, Charon, Kore, Fenrir or Aoede — and the spoken audio comes back as a playable file stored on the output item as binary data. Only TTS-capable models can produce audio; the Model dropdown is limited to those.

**Category:** AI  
**Tool Name:** `gemini_tts`  
**Version:** 1

**Appearance:** Icon: `gemini` | Color: `#ffffff`

## Node Type

**Action (Binary)** — handles file/binary data operations

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Google AI** credentials.
See the [Credentials Guide](https://busybot.net/credentials/google-ai/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Model | `options` | No | — | The Gemini TTS model to use. Only IDs ending in -tts-preview / -preview-tts can produce audio; plain chat IDs return "This model only supports text output." The dropdown lists the models currently available for this node; leave it unset to use the default. |
| Text | `string` | Yes | — | The text to convert to speech. If empty, falls back to item.json.text or item.json.message. Supports expressions. |
| Voice | `options` | No | `Puck` | The prebuilt voice to use for speech synthesis. |
| | | | | Options: `Puck` (playful and energetic), `Charon` (deep and steady), `Kore` (clear and articulate), `Fenrir` (strong and commanding), `Aoede` (melodic and expressive) |
| Options | `collection` | No | `{}` | Optional output settings. |
| — Binary Property Name | `string` | No | `data` | Property name under which the binary audio data will be stored. Names are case-sensitive — see the upstream node's Binary Data panel for the exact names to use. |
| Include Input | `boolean` | No | `false` | Whether to include the original input item fields in the output alongside the audio metadata. |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. |

## Output Data

One output item per input item. The speech is written to the binary property named by **Binary Property Name** (default `data`) as `speech.wav` — raw PCM audio returned by the model is wrapped in a proper WAV container first, so the file plays anywhere without further conversion. Binary data arriving from upstream is preserved.

The output item's JSON contains only the fields below. The input item's JSON is merged in **only** when Include Input is on:

| Field | Description |
|-------|-------------|
| `voice` | The voice used for this item. |
| `model` | The model that produced the audio. |
| `mimeType` | Media type of the stored audio file. |
| `textLength` | Character count of the text that was spoken. |

A request that comes back without audio is treated as an item error rather than a silent empty result.

Reference the result downstream by expression, e.g. `{{ $json.voice }}`, and the audio itself through the binary property name you configured.

## Usage Examples

- Convert text to speech using Gemini
- Generate audio from text with the Kore voice
- Create speech audio with a Gemini TTS model
- Synthesize voiceover for each item in a dataset
- Generate audio narration with Gemini Aoede voice

## Example Configuration

Speak a fixed line with the default voice:

```json
{
  "type": "gemini_tts",
  "parameters": {
    "text": "Hello, welcome to the workflow automation system."
  }
}
```

Narrate a field from each item, keeping the source data for correlation:

```json
{
  "type": "gemini_tts",
  "parameters": {
    "text": "{{ $json.message }}",
    "voice": "Aoede",
    "includeInput": true,
    "maxConcurrency": 5,
    "options": {
      "binaryPropertyName": "narrationAudio"
    }
  }
}
```

Throttle to one item at a time and store the audio under its own property:

```json
{
  "type": "gemini_tts",
  "parameters": {
    "text": "Processing complete. Please review the attached report.",
    "voice": "Charon",
    "maxConcurrency": 1,
    "options": {
      "binaryPropertyName": "ttsAudio"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Gemini TTS converts text to speech audio using the Gemini generateContent API with audio response modality, running on a TTS-capable Gemini model picked from the Model dropdown, which tracks the model catalog. Use it when a workflow needs to produce spoken audio from text input, selecting from five prebuilt voices: Puck, Charon, Kore, Fenrir, or Aoede. It outputs binary WAV audio data stored via the binary storage layer, delivered on the main output or routed to the error output on failure.