Gemini TTS Voice Remixing Is Live

Introduction
Voice Remixing for Gemini 3.8 Flash TTS is live. Google’s docs now treat remix as a first-class path beside Voice Design and Voice Replication: start from a known voice, describe the relative change in plain English, and get a new stored voice_… ID you can synthesize with.
This is the complement to the earlier Voice Design drop. Design builds a persona from scratch. Remix anchors on a base_voice and edits timbre, pitch, pace, accent, or delivery without throwing away the identity you already liked.
Primary surfaces (zero-day maker path):
- Docs: Voice remixing + Voices API
- Studio: aistudio.google.com/generate-speech
- Vendor signal: Google’s X post that remix is live in AI Studio and the Gemini API (preset library / designed voices + prompt edits)
What Shipped
- Vendor / product: Google — Gemini 3.8 Flash TTS Voice Remixing
- Modality: closed API / Studio text-to-speech voice editing (not open weights)
- Open vs closed: closed — Gemini API + Google AI Studio
- Runnable today:
POST /v1beta/voiceswithtype: "prompted"andprompted.base_voice, then synthesize withgemini-3.8-flash-ttsorgemini-3.8-flash-lite-tts; or remix in AI Studio’s speech UI - Concrete fact: remix always creates an independent stored voice (
store=True); it never mutates the originalbase_voice. Paid Tier 1+ projects get up to 200 stateful voices shared across designed, remixed, and stored replicated voices, with a 1-year TTL that resets on use
Supported base_voice sources include prebuilt studio names (for example Puck, Kore, Zephyr), Extended Voice Library IDs, and prior stored voice_… IDs — so you can chain iterative remixes.
Run It
import base64
from google import genai
client = genai.Client()
remixed = client.voices.create(
store=True,
voice={
"model": "gemini-3.8-flash-tts",
"type": "prompted",
"prompted": {
"base_voice": "Puck",
"input": "Soften the delivery and add a subtle Southern U.S. accent",
},
},
)
if remixed.sample_audio and remixed.sample_audio.data:
with open("remixed_voice_preview.wav", "wb") as f:
f.write(base64.b64decode(remixed.sample_audio.data))
interaction = client.interactions.create(
model="gemini-3.8-flash-tts",
input=[{
"type": "user_input",
"content": [{
"type": "text",
"text": "Chapter One. The fog rolled quietly across the harbor at dawn.",
"annotations": [{
"type": "speech_metadata",
"style": "calm and reflective",
}],
}],
}],
response_format={"type": "audio"},
generation_config={
"speech_config": [{"voice": remixed.id}],
},
)REST shape is the same endpoint: POST https://generativelanguage.googleapis.com/v1beta/voices with x-goog-api-key, then synthesize via /v1beta/interactions.
Notes for makers
- Remix returns a 24 kHz WAV
sample_audiopreview with the newvoice_…ID — audition before you chain another edit - Keep permanent character traits in remix prompts; use
speech_metadata.stylefor turn-level acting (“whispering”, “excited”) - Relative prompts keep language/accent unless you ask otherwise
- Preview TTS endpoints (2.5 Flash/Pro Preview TTS, 3.1 Flash TTS Preview) shut down 2026-11-17 — migrate remix + synth traffic to 3.8 Flash / Flash-Lite now
- No Gen CTA: this is API TTS voice tooling, not a Flux / Grok / MiniMax-H3 / Seedream / Seedance surface
Conclusion
If you already have a Gemini TTS voice that is almost right, November’s remix path is the day-0 fix: prompt the delta, store a new ID, keep the original intact.
—Anabel ♡
