Pembuatan text-to-speech (TTS)

Gemini API dapat mengubah input teks menjadi audio satu penutur atau multi-penutur menggunakan kemampuan pembuatan text-to-speech (TTS) Gemini. Pembuatan text-to-speech (TTS) dapat dikontrol, artinya Anda dapat menggunakan bahasa alami untuk menyusun interaksi dan memandu gaya, aksen, kecepatan, dan nada audio.

Kemampuan TTS berbeda dengan pembuatan ucapan yang disediakan melalui Live API, yang dirancang untuk input dan output multimodal, audio yang tidak terstruktur, dan interaktif. Meskipun Live API unggul dalam konteks percakapan dinamis, TTS melalui Gemini API disesuaikan untuk skenario yang memerlukan pembacaan teks yang tepat dengan kontrol terperinci atas gaya dan suara, seperti pembuatan podcast atau buku audio.

Panduan ini menunjukkan cara membuat audio satu pembicara dan beberapa pembicara dari teks.

Sebelum memulai

Pastikan Anda menggunakan varian model Gemini 2.5 dengan kemampuan text-to-speech (TTS) Gemini, seperti yang tercantum di bagian Model yang didukung. Untuk hasil yang optimal, pertimbangkan model mana yang paling sesuai dengan kasus penggunaan spesifik Anda.

Anda mungkin merasa perlu menguji model TTS Gemini di AI Studio sebelum mulai membangun.

TTS satu penutur

Untuk mengonversi teks menjadi audio satu penutur, tetapkan modalitas respons ke "audio", dan teruskan objek speech_config dengan nama suara. Anda harus memilih nama suara dari suara output bawaan.

Contoh ini menyimpan audio output dari model dalam file 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 = new GoogleGenAI({});

   const interaction = await 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' }
         ]
      },
    });

   const audioBuffer = Buffer.from(interaction.output_audio.data, 'base64');

   await saveWaveFile('out.wav', audioBuffer);
}
await main();

REST

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-tts-preview",
    "input": "Say cheerfully: Have a wonderful day!",
    "response_format": {
       "type": "audio"
     },
    "generation_config": {
      "speech_config": [
        { "voice": "Kore" }
      ]
    }
  }'

Anda dapat mengambil data audio yang dihasilkan menggunakan properti interaction.output_audio, yang menampilkan blok audio terakhir yang dihasilkan. Untuk mengetahui detail properti praktis, lihat Ringkasan interaksi.

TTS multi-penutur

Untuk audio multi-pembicara, Anda memerlukan objek multi_speaker_voice_config dengan setiap pembicara (hingga 2) yang dikonfigurasi sebagai speaker_voice_config. Anda harus menentukan setiap speaker dengan nama yang sama yang digunakan dalam prompt:

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

prompt = """TTS the following conversation between Joe and Jane:
         Joe: How's it going today Jane?
         Jane: Not too bad, how about you?"""

 interaction = client.interactions.create(
     model="gemini-3.1-flash-tts-preview",
     input=prompt,
     response_format={"type": "audio"},
     generation_config={
         "speech_config": [
             {"speaker": "Joe", "voice": "Kore"},
             {"speaker": "Jane", "voice": "Puck"}
         ]
     }
 )

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

JavaScript