Mit der Gemini API kann Texteingabe mithilfe nativer Text-to-Speech-Funktionen (TTS) in Audio mit einem oder mehreren Sprechern umgewandelt werden. Die Sprachausgabe (TTS) ist steuerbar. Das bedeutet, dass Sie natürliche Sprache verwenden können, um Interaktionen zu strukturieren und den Stil, Akzent, Rhythmus und Ton des Audios zu bestimmen.
Die TTS-Funktion unterscheidet sich von der Sprachgenerierung über die Live API, die für interaktive, unstrukturierte Audio- sowie multimodale Ein- und Ausgaben konzipiert ist. Während die Live API sich durch dynamische Konversationskontexte auszeichnet, ist die TTS-Funktion ü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 Sprachoption, 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 generieren, das Sie dann an das TTS-Modell übergeben, damit es vorgelesen wird.
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();
Stimmoptionen
TTS-Modelle unterstützen die folgenden 30 Sprachoptionen im Feld voice_name
:
Zephyr – Hell | Puck – Upbeat | Charon – Informative |
Kore – Firm | Fenrir – Leicht aufgeregt | Leda – Jugendlich |
Orus – Unternehmen | Aoede – Breezy | Callirrhoe – Gelassen |
Autonoe – Hell | Enceladus – Breathy | Iapetus – Clear |
Umbriel – Gelassen | Algieba – Smooth | Despina – Weich |
Erinome – Wolkenlos | Algenib – Kiesig | Rasalgethi – Informativ |
Laomedeia – Upbeat | Achernar – Weich | Alnilam – Firm |
Schedar – Gerade | Gacrux – Nicht jugendfrei | Pulcherrima – Kess |
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.