Tạo lời nói từ văn bản (TTS)

Gemini API có thể chuyển đổi văn bản đầu vào thành âm thanh của một hoặc nhiều người nói bằng cách sử dụng các chức năng tạo lời nói từ văn bản (TTS) của Gemini. Bạn có thể kiểm soát quá trình tạo văn bản sang lời nói (TTS). Tức là bạn có thể dùng ngôn ngữ tự nhiên để cấu trúc các lượt tương tác và hướng dẫn phong cách, giọng, tốc độgiọng điệu của âm thanh.

Khả năng TTS khác với khả năng tạo lời nói được cung cấp thông qua Live API. API này được thiết kế cho âm thanh tương tác, không có cấu trúc, cũng như đầu vào và đầu ra đa phương thức. Mặc dù Live API vượt trội trong các ngữ cảnh trò chuyện linh hoạt, nhưng TTS thông qua Gemini API được điều chỉnh cho phù hợp với những trường hợp yêu cầu đọc văn bản chính xác với khả năng kiểm soát chi tiết về phong cách và âm thanh, chẳng hạn như tạo podcast hoặc sách nói.

Hướng dẫn này trình bày cách tạo âm thanh một người nói và nhiều người nói từ văn bản.

Trước khi bắt đầu

Đảm bảo bạn sử dụng một biến thể mô hình Gemini 2.5 có các chức năng chuyển văn bản sang lời nói (TTS) của Gemini, như được liệt kê trong phần Các mô hình được hỗ trợ. Để có kết quả tối ưu, hãy cân nhắc xem mô hình nào phù hợp nhất với trường hợp sử dụng cụ thể của bạn.

Bạn nên kiểm thử các mô hình TTS của Gemini trong AI Studio trước khi bắt đầu xây dựng.

TTS một người nói

Để chuyển đổi văn bản thành âm thanh của một người nói, hãy đặt phương thức phản hồi thành "audio" và truyền một đối tượng speech_config có tên giọng nói. Bạn cần chọn tên giọng nói trong số các giọng nói đầu ra được tạo sẵn.

Ví dụ này lưu âm thanh đầu ra từ mô hình vào một tệp sóng:

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,