Sprache mit Gemini TTS generieren

Die Gemini-Text-zu-Sprache-Modelle (TTS) wandeln Text in Audioinhalte mit einem oder mehreren Sprechern um. Sie können den Stil, den Akzent, das Tempo und den Ton der Audioausgabe mit strukturierten Turn-Metadaten (speech_metadata) und Inline-Stimm-Tags steuern.

Auf dieser Seite wird beschrieben, wie Sie mit den folgenden Modellen und den Methoden generateContent und streamGenerateContent der Gemini Enterprise API Sprache generieren:

Die TTS-Modelle sind auf die genaue Textrezitation zugeschnitten und bieten eine detaillierte Steuerung von Stil und Klang, z. B. für Erzählungen, Hörbücher und Antworten von Sprachassistenten. Für interaktive Echtzeitunterhaltungen mit Audioeingabe und -ausgabe verwenden Sie stattdessen die Live API.

Wenn Sie ein älteres Gemini-TTS-Modell wie gemini-3.1-flash-tts-preview verwenden, lesen Sie die Migrationsanleitung.

Unterstützte Modelle

Modell Einzelner Sprecher Mehrere Sprecher Streaming Sprachdesign Stimmreplikation
Gemini 3.8 Flash TTS (gemini-3.8-flash-tts)
Gemini 3.8 Flash-Lite TTS (gemini-3.8-flash-lite-tts)
Gemini 3.1 Flash TTS Preview (gemini-3.1-flash-tts-preview)
Gemini 2.5 Pro TTS (gemini-2.5-pro-tts)
Gemini 2.5 Flash TTS (gemini-2.5-flash-tts)

Die Beispiele und Funktionen auf dieser Seite gelten für die Gemini 3.8-TTS-Modelle. Informationen zu den früheren Modellen finden Sie in derGoogle Cloud Text-to-Speech-Dokumentation unter Gemini-TTS.

Wann welches Modell verwendet werden sollte

Beide Gemini 3.8-TTS-Modelle verwenden dasselbe Anfrageschema und Prompt-Format. Sie können also zwischen ihnen wechseln, indem Sie die Modell-ID ändern:

  • Gemini 3.8 Flash TTS (gemini-3.8-flash-tts) verwenden, wenn akustische Wiedergabetreue, nuancierte Darstellung und ausdrucksstarke Steuerung oberste Priorität haben. Es eignet sich für kreative Arbeit in Studioqualität, komplexe Dialoge mit mehreren Sprechern, häufige Tags für Stimmstöße, schwierige Aussprachen, regionale oder Minderheitendialekte und lange Erzählungen, die eine stabile Stimme und einen stabilen Raumton erfordern.
  • Gemini 3.8 Flash-Lite TTS (gemini-3.8-flash-lite-tts) für schnelle, kostengünstige Produktions-Workloads verwenden. Es ist der empfohlene Ersatz für gemini-3.1-flash-tts-preview und eignet sich für die Batchproduktion in großem Umfang, Kaskaden von Konversations-Sprach-Agents, Vorlesefunktionen, Stimmenklonen und die alltägliche Sprachausgabe mit einem einzelnen Sprecher in den wichtigsten Sprachen.

Hinweis

  1. Projekt einrichten und die Gemini Enterprise API aktivieren
  2. Konfigurieren Sie Standardanmeldedaten für Anwendungen für Ihre Entwicklungsumgebung.
  3. Wenn Sie die Python-Beispiele verwenden möchten, installieren Sie Version 2.25.0 oder höher des Google Gen AI SDK:

    pip install --upgrade "google-genai>=2.25.0"
    

Die Gemini 3.8 TTS-Modelle sind am Standort global verfügbar. Senden Sie Anfragen an den Endpunkt aiplatform.googleapis.com.

TTS für einen einzelnen Sprecher

Wenn Sie Text in Audio mit einem einzelnen Sprecher umwandeln möchten, übergeben Sie das wörtliche Transkript in parts[].text, fügen Sie optionales Styling auf Turn-Ebene in parts[].speech_metadata hinzu und legen Sie die Stimme in speechConfig.voiceConfig.voice fest. Das Feld voice akzeptiert den Namen einer vordefinierten Stimme, die Sprach-ID einer Stimme aus der Extended Voice Library oder die ID (voice_...) einer entworfenen oder replizierten Stimme (oder einen optionalen zustandslosen voicekey_...-Schlüssel).

Standardmäßig geben unäre Anfragen eine vollständige WAV-Datei (16-Bit-PCM, 24 kHz, Mono) zurück, sodass Sie die Audiobytes direkt in eine .wav-Datei schreiben können. Bei Streaminganfragen werden stattdessen rohe PCM-Chunks zurückgegeben. Weitere Informationen und andere Codierungen finden Sie unter Audioausgabeformate.

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
    model="gemini-3.8-flash-tts",
    contents=[{
        "role": "user",
        "parts": [{
            "text": "Have a wonderful day!",
            "speech_metadata": {"style": "cheerful and friendly"},
        }],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {"voice_config": {"voice": "Kore"}},
    },
)

# The SDK has already decoded the base64 audio, so inline_data.data is a
# complete WAV file by default.
with open("out.wav", "wb") as f:
    f.write(response.candidates[0].content.parts[0].inline_data.data)

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.8-flash-tts:generateContent \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Have a wonderful day!",
        "speechMetadata": {"style": "cheerful and friendly"}
      }]
    }],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "speechConfig": {
        "voiceConfig": {"voice": "Kore"}
      }
    }
  }' | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > out.wav

Streaming-TTS für einen einzelnen Sprecher

Wenn Sie Audioinhalte empfangen möchten, während das Modell sie noch synthetisiert, verwenden Sie die Methode streamGenerateContent. Streamingantworten geben headerlose Roh-PCM-Chunks mit 16 Bit (24 kHz, Mono) zurück. Sie können jeden Chunk an einen Player, einen Socket oder eine andere Audio-Pipeline übergeben, sobald er eintrifft. Im folgenden Python-Beispiel steht die Funktion emit_audio für dieses Ziel.

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

def emit_audio(pcm: bytes) -> None:
    """Sends a chunk of raw 16-bit PCM audio (24 kHz, mono) downstream."""
    # Replace with your audio destination, such as a player, a WebSocket,
    # or a telephony stream.
    print(f"Received {len(pcm)} bytes of audio")

response_stream = client.models.generate_content_stream(
    model="gemini-3.8-flash-lite-tts",
    contents=[{
        "role": "user",
        "parts": [{
            "text": "Have a wonderful day!",
            "speech_metadata": {"style": "cheerful and friendly"},
        }],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {"voice_config": {"voice": "Kore"}},
    },
)

for chunk in response_stream:
    if not chunk.candidates or not chunk.candidates[0].content:
        continue
    for part in chunk.candidates[0].content.parts or []:
        if part.inline_data and part.inline_data.data:
            emit_audio(part.inline_data.data)

REST

curl -N -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.8-flash-lite-tts:streamGenerateContent?alt=sse" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Have a wonderful day!",
        "speechMetadata": {"style": "cheerful and friendly"}
      }]
    }],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "speechConfig": {
        "voiceConfig": {"voice": "Kore"}
      }
    }
  }' | sed -n 's/^data: //p' \
    | jq -r '.candidates[0].content.parts[0].inlineData.data // empty' \
    | while read -r chunk; do echo "$chunk" | base64 --decode; done > streamed.pcm

Die Datei streamed.pcm enthält unformatierte 16‑Bit-PCM-Audiodaten mit 24 kHz, Mono.

TTS mit mehreren Sprechern

Konfigurieren Sie für einen Dialog zwischen zwei Sprechern beide Sprecher in speechConfig.multiSpeakerVoiceConfig.speakerVoiceConfigs. Übergeben Sie dann jeden Zug als separate part, legen Sie speech_metadata.speaker für jeden Zug auf einen der konfigurierten Sprechernamen fest und fügen Sie optional eine style auf Zugebene hinzu.

Für Anfragen mit mehreren Sprechern sind genau zwei Sprecher erforderlich.

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
    model="gemini-3.8-flash-tts",
    contents=[{
        "role": "user",
        "parts": [
            {
                "text": "How's it going today, Jane?",
                "speech_metadata": {"speaker": "Joe", "style": "cheerful and friendly"},
            },
            {
                "text": "Not too bad, how about you? Ready to test these new voices?",
                "speech_metadata": {"speaker": "Jane", "style": "calm and relaxed"},
            },
        ],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {
            "multi_speaker_voice_config": {
                "speaker_voice_configs": [
                    {"speaker": "Joe", "voice_config": {"voice": "Puck"}},
                    {"speaker": "Jane", "voice_config": {"voice": "Kore"}},
                ]
            }
        },
    },
)

with open("dialogue.wav", "wb") as f:
    f.write(response.candidates[0].content.parts[0].inline_data.data)

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.8-flash-tts:generateContent \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [
        {
          "text": "How'\''s it going today, Jane?",
          "speechMetadata": {"speaker": "Joe", "style": "cheerful and friendly"}
        },
        {
          "text": "Not too bad, how about you? Ready to test these new voices?",
          "speechMetadata": {"speaker": "Jane", "style": "calm and relaxed"}
        }
      ]
    }],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "speechConfig": {
        "multiSpeakerVoiceConfig": {
          "speakerVoiceConfigs": [
            {"speaker": "Joe", "voiceConfig": {"voice": "Puck"}},
            {"speaker": "Jane", "voiceConfig": {"voice": "Kore"}}
          ]
        }
      }
    }
  }' | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > dialogue.wav

Streaming-TTS mit mehreren Sprechern

Anfragen mit mehreren Sprechern unterstützen auch Streaming. Verwenden Sie dieselbe Anfrage wie in TTS mit mehreren Sprechern mit der Methode streamGenerateContent.

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

def emit_audio(pcm: bytes) -> None:
    """Sends a chunk of raw 16-bit PCM audio (24 kHz, mono) downstream."""
    # Replace with your audio destination, such as a player, a WebSocket,
    # or a telephony stream.
    print(f"Received {len(pcm)} bytes of audio")

response_stream = client.models.generate_content_stream(
    model="gemini-3.8-flash-tts",
    contents=[{
        "role": "user",
        "parts": [
            {
                "text": "How's it going today, Jane?",
                "speech_metadata": {"speaker": "Joe", "style": "cheerful and friendly"},
            },
            {
                "text": "Not too bad, how about you? Ready to test these new voices?",
                "speech_metadata": {"speaker": "Jane", "style": "calm and relaxed"},
            },
        ],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {
            "multi_speaker_voice_config": {
                "speaker_voice_configs": [
                    {"speaker": "Joe", "voice_config": {"voice": "Puck"}},
                    {"speaker": "Jane", "voice_config": {"voice": "Kore"}},
                ]
            }
        },
    },
)

for chunk in response_stream:
    if not chunk.candidates or not chunk.candidates[0].content:
        continue
    for part in chunk.candidates[0].content.parts or []:
        if part.inline_data and part.inline_data.data:
            emit_audio(part.inline_data.data)

REST

curl -N -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.8-flash-tts:streamGenerateContent?alt=sse" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [
        {
          "text": "How'\''s it going today, Jane?",
          "speechMetadata": {"speaker": "Joe", "style": "cheerful and friendly"}
        },
        {
          "text": "Not too bad, how about you? Ready to test these new voices?",
          "speechMetadata": {"speaker": "Jane", "style": "calm and relaxed"}
        }
      ]
    }],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "speechConfig": {
        "multiSpeakerVoiceConfig": {
          "speakerVoiceConfigs": [
            {"speaker": "Joe", "voiceConfig": {"voice": "Puck"}},
            {"speaker": "Jane", "voiceConfig": {"voice": "Kore"}}
          ]
        }
      }
    }
  }' | sed -n 's/^data: //p' \
    | jq -r '.candidates[0].content.parts[0].inlineData.data // empty' \
    | while read -r chunk; do echo "$chunk" | base64 --decode; done > dialogue_streamed.pcm

Die Datei dialogue_streamed.pcm enthält unformatierte 16-Bit-PCM-Audiodaten mit 24 kHz im Monobetrieb.

Sprechstil mit Metadaten und Tags steuern

Die Gemini 3.8 TTS-Modelle behandeln das Feld text als wörtliches Transkript. Anweisungen, die in den Text geschrieben sind, z. B. "Say cheerfully: Hello!" oder "Speaker 1: Hello!", werden möglicherweise vorgelesen. Um die Ausgabe zu steuern, unterteilen Sie Ihre Anweisungen nach Umfang:

  • Dauerhafte Wiedergabe auf Turn-Ebene (speech_metadata.style): Geben Sie Emotionen, Wiedergabestil, Prosodie, Tempo und Lautstärke, die für einen ganzen Turn gelten, in speech_metadata.style an. Beispiel: "style": "whispered urgently", "style": "out of breath" oder "style": "warm and enthusiastic".
  • Zeitpunktbezogene Ereignisse (Inline-Tags): Setzen Sie kurze nicht sprachliche Geräusche und Pausen im Transkript in spitze Klammern. Beispiel: "Wait... <short pause> did you hear that? <sigh>" oder "Excuse me <cough> as I was saying...".

Weitere Informationen finden Sie in der Prompt-Anleitung.

Stimmoptionen

Die Gemini 3.8 TTS-Modelle unterstützen vier Möglichkeiten, Stimmen auszuwählen oder zu erstellen:

  1. Vordefinierte Stimmen: 30 ausgewählte Stimmen.
  2. Erweiterte Stimmenbibliothek: Mehr als 2.000 kuratierte voreingestellte Stimmen in verschiedenen Sprachen, regionalen Akzenten und Charakteren.
  3. Voice Design: Erstellen Sie mit der Voices API-Methode create (client.voices.create() im Google Gen AI SDK oder POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/voices) eine benutzerdefinierte Stimme aus einer Beschreibung in natürlicher Sprache. Setzen Sie type auf VOICE_TYPE_PROMPTED und store auf true. Die Antwort enthält eine gespeicherte voice_...-ID und eine Sprachprobe.
  4. Stimmreplikation: Die Stimme einer sprechenden Person wird anhand von Referenz- und Einwilligungs-Audio mit derselben create-Methode repliziert. Setze type auf VOICE_TYPE_REPLICATED. Bei store: true wird in der Antwort eine gespeicherte voice_...-ID zurückgegeben. Mit store: false wird ein zustandsloser voicekey_...-Schlüssel zurückgegeben.

Limits und TTL für Custom Voice

Stimmtyp Speichermodus Verwaltung Ablauffrist
Gespeicherte Stimmen (voice_..., entworfen oder repliziert) store: true Voices API-Methoden list, get und delete 1 Jahr nach der letzten Verwendung
Schlüssel für die Sprachreplikation (voicekey_...) store: false Wird von Ihrer Anwendung verwaltet. Google speichert den Schlüssel nicht. 7 Tage nach Erstellung

Wenn Sie Sprache mit einer gespeicherten Stimme generieren, wird die einjährige Aufbewahrungsfrist neu gestartet. Eine Stimme, die Sie regelmäßig verwenden, läuft also nicht ab. Anfragen zur Erstellung von Stimmen unterliegen einem Kontingent pro Projekt und Minute. Wenn Sie dieses Limit überschreiten, gibt die Methode create den Fehler RESOURCE_EXHAUSTED zurück. Weitere Informationen finden Sie unter Kontingente und Systemlimits.

Datenspeicherung und ‑aufbewahrung

Google speichert die Eingaben, die Sie beim Erstellen einer gespeicherten Stimme machen, zusammen mit den daraus abgeleiteten Sprachartefakten in Verbindung mit demGoogle Cloud -Projekt, mit dem die Stimme erstellt wurde.

Wenn Sie eine replizierte Stimme aus einer Aufnahme eines Sprechers erstellen, wird Folgendes gespeichert:

  • Referenz-Audio: Das Beispiel des Sprechers, dessen Stimme repliziert wird.
  • Audioaufnahme der Einwilligung: Der Sprecher, der die erforderliche Einwilligungserklärung vorliest.

Wenn Sie eine designte Stimme mithilfe einer Textbeschreibung einer Stimme in einem Prompt erstellen, wird Folgendes gespeichert:

  • Der Text-Prompt, den Sie geschrieben haben, um die Stimme zu beschreiben.
  • Die aus diesem Prompt generierten Sprachaudiodaten, die das Modell als Referenz für die Stimme verwendet.

Für eine entworfene Stimme gibt es keine Audioaufnahme mit Einwilligung, da sie aus einer Beschreibung und nicht aus einer Aufnahme einer Person generiert wird.

Spracheingaben werden gespeichert, damit Ihre Stimme auch nach Modellupdates weiterhin erkannt wird. Sprachartefakte werden aus gespeicherten Eingaben neu generiert, wenn das zugrunde liegende Modell aktualisiert wird. Wenn für eine Stimme keine gespeicherten Eingaben gefunden werden, können ihre Artefakte nicht neu generiert werden und die Stimme funktioniert nach einem Modellupdate nicht mehr. Anschließend müssen Sie die Stimme neu erstellen.

Die gespeicherten Eingaben werden nur verwendet, um die Stimme neu zu generieren, wenn Modelle aktualisiert werden. Sie werden im Ruhezustand verschlüsselt und sind auf das Projekt beschränkt, in dem die Stimme erstellt wurde.

Aufbewahrungsdauer

Stimmen und alle zugehörigen gespeicherten Daten werden bis zu ein Jahr (365 Tage) nach der letzten Verwendung der Stimme zur Sprachsynthese aufbewahrt. Der Zeitraum beginnt, wenn Sie die Stimme erstellen, und wird jedes Mal zurückgesetzt, wenn Sie eine Syntheseanfrage senden, die die Stimme verwendet. Wenn eine Stimme 365 Tage lang nicht verwendet wird, werden die Stimme, die gespeicherten Eingaben und die abgeleiteten Artefakte gelöscht.

Löschung durch den Kunden

Sie können eine Stimme jederzeit mit der delete-Methode der Voices API löschen. Wenn Sie eine Stimme löschen, werden die gespeicherten Eingaben und die abgeleiteten Artefakte gelöscht. Wenn Sie das Google Cloud -Projekt löschen, zu dem eine Stimme gehört, wird auch die Stimme gelöscht. Dabei wird der Standardprozess zum Löschen von Projekten verwendet.

Vordefinierte Stimmen

In der folgenden Liste sind die Namen der einzelnen integrierten Stimmen und ihre Merkmale aufgeführt:

  • Achernar: Weich
  • Achird: freundlich
  • Algenib: Kiesig
  • Algieba: Weich
  • Alnilam: Fest
  • Aoede: Breezy
  • Autonoe: Aufgeweckt
  • Callirrhoe: gelassen
  • Charon: erklärend
  • Despina: ruhig
  • Enceladus: gehaucht
  • Erinome: Löschen
  • Fenrir: Aufgeregt
  • Gacrux: Nicht jugendfrei
  • Iapetus: Deutlich
  • Kore: Fest
  • Laomedeia: optimistisch
  • Leda: jugendlich
  • Orus: Fest
  • Puck: optimistisch
  • Pulcherrima: kess
  • Rasalgethi: Informativ
  • Sadachbia: Lebhaft
  • Sadaltager: klug
  • Schedar: Gleichmäßig
  • Sulafat: Warm
  • Umbriel: Gelassen
  • Vindemiatrix: sanft
  • Zephyr: Hell
  • Zubenelgenubi: Lässig

Erweiterte Voice-Bibliothek

Neben den 30 vordefinierten Stimmen bietet die erweiterte Stimmenbibliothek über 2.000 kuratierte voreingestellte Stimmen in verschiedenen Sprachen, regionalen Akzenten, Charakteren und Anwendungsfällen wie Hörbücher, Conversational Agents und Nachrichten. Wenn Sie eine Stimme aus der Bibliothek verwenden möchten, übergeben Sie ihre ID in speechConfig.voiceConfig.voice, so wie Sie auch den Namen einer vordefinierten Stimme übergeben würden.

Rufen Sie die Methode list (ListVoices) der Voices API auf, um die Bibliothek zu durchsuchen. Sie gibt die benutzerdefinierten Stimmen zurück, die in Ihrem Projekt gespeichert sind, gefolgt von den vordefinierten Stimmen und den Stimmen der Extended Voice Library. Jede Bibliotheksstimme enthält ihre id und Metadaten wie language_code, accent, gender, pitch, persona und description. Mit den folgenden Filtern können Sie die Ergebnisse eingrenzen:

  • type: Die Sprachquelle: prebuilt für vordefinierte und Bibliotheksstimmen, prompted für entworfene Stimmen oder replicated für replizierte Stimmen. Wenn Sie mehr als einen Wert übergeben, gibt die Methode Stimmen zurück, die mit einem der Werte übereinstimmen.
  • search: Text, der ohne Berücksichtigung der Groß-/Kleinschreibung mit dem Anzeigenamen und der Beschreibung der einzelnen Stimmen abgeglichen werden soll.

Im folgenden Beispiel wird in der Bibliothek nach Sprecherstimmen gesucht:

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.voices.list(type_=["prebuilt"], search="narrator", page_size=50)
for voice in response.voices or []:
    print(voice.id, voice.language_code, voice.gender, voice.description)

REST

curl -G \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/voices \
  --data-urlencode "type=prebuilt" \
  --data-urlencode "search=narrator" \
  --data-urlencode "pageSize=50"

Die Methode list gibt bis zu 50 Stimmen pro Seite zurück. Um die nächste Seite abzurufen, übergeben Sie den next_page_token-Wert aus der Antwort als page_token-Parameter.

Audioausgabeformate

Die Standard-Audiocodierung hängt von der Methode ab:

  • Unäre Anfragen (generateContent) geben eine vollständige WAV-Datei (audio/wav) mit einem RIFF-Header zurück: 16-Bit-PCM, 24 kHz, Mono.
  • Streaminganfragen (streamGenerateContent) geben headerlose Rohdaten in Form von 16‑Bit-PCM-Chunks mit Vorzeichen im Little-Endian-Format (audio/l16) mit 24 kHz und im Monomodus zurück.

Wenn Sie eine andere Codierung anfordern möchten, legen Sie für generationConfig.responseFormat ein Audioformat fest. Die Gemini 3.8-TTS-Modelle unterstützen die folgenden mimeType-Werte:

mimeType Wert Format Beschreibung
AUDIO_WAV (unärer Standardwert) WAV (audio/wav) Vollständige WAV-Datei mit einem RIFF-Header (16-Bit-PCM, 24 kHz, Mono).
AUDIO_L16 (Streaming-Standard) Linear PCM (audio/l16) Headerloser roher 16-Bit-PCM-Stream mit vorzeichenbehafteter Ganzzahl und Little Endian. Verwendung für Streaming, benutzerdefinierte Audiopipelines oder das Verketten von Clips mit mehreren Durchgängen.
AUDIO_MULAW μ-law (audio/mulaw) G.711 μ-Law-kompandierte Audiodaten (8 kHz, Mono), die häufig in der nordamerikanischen und japanischen Telefonie verwendet werden.
AUDIO_ALAW A-law (audio/alaw) G.711 A-law-kompandiertes Audio (8 kHz, Mono), das häufig in der europäischen und internationalen Telefonie verwendet wird.

Die Modelle ignorieren das Feld sampleRate. Die Ausgabe für lineare PCM und WAV beträgt 24 kHz und die Ausgabe für μ-law und A-law 8 kHz, unabhängig von der Rate in der Antwort mimeType. Führen Sie ein Resampling der Ausgabe auf dem Client durch, wenn Ihre Pipeline eine andere Abtastrate erfordert.

Im folgenden Beispiel wird die μ-law-Ausgabe für eine Telefonie-Pipeline angefordert. Das Google Gen AI SDK for Python stellt responseFormat in GenerateContentConfig nicht bereit. Daher wird es im Python-Beispiel mit http_options.extra_body im Anfragetext übergeben.

Python

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
    model="gemini-3.8-flash-tts",
    contents=[{"role": "user", "parts": [{"text": "Have a wonderful day!"}]}],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {"voice_config": {"voice": "Kore"}},
        "http_options": {
            "extra_body": {
                "generationConfig": {
                    "responseFormat": [{"audio": {"mimeType": "AUDIO_MULAW"}}]
                }
            }
        },
    },
)

# The response is headerless μ-law audio at 8 kHz, mono.
with open("out.mulaw", "wb") as f:
    f.write(response.candidates[0].content.parts[0].inline_data.data)

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-3.8-flash-tts:generateContent \
  -d '{
    "contents": [{"role": "user", "parts": [{"text": "Have a wonderful day!"}]}],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "responseFormat": [{"audio": {"mimeType": "AUDIO_MULAW"}}],
      "speechConfig": {
        "voiceConfig": {"voice": "Kore"}
      }
    }
  }' | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > out.mulaw

Unterstützte Sprachen

Die Gemini 3.8-TTS-Modelle erkennen die Eingabesprache automatisch. Gemini 3.8 Flash TTS unterstützt 130 Sprachen und Gemini 3.8 Flash-Lite TTS unterstützt 101 Sprachen:

Beschränkungen

  • Die TTS-Modelle akzeptieren nur Texteingaben und geben nur Audioausgaben zurück.
  • Für Anfragen mit mehreren Sprechern sind genau zwei Sprecher erforderlich. Wenn Sie entworfene (voice_...) oder replizierte (voice_... oder voicekey_...) Stimmen in einem Dialog mit mehreren Figuren kombinieren oder mehr als zwei Sprecher verwenden möchten, müssen Sie die Äußerungen der einzelnen Sprecher separat synthetisieren und die Audioinhalte zusammenfügen. Fordern Sie für jeden Turn eine AUDIO_L16-Ausgabe an oder entfernen Sie den WAV-Header aus jedem Clip, bevor Sie die Clips zusammenfügen.
  • Die Modelle sind nur am Standort global verfügbar.
  • Systemanweisungen werden nicht unterstützt.
  • Die Ausgabe-Abtastrate kann nicht festgelegt werden. Die Ausgabe im MP3- und Ogg Opus-Format wird nicht unterstützt.

Nächste Schritte