ComfyUI Node

Gemini 3.1 Flash TTS

Google-grade speech, straight into the graph

By Runware·Created 2 years ago·Updated about a month ago· 140
Gemini 3.1 Flash TTS
  • speech
  • audioSettings
  • audio
seed0
numberResults1
settings.temperature1.00
ttlfalse
ttl_value60
outputFormatMP3

Gemini 3.1 Flash TTS is Google's text-to-speech model behind a Runware node - the sibling of the pack's text Gemini models, but it returns audio instead of strings. You type the script, pick a voice, and get a native AUDIO output that drops straight into a player or save node, with no local TTS stack, no model download, and no per-voice setup. It's the pick when you want Google-quality voices without opening a Google Cloud account.

Compared to the pack's own Dia models, this one is the Google-flavored option: fewer creative dials, and the voice selection happens in the Runware Speech builder rather than on this node. It's the "it just needs to sound good" option - you hand it text, it speaks. Where the Dia nodes reward tweaking, this one rewards not fiddling.

What you set

  • speech (required) - from the Runware Speech builder: text (the script), voice (default Zephyr), plus speed, pitch, volume, and language. All the actual voice character lives here.
  • audioSettings - optional, from the audio settings builder: channels (1 or 2), and gated bitrate / sampleRate overrides.
  • settings.temperature - 0–2, default 1. Lower for consistent, flatter takes.
  • seed - reproducible reads.
  • outputFormat - MP3 / WAV / FLAC / OGG.

Output is audio (AUDIO) - the native dict with waveform and sample rate.

How it works

Standard pack flow: taskType: audioInference over REST through the Runware SDK, and the returned audio file is downloaded and decoded with soundfile (libsndfile) into an AUDIO tensor, falling back to torchaudio and finally to a saved-file warning if decode fails. Cost prints on the title bar. Because it's a hosted call, each read is a fresh inference - iterate on takes freely; short voice clips are cheap. It's also worth knowing the voice model is just one of the pack's Google nodes: the same voice contract feeds both this node and the text Gemini models, so a script you've written for one works in the other.

Installing

ComfyUI Manager → search Runware → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

No model downloads; deps are runware-sdk, pillow, soundfile. API key via Settings → Runware API key, RUNWARE_API_KEY, or runware auth login.

Troubleshooting

Key-not-set errors first, as always. Robotic or clipped audio usually means the chosen voice doesn't fit the language - set language in the speech builder to match the script. If a take sounds too flat, nudge temperature up a touch (and remember it's capped at 2, not the 5 the Dia nodes allow). Want more granular control over the voice and its audio tokens instead of Google's defaults? That's the Dia2 2B node's job.

CategoryRunware/Audio/google

Inputs (8)

NameTypeDefaultDescription
speechRUNWARE_SPEECH
audioSettingsoptRUNWARE_AUDIOSETTINGS
seedoptINT00–2147483647Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.
numberResultsoptINT11–4Number of results to generate. Each result uses a different seed, producing variations of the same parameters.
settings.temperatureoptFLOAT1.000–2Controls randomness in generation. Lower values produce more deterministic outputs, higher values increase variation and creativity.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOMP3File format for the generated audio.

Outputs (1)

NameTypeDescription
audioAUDIO