Генерация речи из текста (TTS)

API Gemini позволяет преобразовывать текстовый ввод в аудиопоток с одним или несколькими говорящими, используя возможности генерации речи (TTS) Gemini. Генерация речи (TTS) является управляемой , то есть вы можете использовать естественный язык для структурирования взаимодействия и управления стилем , акцентом , темпом и тоном аудио.

Функция преобразования текста в речь (TTS) отличается от генерации речи, предоставляемой через Live API , которая предназначена для интерактивного, неструктурированного аудио и многомодальных входных и выходных данных. В то время как Live API превосходно подходит для динамичных разговорных контекстов, TTS через Gemini API разработана для сценариев, требующих точного воспроизведения текста с тонкой настройкой стиля и звучания, таких как создание подкастов или аудиокниг.

В этом руководстве показано, как создавать аудиозаписи с одним или несколькими говорящими из текста.

Прежде чем начать

Убедитесь, что вы используете модель Gemini 2.5 с поддержкой преобразования текста в речь (TTS) Gemini, указанную в разделе «Поддерживаемые модели» . Для достижения оптимальных результатов определите, какая модель лучше всего подходит для ваших конкретных задач.

Возможно, вам будет полезно протестировать модели Gemini TTS в AI Studio, прежде чем приступать к разработке.

Синхронизация речи и речи с одним динамиком

Для преобразования текста в аудиопоток от одного говорящего установите режим ответа на "аудио" и передайте объект speech_config с именем голоса. Вам потребуется выбрать имя голоса из предварительно созданных выходных голосов .

В этом примере выходной аудиофайл модели сохраняется в формате WAV:

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

ОТДЫХ

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" }
      ]
    }
  }'

Вы можете получить сгенерированные аудиоданные, используя свойство interaction.output_audio , которое возвращает последний сгенерированный аудиоблок. Подробную информацию об удобных свойствах см. в обзоре взаимодействий .

Многоканальное синтезирование речи

Для многоканального аудио вам потребуется объект multi_speaker_voice_config , в котором каждый динамик (до 2) будет настроен как speaker_voice_config . Необходимо указать для каждого speaker те же имена, что и в командной строке :

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,