יצירת דיבור באמצעות Gemini TTS

מודלים של המרת טקסט לדיבור (TTS) ב-Gemini ממירים טקסט לאודיו עם דובר אחד או עם כמה דוברים. אפשר לשלוט בסגנון, מבטא, קצב וטון של האודיו באמצעות מטא-נתונים מובְנים של תור (speech_metadata) ותגי קול מוטבעים.

בדף הזה מוסבר איך ליצור דיבור באמצעות המודלים הבאים, באמצעות השיטות generateContent ו-streamGenerateContent של Gemini Enterprise API:

מודלי ה-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, ומתאימה לייצור בכמויות גדולות, למפלי עוזרים קוליים לשיחות, לתכונות של קריאה בקול רם, לשכפול קולי ולדיבור יומיומי של דובר יחיד בשפות מרכזיות.

לפני שמתחילים

  1. הגדרת פרויקט והפעלת Gemini Enterprise API.
  2. מגדירים Application Default Credentials לסביבת הפיתוח.
  3. כדי להשתמש בדוגמאות של Python, צריך להתקין את גרסה 2.25.0 ואילך של Google Gen AI SDK:

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

מודלי ה-TTS של Gemini 3.8 זמינים במיקום global. שליחת בקשות לנקודת הקצה aiplatform.googleapis.com.

TTS עם דובר יחיד

כדי להמיר טקסט לאודיו עם דובר יחיד, מעבירים את התמליל המילולי ב-parts[].text, מוסיפים עיצוב אופציונלי ברמת התור ב-parts[].speech_metadata ומגדירים את הקול ב-speechConfig.voiceConfig.voice. בשדה voice אפשר להזין שם של קול מוכן מראש, מזהה קול מספריית קולות מורחבת או מזהה (voice_...) של קול מעוצב או משוכפל (או מפתח אופציונלי voicekey_... ללא שמירת מצב).

כברירת מחדל, בקשות unary מחזירות קובץ WAV מלא (16-bit PCM, ‏ 24 kHz,‏ mono), כך שאפשר לכתוב את בייטים האודיו ישירות לקובץ .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 עם דובר יחיד

כדי לקבל אודיו בזמן שהמודל עדיין מסנתז אותו, משתמשים בשיטה streamGenerateContent. תשובות בסטרימינג מחזירות נתחי PCM גולמיים של 16 ביט (24kHz, מונו) ללא כותרת, כך שאפשר להעביר כל נתח לנגן, לשקע או לצינור אודיו אחר כשהוא מגיע. בדוגמה הבאה של 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 תומכים בארבע דרכים לבחירה או ליצירה של קולות:

  1. קולות שנוצרו מראש: 30 קולות שנבחרו בקפידה.
  2. ספריית קולות מורחבת: יותר מ-2,000 קולות מוגדרים מראש שנבחרו בקפידה בשפות שונות, במבטאים אזוריים ובסגנונות שונים של דמויות.
  3. ‫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_... ודגימה של הקול.
  4. רפליקציה של קולות: שכפול קול של דובר מאודיו של הפניה והסכמה באמצעות אותה שיטה של create. מגדירים את type לערך VOICE_TYPE_REPLICATED. עם store: true, התשובה מחזירה מזהה מאוחסן של voice_.... עם store: false, הוא מחזיר מפתח voicekey_... ללא מצב.

מגבלות וערכי TTL של קולות מותאמים אישית

הקלדה קולית מצב אחסון ניהול תפוגה
קולות מאוחסנים (voice_..., שתוכננו או שוכפלו) store: true השיטות של Voices API‏ list, get ו-delete שנה אחרי השימוש האחרון
מפתחות לרפליקציה של קולות (voicekey_...) store: false מנוהל על ידי האפליקציה. ‫Google לא שומרת את המפתח. 7 ימים אחרי תאריך היצירה

יצירת דיבור באמצעות קול שנשמר מאפסת את תקופת השמירה של שנה אחת, כך שקול שמשתמשים בו באופן קבוע לא יפוג. בקשות ליצירת קול כפופות למכסה לכל פרויקט ולכל דקה. אם תחרגו מהמכסה, השיטה create תחזיר שגיאה RESOURCE_EXHAUSTED. מידע נוסף זמין במאמר בנושא מכסות ומגבלות מערכת.

קולות שנוצרו מראש

ברשימה הבאה מפורטים השמות של כל הקולות המוכנים מראש והמאפיינים שלהם:

  • ‫Achernar: רך
  • ‫Achird: ידידותי
  • ‫Algenib: מחוספס
  • ‫Algieba: החלקה
  • ‫Alnilam: סמכותי
  • ‫Aoede: קליל
  • ‫Autonoe: בהיר
  • ‫Callirrhoe: נינוח
  • ‫Charon: אינפורמטיבי
  • ‫Despina: חלק
  • ‫Enceladus: נשימתי
  • ‫Erinome: Clear
  • ‫Fenrir: נרגש
  • ‫Gacrux: בוגר
  • ‫Iapetus: ברור
  • ‫Kore: סמכותי
  • ‫Laomedeia: שמח
  • ‫Leda: צעיר
  • ‫Orus: סמכותי
  • ‫Puck: קצבי
  • ‫Pulcherrima: תהודה קדמית
  • ‫Rasalgethi: אינפורמטיבי
  • ‫Sadachbia: תוסס
  • ‫Sadaltager: בעל ידע
  • Schedar: Even
  • ‫Sulafat: חם
  • ‫Umbriel: קליל
  • ‫Vindemiatrix: עדין
  • ‫Zephyr: בהיר
  • ‫Zubenelgenubi: רגוע

ספריית קולות מורחבת

בנוסף ל-30 הקולות המוכנים מראש, ספריית הקולות המורחבת מספקת יותר מ-2,000 קולות מוגדרים מראש בשפות שונות, עם מבטאים אזוריים, דמויות וסוגי שימוש כמו ספרי אודיו, סוכנים וירטואליים וחדשות. כדי להשתמש בקול מספרייה, מעבירים את המזהה שלו ב-speechConfig.voiceConfig.voice, באותה דרך שבה מעבירים שם של קול מובנה.

כדי לעיין בספרייה, קוראים לשיטה (method) של Voices API‏ list (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 ביט, 24 kHz, מונו.
  • בקשות סטרימינג (streamGenerateContent) מחזירות נתחי PCM גולמיים (audio/l16) של 16 ביט בפורמט little-endian, ללא כותרת, ב-24‎ kHz, מונו.

כדי לבקש קידוד אחר, צריך להגדיר את generationConfig.responseFormat לפורמט אודיו. מודלי ה-TTS של Gemini 3.8 תומכים בערכים הבאים של mimeType:

ערך של mimeType פורמט תיאור
AUDIO_WAV (ברירת מחדל אונרית) ‫WAV (audio/wav) קובץ WAV מלא עם כותרת RIFF (PCM‏ 16 ביט, 24 kHz, מונו).
AUDIO_L16 (ברירת המחדל של סטרימינג) ‫Linear PCM‏ (audio/l16) ‫PCM גולמי של 16 ביט חתום בפורמט little-endian ללא כותרת. אפשר להשתמש בו לסטרימינג, לפייפליינים מותאמים אישית של אודיו או לשרשור קליפים רב-שלביים.
AUDIO_MULAW ‫μ-law (audio/mulaw) ‫G.711 μ-law companded audio (8 kHz, mono), בשימוש נפוץ בטלפוניה בצפון אמריקה וביפן.
AUDIO_ALAW A-law (audio/alaw) ‫G.711 A-law companded audio (8 kHz, mono), בשימוש נפוץ בטלפוניה אירופית ובינלאומית.

המערכת מתעלמת מהשדה 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

שפות נתמכות

מודלי ה-TTS של Gemini 3.8 מזהים את שפת הקלט באופן אוטומטי. ‫Gemini 3.8 Flash TTS תומך ב-130 שפות, ו-Gemini 3.8 Flash-Lite TTS תומך ב-101 שפות:

מגבלות

  • מודלים של TTS מקבלים קלט של טקסט בלבד ומחזירים פלט של אודיו בלבד.
  • בבקשות עם כמה דוברים צריך לבחור בדיוק שני דוברים. כדי לשלב קולות מעוצבים (voice_...) או משוכפלים (voice_... או voicekey_...) בדיאלוג עם כמה דמויות, או כדי להשתמש ביותר משני דוברים, צריך לבצע סינתזה של כל תור דיבור בנפרד ולשרשר את האודיו. אפשר לבקש פלט של AUDIO_L16 לכל תור, או להסיר את כותרת ה-WAV מכל קליפ לפני שמשרשרים את הקליפים.
  • המודלים זמינים רק במיקום global.
  • אין תמיכה בהוראות מערכת.
  • אי אפשר להגדיר את קצב הדגימה של הפלט. אין תמיכה בפורמטים MP3 ו-Ogg Opus.

המאמרים הבאים