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 des Audios mit strukturierten Turn-Metadaten (speech_metadata) und Inline-Vocal-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 Wiedergabe von Text zugeschnitten und bieten eine detaillierte Kontrolle über Stil und Klang, z. B. für Erzählungen, Hörbücher und Antworten von Sprach-Agents. Für interaktive Echtzeit-Unterhaltungen mit Audioeingabe und -ausgabe verwenden Sie stattdessen die Gemini Live API.

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

Wenn Sie die Sprachgenerierung für einen einzelnen Sprecher ausprobieren möchten, ohne Code zu schreiben, öffnen Sie Gemini 3.8 Flash TTS in Agent Studio:

Gemini 3.8 TTS in Agent Studio ausprobieren

Unterstützte Modelle

Modell Einzelner Sprecher Mehrere Sprecher Streaming Stimmendesign (Vorabversion) Stimmen-Replikation (Vorabversion)
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:

  • Verwenden Sie Gemini 3.8 Flash TTS (gemini-3.8-flash-tts), wenn akustische Wiedergabetreue, nuancierte Darstellung und ausdrucksstarke Kontrolle 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.
  • Verwenden Sie Gemini 3.8 Flash-Lite TTS (gemini-3.8-flash-lite-tts) für schnelle, kostengünstige Produktionsarbeitslasten. 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-Agenten, Vorlesefunktionen, Stimmenklonen und alltägliche Sprachausgaben 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.33.0 oder höher des Google Gen AI SDK:

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

Verfügbare Standorte und regionale Endpunkte

Die Gemini 3.8-TTS-Modelle sind am Standort global und an den multiregionalen Standorten us und eu verfügbar:

Standort Standortparameter Endpunkt
Global global https://aiplatform.googleapis.com
USA (multiregional) us https://aiplatform.us.rep.googleapis.com
Europäische Union (multiregional) eu https://aiplatform.eu.rep.googleapis.com

Wenn Sie bei Streaminganfragen eine kürzere Zeit bis zum ersten Audio (TTFA) erreichen möchten, verwenden Sie den multiregionalen Endpunkt us oder eu anstelle des Endpunkts global. Der Endpunkt global leitet Anfragen über Regionen weltweit weiter, was die Netzwerklatenz erhöhen kann, bevor der erste Audioblock eintrifft.

Wenn Sie Anfragen an einen regionalen Endpunkt weiterleiten möchten, legen Sie beim Initialisieren des Clients im SDK location="us" (oder location="eu") fest oder senden Sie Anfragen an den entsprechenden multiregionalen Hostnamen (https://aiplatform.us.rep.googleapis.com oder https://aiplatform.eu.rep.googleapis.com) mit dem passenden Standortpfad in der REST-URL:

Python

from google import genai

# Set location to 'us' or 'eu' for multi-region routing (or 'global' for global)
client = genai.Client(
    enterprise=True,
    project="PROJECT_ID",
    location="us",
)

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"}},
    },
)

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.us.rep.googleapis.com/v1/projects/PROJECT_ID/locations/us/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

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 erweiterten Sprachbibliothek 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. Streaming-Anfragen geben stattdessen PCM-Rohdatenblöcke zurück. Weitere Informationen und andere Codierungen finden Sie unter Audioausgabeformate.

Console

  1. Öffnen Sie Gemini 3.8 Flash TTS oder Gemini 3.8 Flash-Lite TTS in Agent Studio.
  2. Wählen Sie im Einstellungsbereich eine vordefinierte Stimme, eine Sprache (oder behalten Sie Automatisch erkennen bei) und optional eine Stilbeschreibung (z. B. cheerful and friendly) aus.
  3. Geben Sie das Transkript, das gesprochen werden soll, in das Prompt-Feld ein und senden Sie es, um die WAV-Audiodatei zu generieren, abzuspielen oder herunterzuladen. Klicken Sie auf Code abrufen, um die Anfrage als Python, JavaScript oder curl zu exportieren.

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 mit einem einzelnen Sprecher

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

Wenn Sie eine niedrigere TTFA wünschen, senden Sie Streaminganfragen an den multiregionalen Endpunkt us oder eu anstelle des Endpunkts global (es sei denn, Ihre Anfrage verwendet eine benutzerdefinierte Stimme, für die global erforderlich ist).

Python

from google import genai

# Use 'us' or 'eu' for lower TTFA on streaming requests (or 'global' for custom voices)
client = genai.Client(enterprise=True, project="PROJECT_ID", location="us")

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.us.rep.googleapis.com/v1/projects/PROJECT_ID/locations/us/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 eine optionale 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 unter TTS für mehrere Sprecher mit der Methode streamGenerateContent und den multiregionalen Endpunkt us oder eu für eine niedrigere TTFA.

Python

from google import genai

# Use 'us' or 'eu' for lower TTFA on streaming requests
client = genai.Client(enterprise=True, project="PROJECT_ID", location="us")

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.us.rep.googleapis.com/v1/projects/PROJECT_ID/locations/us/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, Mono.

Sprechstil mit Metadaten und Tags steuern

Die Gemini 3.8 TTS-Modelle behandeln das Feld text als wörtliches Transkript. Anweisungen im Text, z. B. "Say cheerfully: Hello!" oder "Speaker 1: Hello!", werden möglicherweise vorgelesen. Wenn Sie die Bereitstellung steuern möchten, teilen Sie Ihre Anweisungen nach Bereich auf:

  • Anhaltende Wiedergabe auf Turn-Ebene (speech_metadata.style): Platzieren Sie Emotionen, Wiedergabestil, Prosodie, Tempo und Lautstärke, die für einen gesamten Turn gelten, in speech_metadata.style. Beispiel: "style": "whispered urgently", "style": "out of breath" oder "style": "warm and enthusiastic".
  • Zeitpunktbezogene Ereignisse (Inline-Tags): Setzen Sie kurze, nicht gesprochene Laute 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 ausgewählte voreingestellte Stimmen in verschiedenen Sprachen, regionalen Akzenten und Charakteren.
  3. Voice Design (Vorabversion): 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 gibt eine gespeicherte voice_...-ID und ein Beispiel der Stimme zurück.
  4. Stimmen-Replikation (Vorabversion): Replizieren Sie die Stimme eines Sprechers aus Referenz- und Einwilligungs-Audio mit derselben create-Methode. Setzen Sie 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 Stimmen-Replikation (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 Aufbewahrungsdauer 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 angeben, zusammen mit den daraus abgeleiteten Sprachartefakten in Verbindung mit demGoogle Cloud -Projekt, in dem die Stimme erstellt wurde.

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

  • Referenzaudio: 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 zur Beschreibung der Stimme geschrieben haben.
  • 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 deine Stimme auch nach Modellupdates funktioniert. 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 die 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 einem 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 standardmäßige Projektlöschvorgang verwendet.

Vordefinierte Stimmen

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

  • Achernar: weich
  • Achird: freundlich
  • Algenib: Kiesig
  • Algieba: Weich
  • Alnilam: Fest
  • Aoede: Fröhlich
  • Autonoe: aufgeweckt
  • Callirrhoe: Gelassen
  • Charon: erklärend
  • Despina: ruhig
  • Enceladus: Gehaucht
  • Erinome: deutlich
  • Fenrir: Aufgeregt
  • Gacrux: reif
  • Iapetus: deutlich
  • Kore: Bestimmt
  • Laomedeia: optimistisch
  • Leda: Jugendlich
  • Orus: Fest
  • Puck: optimistisch
  • Pulcherrima: Kess
  • Rasalgethi: erklärend
  • Sadachbia: lebhaft
  • Sadaltager: klug
  • Schedar: Gleichmäßig
  • Sulafat: Warm
  • Umbriel: Ungezwungen
  • Vindemiatrix: Sanft
  • Zephyr: Aufgeweckt
  • Zubenelgenubi: Casual

Erweiterte Stimmenauswahl

Zusätzlich zu den 30 vordefinierten Stimmen bietet die erweiterte Stimmenbibliothek mehr als 2.000 ausgewählte voreingestellte Stimmen in verschiedenen Sprachen, regionalen Akzenten, Charakteren und Anwendungsfällen wie Hörbüchern, Konversations-Agents und Nachrichten. Wenn Sie eine Stimme aus der Bibliothek verwenden möchten, übergeben Sie ihre ID in speechConfig.voiceConfig.voice, genau wie Sie einen vordefinierten Stimmennamen übergeben würden.

Wenn Sie die Bibliothek durchsuchen möchten, rufen Sie die Voices API-Methode list (ListVoices) auf. Sie gibt die in Ihrem Projekt gespeicherten benutzerdefinierten Stimmen zurück, gefolgt von den vordefinierten Stimmen und den Stimmen aus der erweiterten Stimmenbibliothek. 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 die Bibliothek nach Sprecherstimmen durchsucht:

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 Wert next_page_token aus der Antwort als Parameter page_token.

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 Roh-PCM-Blöcke (audio/l16) mit 16 Bit, Little-Endian, 24 kHz, Mono 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) Headerloses, rohes, vorzeichenbehaftetes 16-Bit-PCM im Little-Endian-Format. Verwendung für Streaming, benutzerdefinierte Audiopipelines oder das Verketten von Multi-Turn-Clips.
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-kompandierte Audiodaten (8 kHz, Mono), die häufig in der europäischen und internationalen Telefonie verwendet werden.

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 Telefoniepipeline 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 132 Sprachen und Gemini 3.8 Flash-Lite TTS unterstützt 103 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 Charakteren kombinieren oder mehr als zwei Sprecher verwenden möchten, synthetisieren Sie die Beiträge der einzelnen Sprecher separat und verketten Sie die Audioausgaben. Fordern Sie für jede Runde die Ausgabe AUDIO_L16 an oder entfernen Sie den WAV-Header aus jedem Clip, bevor Sie die Clips verketten.
  • Die Modelle sind an den Standorten global, us und eu verfügbar.
  • Benutzerdefinierte Stimmen, die Nutzern gehören (Stimmen, die mit Voice Design oder Voice Replication erstellt wurden), sind nur am Standort global verfügbar.
  • Systemanweisungen werden nicht unterstützt.
  • Die Abtastrate der Ausgabe kann nicht festgelegt werden. Die Ausgabe im MP3- und Ogg Opus-Format wird nicht unterstützt.

Nächste Schritte