Gemini 3.1 Flash TTS(モデルID gemini-3.1-flash-tts-preview)は、Googleが2026年4月15日にプレビュー公開した音声合成(TTS)モデルです。文中に [whispers] のような角括弧のタグを入れて、話し方や間を指定できます。2026年9月22日に後継の3.8 Flash TTSが一般提供(GA)となり、Gemini APIの非推奨ページでは2026年11月17日が終了予定日です。この記事では、3.1 Previewの仕様・料金・Pythonでの呼び出し方・タグと音声の選び方を整理し、終了に向けた移行で変わる点をまとめます。現行の3.8 TTSの実装と料金はGemini API TTSの使い方|3.8 Flash TTSの実装・料金・商用利用で解説しています。
まとめ:Gemini 3.1 Flash TTS Previewの要点
- 終了予定:Gemini APIの非推奨ページ(2026年10月22日更新)で、終了予定日は2026年11月17日です。公式の置き換え先は3.8 Flash-Lite TTSで、表現力を重視するなら3.8 Flash TTSです。
- 料金:100万トークンあたり入力(テキスト)1.00ドル、出力(音声)20.00ドル。音声は1秒25トークンなので、1分あたり約0.03ドル、1時間で約1.80ドルです。3.8 Flash-Lite TTSの音声出力は6.00ドルで、3.1の3割です。
- 使い方:
google-genaiのgenerate_contentで音声出力を指定し、返ってくるヘッダーなしPCMにWAVヘッダーを付けて保存します。 - 音声タグ:角括弧の英語タグを本文に差し込む方式で、日本語の台本にも英語のタグを混ぜます。3.8ではタグが山括弧に変わります。
- Cloud TTS経由の利用者:Cloud Text-to-Speech APIでは3.1が引き続き提供モデルとして掲載され、3.8はCloud TTS APIから使えません。移行先はGemini Enterprise APIです。
3.1 Flash TTS Previewの仕様と提供経路
入力はテキスト、出力は音声のみで、関数呼び出し・構造化出力・Live APIには非対応です。Gemini APIのモデルページでは「legacy preview model」と表示され、新規開発には3.8系を使うよう案内されています。
| 項目 | gemini-3.1-flash-tts-preview |
|---|---|
| 公開日 | 2026年4月15日(非推奨ページの公開日欄は2月26日) |
| 入力トークン上限 | 8,192 |
| 出力トークン上限 | 16,384(音声で約10分55秒) |
| 話者数 | 1人または2人 |
| プリセット音声 | 30種類(Kore、Puckなど) |
| 対応言語 | 70以上(日本語を含む) |
| ストリーミング | 2026年6月17日に対応 |
| Batch API | 対応(Flex・Priorityは非対応) |
| 既定の出力形式 | ヘッダーなしPCM(24kHz・16bit・モノラル) |
| Voice design・Voice replication | 非対応(3.8のみ) |
提供経路はGemini APIとGoogle AI Studio、Vertex AI(Cloud Text-to-Speech API経由を含む)、Google Vidsで、生成された音声にはすべてSynthIDの電子透かしが入ります。
音質の目安として、Googleは公開時に人の盲検評価によるArtificial AnalysisのTTSリーダーボードでElo 1,211と発表しました。2026年10月23日時点では3.1 Flash TTSが1,213で16位、3.8 Flash TTSが1,278で5位です(Provider Voice Arena)。日本語の品質をそのまま表す順位ではありません。
出力トークン上限の16,384を音声に換算すると約655秒です。ただし後述するとおり、公式ガイドは数分を超える出力で品質がぶれると注意しています。長い原稿は上限まで詰め込まず、段落単位で分けて生成します(公式ガイドも短いチャンクへの分割を勧めています)。
3.1 Flash TTSの料金と3.8 TTSとの単価比較
料金は音声の秒数でなくトークン数で決まり、音声は1秒あたり25トークンとして数えます。1分は1,500トークン、1時間は90,000トークンです。標準の呼び出しはFree Tierでも使えますが、Free Tierの入出力はGoogleの製品改善に使われます。Batchには無料枠がありません。
| モデル | 入力(100万トークン) | 音声出力(100万トークン) | 音声1分 | 音声1時間 |
|---|---|---|---|---|
| 3.1 Flash TTS Preview | 1.00ドル | 20.00ドル | 0.030ドル | 約1.80ドル |
| 3.1 Flash TTS Preview(Batch) | 0.50ドル | 10.00ドル | 0.015ドル | 約0.90ドル |
| 3.8 Flash TTS(2026年末まで) | 0.50ドル | 9.00ドル | 0.0135ドル | 約0.81ドル |
| 3.8 Flash-Lite TTS(2026年末まで) | 0.50ドル | 6.00ドル | 0.009ドル | 約0.54ドル |
| 2.5 Flash Preview TTS | 0.50ドル | 10.00ドル | 0.015ドル | 約0.90ドル |
| 2.5 Pro Preview TTS | 1.00ドル | 20.00ドル | 0.030ドル | 約1.80ドル |
単価はGemini APIの料金ページの2026年10月23日時点の値で、10月8日時点から変わっていません。3.8系の単価は2026年12月31日までの価格で、2027年1月1日からは入力・出力とも倍額(Flash-Liteの音声出力は12.00ドル)になります。倍額後でも3.1 Previewの20.00ドルより安いため、料金面で3.1にとどまる理由はありません。
2.5 Pro Preview TTSと比べると、単価は3.1 Previewと同じで、違いはFree Tierの有無です(2.5 Pro Preview TTSには無い)。2.5のTTS 2種も3.1と同じく2026年11月17日に終了予定なので、今から2.5と3.1のどちらを選ぶかを比べる意味はありません。
Pythonでの3.1 Flash TTSの呼び出し方(google-genai)
公式SDKの google-genai を pip install google-genai で導入し、環境変数 GEMINI_API_KEY にAPIキーを入れておけば genai.Client() が読み込みます。APIキーの取得からの流れはGemini APIとは?できること・料金・始め方にまとめています。コードを書く前に声やタグを試すなら、モデルページの「Try in Google AI Studio」からAI Studioを開けば、画面で調整した設定をAPIのコードとして書き出せます。
1人の声で読み上げる最小コード
import wave
from google import genai
from google.genai import types
client = genai.Client()
def save_wav(path, pcm, rate=24000):
# 3.1 Previewはヘッダーなしの生PCMを返すので、WAVヘッダーを付けて保存する
with wave.open(path, "wb") as wf:
wf.setnchannels(1)
wf.setsampwidth(2)
wf.setframerate(rate)
wf.writeframes(pcm)
response = client.models.generate_content(
model="gemini-3.1-flash-tts-preview",
contents="次の文を落ち着いた声で読み上げてください。本文:本日の会議は[short pause]15時に始まります。",
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
)
),
),
)
save_wav("out.wav", response.candidates[0].content.parts[0].inline_data.data)
2人の会話を1回で生成するコード
voice_config の代わりに multi_speaker_voice_config を使い、台本中の話者名と音声を対応づけます。話者は2人までです。
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
types.SpeakerVoiceConfig(
speaker="佐藤",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
),
),
types.SpeakerVoiceConfig(
speaker="田中",
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Puck")
),
),
]
)
)
# contents には「佐藤: [curiosity] 新しい音声モデル、もう試しましたか?」のように話者名付きで台本を書く
ストリーミングで受け取るコード
2026年6月17日から、3.1 Flash TTSは streamGenerateContent でのストリーミングに対応しています。SDKでは generate_content_stream を使い、届いたPCMのチャンクを順に再生するか、連結してから保存します。各チャンクもヘッダーなしPCMです。
chunks = []
for chunk in client.models.generate_content_stream(
model="gemini-3.1-flash-tts-preview",
contents="本日の会議は15時に始まります。",
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
voice_config=types.VoiceConfig(
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
)
),
),
):
if not chunk.candidates or not chunk.candidates[0].content or not chunk.candidates[0].content.parts:
continue
part = chunk.candidates[0].content.parts[0]
if part.inline_data:
chunks.append(part.inline_data.data)
save_wav("stream.wav", b"".join(chunks))
この3つのコードは、2026年10月23日公開のgoogle-genai 2.33.0(Python 3.12)からローカルの模擬サーバーへ送り、単発は generateContent、ストリーミングは streamGenerateContent?alt=sse に音声出力と話者設定が入ること、返したPCMが24kHz・16bit・モノラルのWAVで保存できることを確認しました。実APIでの音声生成と音質は確認に含みません。
プリセット音声30種類の選び方
3.1 Flash TTSで指定できるのは、Googleが用意した30種類のプリセット音声です。Gemini APIの音声生成ガイドは各音声に声の性格を1語で付けており、声選びはこの語を手がかりにします。下の表は公式表の英語を日本語に置き換えたものです。
| 声の性格 | 音声名 |
|---|---|
| 明るい(Bright) | Zephyr、Autonoe |
| 弾む(Upbeat) | Puck、Laomedeia |
| 情報を伝える(Informative) | Charon、Rasalgethi |
| きっぱり(Firm) | Kore、Orus、Alnilam |
| はっきり(Clear) | Iapetus、Erinome |
| なめらか(Smooth) | Algieba、Despina |
| のんびり(Easy-going) | Callirrhoe、Umbriel |
| 若々しい・軽やか(Youthful・Breezy) | Leda、Aoede |
| 落ち着き(Even・Soft) | Schedar、Achernar |
| やさしい・温かい(Gentle・Warm) | Vindemiatrix、Sulafat |
| 大人・知的(Mature・Knowledgeable) | Gacrux、Sadaltager |
| 親しみ・くだけた(Friendly・Casual・Lively) | Achird、Zubenelgenubi、Sadachbia |
| 興奮・息まじり(Excitable・Breathy) | Fenrir、Enceladus |
| しゃがれ・前に出る(Gravelly・Forward) | Algenib、Pulcherrima |
業務の案内ならKore・Charon・Iapetus、2人の掛け合いなら性格の違う声(KoreとPuckなど)を組み合わせると聞き分けやすくなります。性格語は英語の1語で付けられた目安なので、日本語の台本では候補を3つほどに絞って聞き比べてください。3.8では、この30種類に加えて数百の音声を持つExtended Voice Libraryと、文章から声を作るVoice designが使えます。
音声タグの書き方とプロンプト構造
角括弧タグの記法と使えるタグ
タグは [whispers] や [laughs] のように角括弧で囲み、話し方を切り替えたい位置に置きます。Google Cloudの解説記事は3.1 Flash TTSが200以上のタグに対応すると説明する一方、Gemini APIのガイド(2026年9月時点の版)は「どのタグが効き、どれが効かないかの網羅的な一覧は無い」としていました。固定の一覧から選ぶ方式ではなく、自然言語の指示として解釈される仕組みです。公式資料に例として出てくるタグは次の3種類に分けられます。
- 感情・トーン:
[excitement][curiosity][enthusiasm][nervousness][frustration][neutral]など - 速さと間:
[slow][fast][short pause][long pause]、[very slow]のような強弱付き - 非言語音:
[laughs][sighs][gasp][cough][whispers][shouting]
Google Cloudの解説には記法の注意が3つあります。タグ同士を隣接させず、文字か句読点で区切ること。タグは英語のみで、日本語など他言語の本文と組み合わせて使うこと。アクセントは言語設定ではなくスタイルの指示で出すこと。[slow] [whispers] 次は のようにタグを並べると、エラーになることがあると書かれています。
形容詞のタグにも注意が要ります。Cloud TTSのGemini-TTSのドキュメントは、[curious] [scared] [bored] のような形容詞のタグを「タグの語そのものが読み上げられ、文全体の調子も変わる」分類に入れ、多くの用途では望ましくないと警告しています。感情を付けたいときは [curiosity] のような名詞のタグを使うか、演出指示の側で調子を指定します。
Audio ProfileとDirector’s Notesを使うプロンプト構造
3.1 Flash TTSは、台本の前に演出の前提を書くと安定します。公式ガイドが推奨していた構成(2026年9月時点の版)は、Audio Profile(話し手の人物像)、Scene(場所と雰囲気)、Director’s Notes(声の調子・速さ・アクセント)、Sample context(場面の導入)、Transcript(読み上げる本文)の5要素です。タグは本文中の一瞬の切り替えに使い、全体の調子は前段のDirector’s Notesで決めるという役割分担になります。
3.1 Flash TTSで起きやすい失敗と対処
Gemini APIのガイドは、3.1 Flash TTS Preview固有の制約として次の4つを挙げていました(2026年9月時点の版。現在のガイドは3.8向けに改訂)。プレビュー版のまま本番で使っているなら、どれも呼び出し側で対処しておく必要があります。
- 選んだ声と出力が食い違う:低い男性の声に少女のような話し方をさせると、指定どおりに聞こえないことがあります。声の性格と台本の調子を合わせます。
- 長い出力で品質がぶれる:数分を超える出力では音質や一貫性が崩れ始めることがあります。台本を短いチャンクに分けて生成し、あとで結合します。
- まれに500エラーになる:モデルが音声でなくテキストのトークンを返すと、サーバーが500を返します。ごく少数のリクエストでランダムに起きるため、自動リトライを組み込みます。
- 分類器に拒否される:指示があいまいだと
PROHIBITED_CONTENTで拒否されたり、演出指示まで読み上げられたりします。冒頭で「次の文を音声合成してください」と明示し、読み上げる本文の開始位置をはっきり示します。
2026年11月17日の終了予定と3.8 TTSへの移行
終了日の扱いと移行先の選び方
Gemini APIの非推奨ページの日付は「最短で停止しうる日」で、正確な停止日は事前に通知するとGoogleは説明しています。2.5 Flash Preview TTSと2.5 Pro Preview TTSも同じ11月17日です。
停止後の動きにも注意が必要です。2026年10月8日の変更履歴では、非推奨になった3.7 Flashや3.5 Flashへのリクエストが後継モデルへ自動で回されると明記されました。一方、3.1 Flash TTS Previewについては、非推奨ページにも変更履歴にも自動切り替えの記載がありません(10月23日確認)。TTSは3.8でリクエストの書き方と出力形式が変わるので、転送を当てにせず、11月17日までにモデルIDとコードを書き換えてください。
移行先は2つです。Googleは3.8 Flash-Lite TTSを「3.1 Flash TTS Previewの置き換え」と位置づけており、読み上げ機能、音声エージェント、大量の一括生成ならこちらを選びます。オーディオブックや複雑な2人の掛け合い、方言など表現の細かさが要る用途は3.8 Flash TTSです。3.8の2モデルは同じAPI形式なので、互いの切り替えはモデルIDの変更だけで済みます。対応言語は3.8 Flash TTSが130以上、3.8 Flash-Lite TTSが100以上です。
Cloud Text-to-Speech経由の提供状況と3.8へ移れない制約
上の終了予定日はGemini APIの値です。Cloud Text-to-SpeechのGemini-TTSのドキュメントでは、2026年10月23日時点でも gemini-3.1-flash-tts-preview が提供モデルとして掲載され、終了日の記載はありません。同じドキュメントは、3.8 Flash TTSと3.8 Flash-Lite TTSはGemini Enterprise API経由のプレビューのみで、Cloud Text-to-Speech APIでは使えないと明記しています。Cloud TTSの合成APIに組み込んだシステムは、モデルIDを3.8に差し替えるだけでは移れず、呼び出すAPIそのものを変える必要があります。Gemini Enterprise APIの3.8では、temperature・topP・topK を送ると INVALID_ARGUMENT で拒否され、systemInstruction も外すよう移行ガイドが求めています。Gemini APIとGoogle Cloud側の認証やデータ所在地の違いはVertex AIとGemini APIの違いで比較しています。
Cloud TTS経由の3.1 Flash TTSには、Gemini APIと異なる点が3つあります。
- 入力はバイト数で制限:読み上げる text と演出の prompt はそれぞれ4,000バイトまで、合計8,000バイトまでです。日本語はUTF-8で1文字3バイトなので、本文は1回あたり約1,300字が上限です。出力は約655秒で、それを超える分は切り捨てられます。
- 出力形式を選べる:単発の合成ではLINEAR16(既定)に加えてMP3やOGG_OPUSも指定できます。Gemini APIの3.1は既定でヘッダーなしPCMを返し、MP3などを指定する方法は案内されていません。
- 無料枠がなくglobalのみ:単価はGemini APIと同じ(入力1.00ドル・音声出力20.00ドル/100万トークン)ですが無料枠はなく、usやeuropeなどの地域エンドポイントでは使えません。言語表では日本語(ja-JP)はGAですが、3.1 Flash TTSのモデルと音声自体はPreviewです。
MP3で受け取る処理やバイト数で文を区切る処理が組み込まれているなら、移行時はそこも書き換え対象です。既存システムとのAPI開発・システム連携の作り直しの範囲で、Cloud TTSとGemini APIのどちらに寄せるかを決めます。
3.1から3.8へ移行するときに書き換える箇所
モデルIDの差し替えだけでは動作が変わる箇所があります。音声生成ガイドにある移行手順の要点は次の表のとおりです。
| 項目 | 3.1 Flash TTS Preview | 3.8 TTS |
|---|---|---|
| 演出の指示 | 台本中に自然文で書く | speech_metadata.style に分離 |
| 話者名 | 台本中に「話者名:」で書く | 複数話者では各ターンに speech_metadata.speaker を指定 |
| 文中のタグ | 角括弧 [laughs] |
山括弧 <laugh>(一瞬の発声と間のみ) |
| 非ストリーミング時の既定出力 | ヘッダーなしPCM | WAV(RIFFヘッダー付き) |
| 声の作り込み | Audio Profileを長文で書く | Voice designで声を作りIDで指定 |
影響が大きいのは2点です。1つ目は、3.8が入力を一字一句読み上げる台本として扱うことです。上の最小コードのように「次の文を落ち着いた声で読み上げてください。」と台本に書いたままだと、その指示文まで音声になる可能性があります。指示は style へ移し、台本には読む文だけを残します。
2つ目はWAVヘッダーの二重付与です。3.1向けに wave モジュールでヘッダーを付けていたコードを3.8でそのまま使うと、すでにヘッダー付きのデータにもう一度ヘッダーを付けてしまいます。3.8の非ストリーミング出力では、返ってきたバイト列をそのまま .wav に書き出します。生PCMが必要なら出力形式を明示し、generateContentでは AUDIO_L16、Interactions APIでは audio/l16 を指定します。3.8での具体的なコードは3.8 Flash TTSの実装手順を参照してください。
よくある質問
Gemini 3.1 Flash TTSは日本語に対応していますか?
対応しています。入力言語は自動で判定され、3.1時代の公式ガイドの対応言語表に日本語(ja)が含まれていました。Cloud TTSの言語表でも日本語(ja-JP)はGAです(3.1のモデルと音声はPreview)。タグは英語で書き、日本語の台本に混ぜて使います。
gemini-3.1-flash-tts-previewはいつまで使えますか?
Gemini APIでは2026年11月17日が終了予定日です。これは最短の日付で、正確な停止日は事前に通知されます。移行先は3.8 Flash-Lite TTSか3.8 Flash TTSです。Cloud Text-to-Speech APIでは10月23日時点で終了日が掲載されていません。
Gemini TTSでSSMLは使えますか?
Gemini APIの音声生成ガイドにも、Cloud TTSのGemini-TTSのドキュメントにも、SSMLの記載はありません(10月23日確認)。読み方や間の制御は、自然文の演出指示と角括弧のタグで行います。SSMLで組んだ既存の原稿は、[short pause] などのタグと演出指示に書き換えて使います。
Gemini 3.5 Flash TTSや3.1 Pro TTSというモデルはありますか?
どちらもありません。Gemini APIの料金ページに載っているTTSモデルは、3.8 Flash TTS、3.8 Flash-Lite TTS、3.1 Flash TTS Preview、2.5 Flash Preview TTS、2.5 Pro Preview TTSの5つです(2026年10月23日時点)。「3.1 Flash-Lite TTS」もありません。Gemini APIでFlash-LiteのTTSは3.8からで、Cloud Text-to-Speech APIには別に2.5 Flash-Lite Preview TTS(gemini-2.5-flash-lite-preview-tts)があります。
生成した音声は商用利用できますか?
Gemini APIの追加利用規約は、生成したコンテンツの所有権をGoogleが主張しないと定めています。一方で、同じか似た内容が他の利用者にも生成されうること、生成物の使い方には利用者が責任を負うことも書かれています。Free Tierでは入出力が製品改善に使われ、人のレビュアーが読む場合があるうえ、規約は機密情報や個人情報を送らないよう求めています。商用の原稿は有料枠で処理します。3.8を含む商用利用の条件はGemini API TTSの解説で詳しく扱っています。