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):

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/voices with type: "prompted" and prompted.base_voice, then synthesize with gemini-3.8-flash-tts or gemini-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 original base_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_audio preview with the new voice_… ID — audition before you chain another edit
  • Keep permanent character traits in remix prompts; use speech_metadata.style for 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 ♡