Why This Matters
Shipping speech in production used to mean juggling multiple vendors, separate billing dashboards, and inconsistent SDKs. Google just closed that gap by bringing Gemini 3.8 Flash-Lite TTS and Gemini 3.8 Flash TTS into Vercel's AI Gateway — the same endpoint you already use for chat, embeddings, and vision models.
Both models accept text and return speech in 100+ languages, with support for long-form narration, delivery control, and two-speaker dialogue. If you're building audiobooks, IVR systems, accessibility tooling, or AI companions, this removes a whole layer of glue code.
Per the official changelog, the two variants target different jobs:
google/gemini-3.8-flash-lite-tts— high-volume generation with controls for tone, pacing, and line-by-line delivery.google/gemini-3.8-flash-tts— adds voice and character design via natural-language prompts (acting cues, accents, conversational reactions).
If you've been tracking how teams are rethinking reliability at scale, this is the same pattern: consolidate infrastructure, remove bespoke plumbing. For a deeper look at that philosophy in another domain, see our breakdown of how Temporal powers reliable cloud operations at Netflix.

Getting Started in 10 Lines
The ai SDK exposes speech generation through an experimental entry point. Here's the minimal working example:
import { experimental_generateSpeech as generateSpeech } from 'ai';
import { writeFile } from 'node:fs/promises';
// Generate speech from text using the Flash-Lite TTS model
const result = await generateSpeech({
model: 'google/gemini-3.8-flash-lite-tts',
text: 'Welcome to the audio edition.',
voice: 'Kore',
outputFormat: 'wav',
});
// Persist the generated audio buffer to disk
await writeFile('speech.wav', result.audio.uint8Array);
That's it. The same call signature works for the full gemini-3.8-flash-tts model — just swap the model string and you unlock voice design prompts.
Choosing Between the Two
| Feature | Flash-Lite TTS | Flash TTS |
|---|---|---|
| High-volume batch generation | ✅ Optimized | ⚠️ Possible but heavier |
| Tone / pacing control | ✅ | ✅ |
| Line-by-line delivery | ✅ | ✅ |
| Voice & character design | ❌ | ✅ |
| Acting cues / accents | ❌ | ✅ |
| Two-speaker dialogue | ✅ | ✅ |
| Best for | Narration, IVR, TTS at scale | Podcasts, games, AI characters |
Playgrounds & Docs
You can generate and listen to samples directly in the Flash-Lite TTS playground or the Flash TTS playground before committing to an integration. Setup instructions and more code examples live in the speech quickstart and text-to-speech guide.
Gateway benefits: one API for speech alongside your other models, per-request usage and cost tracking, configurable routing rules, and the option to bring your own provider key.

Limitations and Gotchas
Before you rip out your existing TTS vendor, keep these in mind:
- Experimental API surface.
experimental_generateSpeechis explicitly marked experimental — expect breaking changes. Pin your SDK version and wrap the call behind an adapter. - No streaming yet (as documented). The example writes a full buffer to disk. If you need low-latency streaming for real-time agents, verify current support before designing around it.
- Cost tracking ≠ cost control. AI Gateway shows usage per request, but high-volume TTS can balloon fast. Set budget alerts and route non-critical jobs to Flash-Lite.
- Voice licensing. Gemini voices are provider assets — check Google's terms before shipping commercial products with a cloned or designed persona.
- Language quality varies. 100+ languages supported ≠ 100+ languages equally polished. Test your target locales, especially for accents and code-switching.
Where to Go Next
Once you have basic generation working:
- Add caching at the text-hash level — repeated strings (greetings, IVR menus) shouldn't hit the API twice.
- Build a voice registry mapping persona names to model + voice + prompt, so switching characters is a config change, not a code change.
- Pair with a queue (BullMQ, SQS) for long-form narration jobs — don't block HTTP handlers on minute-long audio generation.
- Instrument latency per language and per model to catch regressions when Google ships updates.
If you're also working on the frontend side of media-heavy apps, our guide on the CSS animation-trigger and the future of scroll-driven animations is a good companion read.

The Bottom Line
Gemini 3.8 Flash TTS on AI Gateway is a meaningful consolidation play. Instead of a separate TTS vendor, separate billing, and separate auth, you get speech as just another modality on the same endpoint. For teams already on Vercel's AI stack, the switching cost is close to zero.
The real win isn't the model quality — it's that speech is no longer a special case. Once TTS lives next to your LLM calls, features like narrated chat responses, voice-enabled agents, and dynamic audiobooks stop being side projects and start being config.
Start with Flash-Lite for volume, graduate to Flash TTS when you need character. And keep an eye on that experimental flag — it won't stay experimental forever.