יצירת המרת טקסט לדיבור (TTS)

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

יכולת ה-TTS שונה מיכולת יצירת הדיבור שמוצעת דרך Live API, שנועד לאודיו אינטראקטיבי ולא מובנה, ולתשומות ולתפוקות מולטי-מודאליות. ‫Live API מצטיין בהקשרים דינמיים של שיחות, אבל TTS דרך Gemini API מותאם לתרחישים שבהם נדרשת הקראה מדויקת של טקסט עם שליטה מדויקת בסגנון ובצליל, כמו יצירת פודקאסטים או ספרי אודיו.

במדריך הזה מוסבר איך ליצור אודיו עם דובר אחד או עם כמה דוברים מטקסט.

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

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

מומלץ לבצע בדיקה של מודלי ה-TTS של Gemini ב-AI Studio לפני שמתחילים לבנות.

המרת טקסט לדיבור (TTS) עם דובר יחיד

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

בדוגמה הזו, האודיו שנוצר על ידי המודל נשמר בקובץ wave:

Python

from google import genai
import wave
import base64

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()

interaction = client.interactions.create(
    model="gemini-3.1-flash-tts-preview",
    input="Say cheerfully: Have a wonderful day!",
    response_format={"type": "audio"},
    generation_config={
        "speech_config": [
            {"voice": "Kore"}
        ]
    }
)

wave_file('out.wav', base64.b64decode(interaction.output_audio.data))

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 client