Mit der Gemini API kann Texteingabe mithilfe der nativen Text-to-Speech-Funktionen (TTS) in Audio mit einem oder mehreren Sprechern umgewandelt werden. Die Sprachausgabe (TTS) ist steuerbar. Das bedeutet, dass Sie mit natürlicher Sprache Interaktionen strukturieren und den Stil, Akzent, Rhythmus und Ton des Audios festlegen können.
Die TTS-Funktion unterscheidet sich von der Sprachgenerierung über die Live API, die für interaktive, unstrukturierte Audio- und multimodale Ein- und Ausgaben konzipiert ist. Während die Live API sich durch dynamische Konversationskontexte auszeichnet, ist die TTS über die Gemini API auf Szenarien zugeschnitten, in denen eine genaue Textwiedergabe mit detaillierter Steuerung von Stil und Klang erforderlich ist, z. B. bei der Erstellung von Podcasts oder Hörbüchern.
In dieser Anleitung erfahren Sie, wie Sie Audio mit einem oder mehreren Sprechern aus Text generieren.
Hinweis
Achten Sie darauf, dass Sie eine Gemini 2.5-Modellvariante mit nativer Text-zu-Sprache-Funktion (TTS) verwenden, wie im Abschnitt Unterstützte Modelle aufgeführt. Für optimale Ergebnisse sollten Sie überlegen, welches Modell am besten zu Ihrem spezifischen Anwendungsfall passt.
Es kann hilfreich sein, die Gemini 2.5-TTS-Modelle in AI Studio zu testen, bevor Sie mit der Entwicklung beginnen.
Sprachausgabe mit einem einzelnen Sprecher
Wenn Sie Text in Audioinhalte mit einem einzelnen Sprecher umwandeln möchten, legen Sie die Antwortmodalität auf „audio“ fest und übergeben Sie ein SpeechConfig
-Objekt mit VoiceConfig
.
Sie müssen einen Namen für die Stimme aus den vordefinierten Ausgabestimmen auswählen.
In diesem Beispiel wird die Audioausgabe des Modells in einer WAV-Datei gespeichert:
Python
from google import genai
from google.genai import types
import wave
# Set up the wave file to save the output:
def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
with wave.open(filename, "wb") as wf:
wf.setnchannels(channels)
wf.setsampwidth(sample_width)
wf.setframerate(rate)
wf.writeframes(pcm)
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash-preview-tts",
contents="Say cheerfully: Have a wonderful day!",
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='Kore',
)
)
),
)
)
data = response.candidates[0].content.parts[0].inline_data.data
file_name='out.wav'
wave_file(file_name, data) # Saves the file to current directory
JavaScript
import {GoogleGenAI} from '@google/genai';
import wav from 'wav';
async function saveWaveFile(
filename,
pcmData,
channels = 1,
rate = 24000,
sampleWidth = 2,
) {
return new Promise((resolve, reject) => {
const writer = new wav.FileWriter(filename, {
channels,
sampleRate: rate,
bitDepth: sampleWidth * 8,
});
writer.on('finish', resolve);
writer.on('error', reject);
writer.write(pcmData);
writer.end();
});
}
async function main() {
const ai = new GoogleGenAI({});
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-tts",
contents: [{ parts: [{ text: 'Say cheerfully: Have a wonderful day!' }] }],
config: {
responseModalities: ['AUDIO'],
speechConfig: {
voiceConfig: {
prebuiltVoiceConfig: { voiceName: 'Kore' },
},
},
},
});
const data = response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
const audioBuffer = Buffer.from(data, 'base64');
const fileName = 'out.wav';
await saveWaveFile(fileName, audioBuffer);
}
await main();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts":[{
"text": "Say cheerfully: Have a wonderful day!"
}]
}],
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Kore"
}
}
}
},
"model": "gemini-2.5-flash-preview-tts",
}' | jq -r '.candidates[0].content.parts[0].inlineData.data' | \
base64 --decode >out.pcm
# You may need to install ffmpeg.
ffmpeg -f s16le -ar 24000 -ac 1 -i out.pcm out.wav
Sprachausgabe mit mehreren Sprechern
Für Audio mit mehreren Sprechern benötigen Sie ein MultiSpeakerVoiceConfig
-Objekt, in dem jeder Sprecher (bis zu 2) als SpeakerVoiceConfig
konfiguriert ist.
Sie müssen jedes speaker
mit denselben Namen definieren, die im Prompt verwendet werden:
Python
from google import genai
from google.genai import types
import wave
# Set up the wave file to save the output:
def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
with wave.open(filename, "wb") as wf:
wf.setnchannels(channels)
wf.setsampwidth(sample_width)
wf.setframerate(rate)
wf.writeframes(pcm)
client = genai.Client()
prompt = """TTS the following conversation between Joe and Jane:
Joe: How's it going today Jane?
Jane: Not too bad, how about you?"""
response = client.models.generate_content(
model="gemini-2.5-flash-preview-tts",
contents=prompt,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
types.SpeakerVoiceConfig(
speaker='Joe',
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='Kore',
)
)
),
types.SpeakerVoiceConfig(
speaker='Jane',
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='Puck',
)
)
),
]
)
)
)
)
data = response.candidates[0].content.parts[0].inline_data.data
file_name='out.wav'
wave_file(file_name, data) # Saves the file to current directory
JavaScript
import {GoogleGenAI} from '@google/genai';
import wav from 'wav';
async function saveWaveFile(
filename,
pcmData,
channels = 1,
rate = 24000,
sampleWidth = 2,
) {
return new Promise((resolve, reject) => {
const writer = new wav.FileWriter(filename, {
channels,
sampleRate: rate,
bitDepth: sampleWidth * 8,
});
writer.on('finish', resolve);
writer.on('error', reject);
writer.write(pcmData);
writer.end();
});
}
async function main() {
const ai = new GoogleGenAI({});
const prompt = `TTS the following conversation between Joe and Jane:
Joe: How's it going today Jane?
Jane: Not too bad, how about you?`;
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-tts",
contents: [{ parts: [{ text: prompt }] }],
config: {
responseModalities: ['AUDIO'],
speechConfig: {
multiSpeakerVoiceConfig: {
speakerVoiceConfigs: [
{
speaker: 'Joe',
voiceConfig: {
prebuiltVoiceConfig: { voiceName: 'Kore' }
}
},
{
speaker: 'Jane',
voiceConfig: {
prebuiltVoiceConfig: { voiceName: 'Puck' }
}
}
]
}
}
}
});
const data = response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
const audioBuffer = Buffer.from(data, 'base64');
const fileName = 'out.wav';
await saveWaveFile(fileName, audioBuffer);
}
await main();
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-tts:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts":[{
"text": "TTS the following conversation between Joe and Jane:
Joe: Hows it going today Jane?
Jane: Not too bad, how about you?"
}]
}],
"generationConfig": {
"responseModalities": ["AUDIO"],
"speechConfig": {
"multiSpeakerVoiceConfig": {
"speakerVoiceConfigs": [{
"speaker": "Joe",
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Kore"
}
}
}, {
"speaker": "Jane",
"voiceConfig": {
"prebuiltVoiceConfig": {
"voiceName": "Puck"
}
}
}]
}
}
},
"model": "gemini-2.5-flash-preview-tts",
}' | jq -r '.candidates[0].content.parts[0].inlineData.data' | \
base64 --decode > out.pcm
# You may need to install ffmpeg.
ffmpeg -f s16le -ar 24000 -ac 1 -i out.pcm out.wav
Sprachstil mit Prompts steuern
Sie können Stil, Ton, Akzent und Tempo sowohl für die Sprachausgabe mit einem als auch mit mehreren Sprechern über Prompts in natürlicher Sprache steuern. Bei einem Prompt mit nur einem Sprecher können Sie beispielsweise Folgendes sagen:
Say in an spooky whisper:
"By the pricking of my thumbs...
Something wicked this way comes"
Geben Sie in einem Prompt mit mehreren Sprechern den Namen und das entsprechende Transkript für jeden Sprecher an. Sie können auch für jeden Lautsprecher einzeln Anweisungen geben:
Make Speaker1 sound tired and bored, and Speaker2 sound excited and happy:
Speaker1: So... what's on the agenda today?
Speaker2: You're never going to guess!
Verwenden Sie eine Stimmoption, die dem Stil oder der Emotion entspricht, die Sie vermitteln möchten, um diese noch stärker zu betonen. Im vorherigen Prompt könnte beispielsweise die gehauchte Stimme von Enceladus die Wörter „müde“ und „gelangweilt“ betonen, während der fröhliche Ton von Puck die Wörter „aufgeregt“ und „glücklich“ ergänzen könnte.
Prompt zum Konvertieren in Audio generieren
Die TTS-Modelle geben nur Audio aus. Sie können jedoch andere Modelle verwenden, um zuerst ein Transkript zu erstellen, das Sie dann dem TTS-Modell zum Vorlesen übergeben.
Python
from google import genai
from google.genai import types
client = genai.Client()
transcript = client.models.generate_content(
model="gemini-2.0-flash",
contents="""Generate a short transcript around 100 words that reads
like it was clipped from a podcast by excited herpetologists.
The hosts names are Dr. Anya and Liam.""").text
response = client.models.generate_content(
model="gemini-2.5-flash-preview-tts",
contents=transcript,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
types.SpeakerVoiceConfig(
speaker='Dr. Anya',
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='Kore',
)
)
),
types.SpeakerVoiceConfig(
speaker='Liam',
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(
voice_name='Puck',
)
)
),
]
)
)
)
)
# ...Code to stream or save the output
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
async function main() {
const transcript = await ai.models.generateContent({
model: "gemini-2.0-flash",
contents: "Generate a short transcript around 100 words that reads like it was clipped from a podcast by excited herpetologists. The hosts names are Dr. Anya and Liam.",
})
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-tts",
contents: transcript,
config: {
responseModalities: ['AUDIO'],
speechConfig: {
multiSpeakerVoiceConfig: {
speakerVoiceConfigs: [
{
speaker: "Dr. Anya",
voiceConfig: {
prebuiltVoiceConfig: {voiceName: "Kore"},
}
},
{
speaker: "Liam",
voiceConfig: {
prebuiltVoiceConfig: {voiceName: "Puck"},
}
}
]
}
}
}
});
}
// ..JavaScript code for exporting .wav file for output audio
await main();
Sprachoptionen
TTS-Modelle unterstützen die folgenden 30 Sprachoptionen im Feld voice_name
:
Zephyr – Hell | Puck – Upbeat | Charon – Informative |
Kore – Fest | Fenrir – Leicht erregbar | Leda – Jugendlich |
Orus – Firm | Aoede – Breezy | Callirrhoe – Gelassen |
Autonoe – Hell | Enceladus – Breathy | Iapetus – Clear |
Umbriel – Gelassen | Algieba – Smooth | Despina – Sanft |
Erinome – Wolkenlos | Algenib – Kiesig | Rasalgethi – Informativ |
Laomedeia – Upbeat | Achernar – Weich | Alnilam – Firm |
Schedar – Gerade | Gacrux – Nicht jugendfrei | Pulcherrima – Vorwärts |
Achird – Freundlich | Zubenelgenubi – Casual | Vindemiatrix – Sanft |
Sadachbia – Lively | Sadaltager – Sachkundig | Sulafat – Warm |
Alle Sprachoptionen sind in AI Studio verfügbar.
Unterstützte Sprachen
Die TTS-Modelle erkennen die Eingabesprache automatisch. Sie unterstützen die folgenden 24 Sprachen:
Sprache | BCP-47-Code | Sprache | BCP-47-Code |
---|---|---|---|
Arabisch (Ägypten) | ar-EG |
Deutsch (Deutschland) | de-DE |
Englisch (USA) | en-US |
Spanisch (USA) | es-US |
Französisch (Frankreich) | fr-FR |
Hindi (Indien) | hi-IN |
Indonesisch (Indonesien) | id-ID |
Italienisch (Italien) | it-IT |
Japanisch (Japan) | ja-JP |
Koreanisch (Korea) | ko-KR |
Portugiesisch (Brasilien) | pt-BR |
Russisch (Russland) | ru-RU |
Niederländisch (Niederlande) | nl-NL |
Polnisch (Polen) | pl-PL |
Thailändisch (Thailand) | th-TH |
Türkisch (Türkei) | tr-TR |
Vietnamesisch (Vietnam) | vi-VN |
Rumänisch (Rumänien) | ro-RO |
Ukrainisch (Ukraine) | uk-UA |
Bengalisch (Bangladesch) | bn-BD |
Englisch (Indien) | en-IN - und hi-IN -Set |
Marathi (Indien) | mr-IN |
Tamil (Indien) | ta-IN |
Telugu (Indien) | te-IN |
Unterstützte Modelle
Modell | Einzelner Sprecher | Multispeaker |
---|---|---|
Gemini 2.5 Flash Preview – TTS | ✔️ | ✔️ |
Gemini 2.5 Pro Preview – TTS | ✔️ | ✔️ |
Beschränkungen
- TTS-Modelle können nur Texteingaben empfangen und Audioausgaben generieren.
- Eine TTS-Sitzung hat ein Kontextfenster-Limit von 32.000 Tokens.
- Im Abschnitt Sprachen finden Sie Informationen zur Sprachunterstützung.
Nächste Schritte
- Kochbuch zur Audioerstellung
- Die Live API von Gemini bietet interaktive Optionen zur Audiogenerierung, die Sie mit anderen Modalitäten kombinieren können.
- Informationen zum Arbeiten mit Audioeingaben finden Sie im Leitfaden Verständnis von Audioinhalten.