Gemini 3.8 TTS に移行する

このページでは、gemini-3.1-flash-tts-preview、gemini-2.5-flash-tts、gemini-2.5-pro-tts、gemini-2.5-flash-lite-preview-tts などの以前の Gemini TTS モデルから、Gemini 3.8 Flash TTS(gemini-3.8-flash-tts)と Gemini 3.8 Flash-Lite TTS(gemini-3.8-flash-lite-tts)に移行する方法について説明します。以前のモデルについては、 Google Cloudテキスト読み上げドキュメントの Gemini-TTS をご覧ください。

交換モデルを選択する

  • Gemini 3.8 Flash-Lite TTS は、gemini-3.1-flash-tts-preview の推奨される代替手段です。大量生産、音声エージェント、読み上げ機能、日常的な 1 人のスピーカーによる音声に適しています。
  • Gemini 3.8 Flash TTS はフラッグシップ モデルです。オーディオブックやスタジオ ナレーションなど、音声の忠実度、演技のニュアンス、複数の話者による会話、方言のカバー率が最も重要な場合に選択します。

どちらのモデルも同じリクエスト スキーマを使用するため、モデル ID を変更することでモデルを切り替えることができます。比較については、どのモデルをいつ使用するかをご覧ください。

変更の概要

地域 以前の Gemini TTS モデル Gemini 3.8 TTS モデル
API Cloud Text-to-Speech API または Gemini Enterprise API Gemini Enterprise API のみ(generateContent、streamGenerateContent)
ロケーション global とリージョン エンドポイント global のみ使用している
スタイルの方向性 テキスト("Say the following in a curious way: ...")または Cloud Text-to-Speech prompt フィールドに書き込まれます。 各パーツの speech_metadata.style
複数の話者による会話 1 つのテキスト ブロック内の話者接頭辞、または Cloud Text-to-Speech multiSpeakerMarkup speech_metadata.speaker を使用したターンごとに 1 つの部分
インラインの音声タグ 角かっこ([sigh] など) 山かっこ(<sigh> など)
音声の選択 prebuiltVoiceConfig.voiceName voiceConfig.voice。設計された音声 ID とボイス レプリケーション キーも受け入れます。prebuiltVoiceConfig.voiceName は、プリビルド音声では引き続き機能します。
カスタム音声 replicatedVoiceConfig のインライン参照音声 Voices API を介した音声設計とボイス レプリケーション
デフォルトの出力(Gemini Enterprise API) RAW 16 ビット PCM、24 kHz、モノラル 単項リクエスト: 完全な WAV ファイル(16 ビット PCM、24 kHz、モノラル)。ストリーミング リクエスト: RAW 16 ビット PCM、変更なし。responseFormat を使用して、他のエンコードをリクエストできます。
temperature、topP、topK 無視 INVALID_ARGUMENT エラーで不承認

リクエストを更新する

  1. スタイル指示を speech_metadata.style に移動する: Gemini 3.8 TTS モデルは text を文字通りの文字起こしとして読み取るため、テキストに書き込まれた指示が読み上げられる可能性があります。持続的な演技、トーン、韻律、ペースの指示を speech_metadata.style に入れます。
  2. 会話のターンごとに 1 つのパートを使用する: 複数の話者による会話の場合、各ターンを個別の part として渡し、各ターンの speech_metadata.speaker を multiSpeakerVoiceConfig の話者のいずれかに設定します。
  3. 角かっこタグを山かっこタグに置き換える: 山かっこ(<sigh>、<laugh>、<short pause> など)は、特定の時点のボーカル イベントにのみ使用します。「えー」などの言い淀みを文字起こしに直接書き込みます。
  4. ペルソナを事前に設計する: 長い「音声プロファイル」や「監督のメモ」のプロンプトを、音声設計で作成した音声に置き換え、style を短くするか空のままにします。
  5. サポートされていないパラメータを削除する: リクエストから temperature、topP、topK、candidateCount、systemInstruction を削除します。
  6. 単項リクエストからの WAV 出力を処理: 単項リクエストで、未加工の PCM ではなく完全な WAV ファイルが返されるようになりました。コードで WAV ヘッダーを追加したり、クリップを連結したりする場合は、ヘッダー ステップを削除するか、generationConfig.responseFormat を AUDIO_L16 に設定して、未加工の PCM 出力を保持します。
  7. Voices API で複製された音声の再作成: replicatedVoiceConfig でのインライン参照音声はサポートされていません。Voices API で保存済み音声または音声複製キーを作成し、voiceConfig.voice で渡します。詳細については、ボイス レプリケーションをご覧ください。

プロンプトの作成に関するガイダンスについては、プロンプト ガイドをご覧ください。

例

次の例は、gemini-3.1-flash-tts-preview リクエストとそれに対応する Gemini 3.8 TTS リクエストを示しています。

Gemini 3.8 以前

from google import genai
from google.genai import types

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
    model="gemini-3.1-flash-tts-preview",
    contents="Say the following in a curious way: OK, so... tell me about this [uhm] AI thing.",
    config=types.GenerateContentConfig(
        response_modalities=["AUDIO"],
        speech_config=types.SpeechConfig(
            language_code="en-US",
            voice_config=types.VoiceConfig(
                prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
            ),
        ),
    ),
)

Gemini 3.8 以降

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
    model="gemini-3.8-flash-lite-tts",
    contents=[{
        "role": "user",
        "parts": [{
            "text": "OK, so... uhm, tell me about this AI thing.",
            "speech_metadata": {"style": "curious"},
        }],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {
            "language_code": "en-US",
            "voice_config": {"voice": "Kore"},
        },
    },
)

どちらのレスポンスも response.candidates[0].content.parts[0].inline_data.data で音声を返します。以前のモデルは RAW 16 ビット PCM 音声(24 kHz、モノラル)を返し、Gemini 3.8 TTS モデルは完全な WAV ファイルを返します。

Cloud Text-to-Speech API から移行する

Cloud Text-to-Speech API(texttospeech.googleapis.com)を介して Gemini TTS を呼び出す場合は、代わりに aiplatform.googleapis.com の generateContent メソッドにリクエストを送信します。次の表に、Cloud Text-to-Speech リクエスト フィールドと Gemini Enterprise API リクエスト フィールドのマッピングを示します。

Cloud Text-to-Speech API(text:synthesize) Gemini Enterprise API(generateContent)
input.text contents[].parts[].text
input.prompt contents[].parts[].speechMetadata.style
input.multiSpeakerMarkup.turns[](speaker、text) 1 ターンにつき 1 つのパート(text と speechMetadata.speaker)
voice.modelName リクエスト URL のモデル ID
voice.name generationConfig.speechConfig.voiceConfig.voice
voice.languageCode generationConfig.speechConfig.languageCode
voice.multiSpeakerVoiceConfig.speakerVoiceConfigs[](speakerAlias、speakerId) generationConfig.speechConfig.multiSpeakerVoiceConfig.speakerVoiceConfigs[](speaker、voiceConfig.voice)
audioConfig.audioEncoding: LINEAR16 generationConfig.responseFormat[].audio.mimeType: AUDIO_WAV(単項リクエストのデフォルト)
audioConfig.audioEncoding: PCM AUDIO_L16(ストリーミング リクエストのデフォルト)
audioConfig.audioEncoding: MULAW または ALAW AUDIO_MULAW または AUDIO_ALAW
audioConfig.audioEncoding: MP3 または OGG_OPUS サポートされていません。クライアントで音声をエンコードします。
audioConfig.sampleRateHertz サポートされていません。出力サンプルレートについては、オーディオ出力形式をご覧ください。

Cloud Text-to-Speech API は、base64 でエンコードされた音声を audioContent で返します。Gemini Enterprise API は、candidates[0].content.parts[0].inlineData.data で返します。

次のステップ