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