המודלים של Gemini להמרת טקסט לדיבור (TTS) ממירים טקסט לאודיו של דובר אחד או של כמה דוברים. אתם יכולים לשלוט בסגנון, במבטא, בקצב ובטון של האודיו באמצעות מטא-נתונים מובְנים של תור (speech_metadata) ותגי קול מוטבעים.
בדף הזה מוסבר איך ליצור דיבור באמצעות המודלים הבאים, באמצעות השיטות generateContent ו-streamGenerateContent של Gemini Enterprise API:
- Gemini 3.8 Flash TTS
(
gemini-3.8-flash-tts) - Gemini 3.8 Flash-Lite TTS
(
gemini-3.8-flash-lite-tts)
המודלים של TTS מותאמים להקראה מדויקת של טקסט, עם שליטה מדויקת בסגנון ובצליל, כמו קריינות, ספרי אודיו ותשובות של סוכן קולי. כדי לנהל שיחות אינטראקטיביות בזמן אמת עם קלט ופלט של אודיו, צריך להשתמש במקום זאת ב-Live API.
אם אתם משתמשים במודל TTS קודם של Gemini, כמו gemini-3.1-flash-tts-preview, כדאי לעיין במדריך להעברת נתונים.
מודלים נתמכים
| דגם | דובר יחיד | מספר דוברים | סטרימינג | עיצוב קולי | רפליקציה של קולות |
|---|---|---|---|---|---|
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 (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) |
הדוגמאות והתכונות בדף הזה רלוונטיות למודלים של Gemini 3.8 TTS. למידע על מודלים קודמים, אפשר לעיין במאמר Gemini-TTS במסמכי התיעוד שלGoogle Cloud Text-to-Speech.
מתי להשתמש בכל מודל
שני מודלי ה-TTS של Gemini 3.8 חולקים את אותה סכימת בקשות ואת אותו פורמט הנחיות, כך שאפשר לעבור ביניהם על ידי שינוי מזהה המודל:
- השתמשו ב-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 Enterprise API.
- מגדירים Application Default Credentials לסביבת הפיתוח.
כדי להשתמש בדוגמאות של Python, צריך להתקין את גרסה 2.25.0 ואילך של Google Gen AI SDK:
pip install --upgrade "google-genai>=2.25.0"
המודלים של Gemini 3.8 TTS זמינים במיקום global. שליחת בקשות לנקודת הקצה aiplatform.googleapis.com.
המרת טקסט לדיבור (TTS) עם דובר יחיד
כדי להמיר טקסט לאודיו עם דובר יחיד, מעבירים את התמליל המילולי ב-parts[].text, מוסיפים עיצוב אופציונלי ברמת התור ב-parts[].speech_metadata ומגדירים את הקול ב-speechConfig.voiceConfig.voice. בשדה voice אפשר להזין שם של קול מובנה, מזהה קול מ-Extended Voice Library או מזהה (voice_...) של קול מעוצב או משוכפל (או מפתח voicekey_... אופציונלי ללא שמירת מצב).
כברירת מחדל, בקשות unary מחזירות קובץ WAV מלא (PCM של 16 ביט, 24kHz, מונו), כך שאפשר לכתוב את בייטי האודיו ישירות לקובץ .wav. במקום זאת, בקשות סטרימינג מחזירות קטעי PCM גולמיים. פרטים על קידודים אחרים מופיעים במאמר בנושא פורמטים של פלט אודיו.
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
המרת טקסט לדיבור (TTS) בסטרימינג של דובר יחיד
כדי לקבל אודיו בזמן שהמודל עדיין מסנתז אותו, משתמשים ב-method streamGenerateContent. התשובות בסטרימינג מחזירות קטעי PCM גולמיים של 16 ביט ללא כותרת (24 kHz, מונו), כך שאפשר להעביר כל קטע לנגן, לשקע או לצינור עיבוד נתונים אחר של אודיו כשהוא מגיע. בדוגמה הבאה של Python, הפונקציה emit_audio מייצגת את היעד הזה.
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
הקובץ streamed.pcm מכיל אודיו גולמי בפורמט PCM של 16 ביט בתדר 24kHz, מונו.
המרת טקסט לדיבור (TTS) עם כמה דוברים
כדי להגדיר דיאלוג בין שני רמקולים, צריך להגדיר את שני הרמקולים ב-speechConfig.multiSpeakerVoiceConfig.speakerVoiceConfigs. אחר כך מעבירים כל תור כ-part נפרד, מגדירים את speech_metadata.speaker בכל תור לאחד משמות הדוברים שהוגדרו, ומוסיפים style אופציונלי ברמת התור.
כדי להשתמש בבקשות עם כמה דוברים, צריך לבחור בדיוק שני דוברים.
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
המרת טקסט לדיבור (TTS) בסטרימינג עם מספר דוברים
אפשר גם להפעיל סטרימינג לבקשות שמופנות לכמה רמקולים. משתמשים באותה בקשה כמו בהמרת טקסט לדיבור (TTS) עם מספר דוברים באמצעות השיטה 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
קובץ dialogue_streamed.pcm מכיל אודיו PCM גולמי של 16 ביט ב-24kHz, מונו.
שליטה בסגנון הדיבור באמצעות מטא-נתונים ותגים
מודלי ה-TTS של Gemini 3.8 מתייחסים לשדה text כתמליל מילולי.
יכול להיות שהוראות שכתובות בטקסט, כמו "Say cheerfully: Hello!" או "Speaker 1: Hello!", יוקראו בקול. כדי לשלוט במסירה, פצלו את ההוראות לפי היקף:
- הנחיות לכל התשובה (
speech_metadata.style): הנחיות לגבי הרגש, סגנון הדיבור, ההנגנה, הקצב ועוצמת הקול שחלות על כל התשובהspeech_metadata.style. לדוגמה,"style": "whispered urgently","style": "out of breath"או"style": "warm and enthusiastic". - אירועים בנקודת זמן מסוימת (תגים מוטבעים): מכניסים לתוך התמליל צלילים קוליים רגעיים שאינם דיבור והפסקות, בתוך סוגריים זוויתיים. לדוגמה,
"Wait... <short pause> did you hear that? <sigh>"או"Excuse me <cough> as I was saying...".
במדריך לכתיבת הנחיות מפורט מידע נוסף.
אפשרויות קוליות
מודלי ה-TTS של Gemini 3.8 תומכים בארבע דרכים לבחירה או ליצירה של קולות:
- קולות שנוצרו מראש: 30 קולות שנבחרו בקפידה.
- ספריית קולות מורחבת: יותר מ-2,000 קולות מוגדרים מראש שנבחרו בקפידה בשפות שונות, עם מבטאים אזוריים ופרסונות של דמויות.
- Voice design:
יוצרים קול בהתאמה אישית מתיאור בשפה טבעית באמצעות השיטה Voices
API
create(client.voices.create()ב-Google Gen AI SDK אוPOST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/voices). מגדירים אתtypeל-VOICE_TYPE_PROMPTEDואתstoreל-true. התשובה מחזירה מזהה מאוחסן שלvoice_...ודגימה של הקול. - שכפול קול: שכפול קול של דובר מקובץ אודיו לדוגמה וקובץ אודיו של הסכמה, באמצעות אותה שיטה של
create. מגדירים אתtypeלהיותVOICE_TYPE_REPLICATED. עםstore: true, התשובה מחזירה מזהה מאוחסן שלvoice_.... עםstore: false, הפונקציה מחזירה מפתחvoicekey_...ללא מצב.
מגבלות ו-TTL של קול מותאם אישית
| הקלדה קולית | מצב אחסון | ניהול | תפוגה |
|---|---|---|---|
קולות שמורים (voice_..., מעוצבים או משוכפלים) |
store: true |
השיטות list, get ו-delete ב-Voices API |
שנה אחרי השימוש האחרון |
מפתחות לרפליקציה של קולות (voicekey_...) |
store: false |
מנוהל על ידי האפליקציה. Google לא שומרת את המפתח. | 7 ימים אחרי תאריך היצירה |
יצירת דיבור באמצעות קול שמור מפעילה מחדש את תקופת השמירה של שנה, כך שקול שאתם משתמשים בו באופן קבוע לא יפוג. בקשות ליצירת קולות כפופות למכסה לכל פרויקט, לדקה. אם תחרגו מהמכסה, השיטה create תחזיר שגיאה RESOURCE_EXHAUSTED. מידע נוסף זמין במאמר בנושא מכסות ומגבלות מערכת.
אחסון ושמירה של נתונים
Google שומרת את הקלט שאתם מספקים כשאתם יוצרים קול שמור, יחד עם פריטי המידע הקוליים שנוצרו מהם, ומשייכת אותם לפרויקט ב-Google Cloud שבו נוצר הקול.
כשיוצרים קול משוכפל מהקלטה של דובר, נשמרים הנתונים הבאים:
- אודיו להשוואה: דגימה של הדובר שהקול שלו משוכפל.
- אודיו של הסכמה: הדובר קורא את הצהרת ההסכמה הנדרשת.
כשאתם יוצרים קול מעוצב באמצעות תיאור טקסט של קול בהנחיה, נשמרים הפרטים הבאים:
- הנחיית הטקסט שכתבתם כדי לתאר את הקול.
- האודיו של הקול שנוצר מהפרומפט הזה, והמודל משתמש בו כהפניה לקול.
לקול מעוצב אין אודיו של הסכמה, כי הוא נוצר מתיאור ולא מהקלטה של אדם.
הקלט הקולי נשמר כדי שהקול שלכם ימשיך לפעול גם אחרי עדכוני המודל. כשהמודל הבסיסי מתעדכן, פריטי הקול נוצרים מחדש מהקלט המאוחסן. אם לא נמצאו קלטים שמורים לקול מסוים, אי אפשר ליצור מחדש את פריטי המידע שנוצרו, והקול מפסיק לפעול אחרי עדכון המודל. אחר כך תצטרכו ליצור את הקול מחדש.
הקלט שנשמר משמש רק ליצירה מחדש של הקול כשהמודלים מתעדכנים. הם מוצפנים במנוחה ומבודדים לפרויקט שיצר את הקול.
תקופת שמירה
הקולות וכל הנתונים המשויכים שנשמרים נשמרים למשך שנה אחת (365 ימים) מהפעם האחרונה שהשתמשתם בקול כדי לבצע סינתזה של דיבור. התקופה מתחילה כשיוצרים את הקול, ומתאפסת בכל פעם ששולחים בקשת סינתזה שמשתמשת בקול. אם לא משתמשים בקול במשך 365 ימים, הקול, הקלט ששמור בו והפריטים שנוצרו ממנו נמחקים.
מחיקה על ידי הלקוח
אתם יכולים למחוק קול בכל שלב באמצעות השיטה delete ב-Voices API.
כשמוחקים קול, נמחקים גם הקלט המאוחסן שלו ופריטי המידע שנוצרו ממנו. אם מוחקים את הפרויקט Google Cloud שבבעלותו הקול, גם הקול נמחק בהתאם לתהליך המחיקה הרגיל של פרויקטים.
קולות מוכנים מראש
ברשימה הבאה מוצגים השמות של הקולות המובנים והמאפיינים שלהם:
- Achernar: רך
- Achird: ידידותי
- Algenib: מחוספס
- Algieba: החלקה
- Alnilam: קשיח
- Aoede: קליל
- Autonoe: בהיר
- Callirrhoe: נינוח
- Charon: אינפורמטיבי
- Despina: חלק
- Enceladus: נשימתי
- Erinome: Clear
- Fenrir: נרגש
- Gacrux: בוגר
- Iapetus: ברור
- Kore: סמכותי
- Laomedeia: שמח
- Leda: צעיר
- Orus: Firm
- Puck: שמח
- Pulcherrima: תהודה קדמית
- Rasalgethi: אינפורמטיבי
- Sadachbia: תוסס
- Sadaltager: בעל ידע
- Schedar: זוגי
- Sulafat: חם
- Umbriel: קליל
- Vindemiatrix: עדין
- Zephyr: בהיר
- Zubenelgenubi: רגוע
ספריית קולות מורחבת
בנוסף ל-30 הקולות המוגדרים מראש, ספריית הקולות המורחבת כוללת יותר מ-2,000 קולות מוגדרים מראש שנבחרו בקפידה במגוון שפות, מבטאים אזוריים, דמויות ותרחישי שימוש כמו ספרי אודיו, סוכנים בממשק שיחה וחדשות.
כדי להשתמש בקול מספרייה, מעבירים את המזהה שלו ב-speechConfig.voiceConfig.voice, באותה דרך שבה מעבירים שם של קול מובנה.
כדי לעיין בספרייה, קוראים ל-method list של Voices API (ListVoices). הפעולה הזו מחזירה את הקולות בהתאמה אישית ששמורים בפרויקט, ואחריהם את הקולות המובְנים ואת הקולות של Extended Voice Library. כל קול בספרייה כולל את ה-id שלו ומטא-נתונים כמו language_code, accent, gender, pitch, persona ו-description. כדי לצמצם את התוצאות, משתמשים במסננים הבאים:
-
type: מקור הקול:prebuiltלקולות מוכנים מראש ולקולות מהספרייה,promptedלקולות מעוצבים אוreplicatedלקולות משוכפלים. אם מעבירים יותר מערך אחד, השיטה מחזירה קולות שתואמים לאחד מהם. -
search: טקסט להתאמה, ללא תלות ברישיות, לשם המוצג ולתיאור של כל קול.
בדוגמה הבאה, הספרייה מחפשת קולות של קריינים:
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"
השיטה list מחזירה עד 50 קולות בכל דף. כדי לקבל את הדף הבא, מעבירים את הערך next_page_token מהתגובה בתור הפרמטר page_token.
פורמטים של פלט אודיו
קידוד האודיו שמוגדר כברירת מחדל תלוי בשיטה:
- בקשות unary (
generateContent) מחזירות קובץ WAV מלא (audio/wav) עם כותרת RIFF: PCM 16 ביט, 24kHz, מונו. - בקשות סטרימינג (
streamGenerateContent) מחזירות נתחי PCM גולמיים (audio/l16) של 16 ביט בפורמט little-endian, ללא כותרת, ב-24 kHz, מונו.
כדי לבקש קידוד אחר, מגדירים את generationConfig.responseFormat לפורמט אודיו. המודלים של Gemini 3.8 TTS תומכים בערכים הבאים של mimeType:
ערך של mimeType |
פורמט | תיאור |
|---|---|---|
AUDIO_WAV (ברירת המחדל של unary) |
WAV (audio/wav) |
קובץ WAV מלא עם כותרת RIFF (PCM 16 ביט, 24 kHz, מונו). |
AUDIO_L16 (ברירת המחדל לסטרימינג) |
PCM לינארי (audio/l16) |
PCM גולמי של 16 ביט חתום בפורמט little-endian ללא כותרת. אפשר להשתמש בו לסטרימינג, לצינורות אודיו מותאמים אישית או לשרשור של קליפים עם כמה תגובות. |
AUDIO_MULAW |
μ-law (audio/mulaw) |
אודיו דחוס לפי חוק G.711 μ (8kHz, מונו), שמשמש בדרך כלל בטלפוניה בצפון אמריקה וביפן. |
AUDIO_ALAW |
A-law (audio/alaw) |
אודיו דחוס G.711 A-law (8kHz, מונו), שמשמש בדרך כלל בטלפוניה אירופאית ובינלאומית. |
המודלים מתעלמים מהשדה sampleRate. הפלט של Linear PCM ו-WAV הוא 24 kHz,
והפלט של μ-law ו-A-law הוא 8 kHz, בלי קשר לקצב בתגובה
mimeType. אם צינור הנתונים דורש תדירות דגימה שונה, צריך לדגום מחדש את הפלט בלקוח.
בדוגמה הבאה נשלחת בקשה לפלט μ-law לצינור עיבוד נתונים של טלפוניה. Google Gen AI SDK ל-Python לא חושף את responseFormat ב-GenerateContentConfig, ולכן הדוגמה ב-Python מעבירה אותו בגוף הבקשה באמצעות http_options.extra_body.
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
שפות נתמכות
המודלים של Gemini 3.8 TTS מזהים את שפת הקלט באופן אוטומטי. Gemini 3.8 Flash TTS תומך ב-130 שפות, ו-Gemini 3.8 Flash-Lite TTS תומך ב-101 שפות:
מגבלות
- מודלים של TTS מקבלים קלט של טקסט בלבד ומחזירים פלט של אודיו בלבד.
- כדי להשתמש בבקשות עם כמה דוברים, צריך לבחור בדיוק שני דוברים. כדי לשלב קולות מעוצבים (
voice_...) או משוכפלים (voice_...אוvoicekey_...) בדיאלוג עם כמה דמויות, או כדי להשתמש ביותר משני דוברים, צריך לבצע סינתזה של כל תור דיבור בנפרד ולשרשר את האודיו. בקשו פלט שלAUDIO_L16לכל תור, או הסירו את כותרת ה-WAV מכל קליפ לפני שאתם משרשרים את הקליפים. - המודלים זמינים רק במיקום
global. - אין תמיכה בהוראות מערכת.
- אי אפשר להגדיר את תדירות הדגימה של הפלט. אין תמיכה בפלט בפורמט MP3 ו-Ogg Opus.
המאמרים הבאים
- במדריך לכתיבת הנחיות מוסבר איך להנחות את Gemini לגבי הסגנון, הקצב והצלילים הקוליים.
- יצירת קולות בהתאמה אישית מתיאור טקסט באמצעות עיצוב קול.
- לשכפל קול של דובר באמצעות רפליקציה של קולות.
- אתם יכולים לעיין במפרטים של המודלים בדפים של Gemini 3.8 Flash TTS ו-Gemini 3.8 Flash-Lite TTS.