Mihata
AI活用2026.09.24

gemini-3.1-flash-tts-preview 移行の全手順

2026年9月22日、Google が Gemini API の changelog で gemini-3.8-flash-lite-ttsgemini-3.1-flash-tts-preview の「置き換え先(replacement)」として名指ししました。preview 版の TTS で音声を作っている実装は、いずれ手を入れることになります。この記事は「何がどう壊れるか」と「どの順番で直すか」に絞って書きます。

結論:置き換え先は2つ・停止日は未発表・でも移行したほうが得

先に答えを3つ置きます。第一に、置き換え先は用途で2つに分かれます。声の質と演技のニュアンスを取るなら gemini-3.8-flash-tts、大量生産・低レイテンシ・コスト効率を取るなら gemini-3.8-flash-lite-tts です。公式モデルページが「Recommended replacement for」の欄に gemini-3.1-flash-tts-preview と書いているのは 後者(Flash-Lite TTS)のほうです。

第二に、gemini-3.1-flash-tts-preview の停止日(Shutdown date)はまだ発表されていませんdeprecations ページの該当行は「No shutdown date announced」です。つまり「置き換え先が決まった=方向は確定」だけれども、「いつ止まるか」は未定。今日明日で動かなくなる、という記事を見かけたら疑ってください。

第三に、それでも移行を後回しにする理由はあまりありません。音声出力の単価は 1M トークンあたり $20.00 → $6.00(旧 preview → Flash-Lite TTS)で、70%下がります。音声は1秒=25トークン換算なので、1分あたりでは $0.03 → $0.009 です。ただしこれは2026年12月31日までの導入価格で、2027年1月1日から2倍($12.00/1分 $0.018)になります。ここを読み落とすと来年の見積もりが狂います。料金の全体像はGemini 3.8 Flash TTS の料金と使い方をまとめた記事に整理しました。

移行で壊れる5点:症状・原因・直し方

3.8 世代の TTS は、入力テキストを厳密に「読み上げ原稿」として扱います。ここが preview 版との最大の違いで、壊れ方のほとんどはこの1点から派生します。公式の Migration guide を、実際に踏む順番に組み替えて表にしました。

#

症状(何が起きるか)

原因

直し方

1

「Say cheerfully コロン」「Speaker 1 コロン」といった指示文がそのまま音声に混ざる

地の文の指示を演出として解釈しなくなった。原稿の一部として読まれる

指示を speech_metadata の style(話し方)と speaker(話者ラベル)へ移す。Interactions API は各テキストブロックの annotation に、GenerateContent API は各 part に付与する

2

ささやき・落ち着いたトーンなどの指定が効かない/タグがそのまま読まれる

山括弧タグは「その瞬間の発声イベント」専用に絞られた

タグは笑い・ため息・咳・息継ぎ・短い間だけに限定し、継続する話し方はすべて style へ書く

3

複数話者の対話で声が入れ替わる・1人が2人分を読む

話者の推定をしなくなり、明示されていないターンの帰属が決まらない

全ターンに speaker を明示する。値は設定した話者名と完全に一致させる

4

生成した音声が再生できない/冒頭に短いノイズが入る

既定の出力が生 PCM(audio/l16)から RIFF ヘッダ付き WAV(audio/wav)に変わった。自前で WAV ヘッダを付ける処理が残っているとヘッダが二重になる

Python の wave モジュールや ffmpeg でヘッダを足していた処理を外す。生 PCM が必要なら response_format に audio/l16/audio/mulaw/audio/alaw を明示する

5

長い演出指示を渡しているのに声のキャラクターが安定しない

Audio Profile / Director's Notes のような長文ブロックで人格を作る方式ではなくなった

声の不変の特性は Voice design で作った恒久 ID(voice_ で始まる)に持たせ、style は最小か空にする

5番目の Voice design は、移行のついでにやっておくと後が楽になる部分です。年齢・性別・音色・地域アクセントといった「変わらない特性」を音声 ID 側に固定してしまえば、リクエストごとのプロンプトは短くなり、生成のばらつきも減ります。作り方はVoice design と Voice replication で声を作る手順にまとめました。

4番目は、プレイヤーによっては余分なヘッダを読み飛ばして鳴ってしまうため、ローカルのテストをすり抜けやすい点が厄介です。移行後は、生成したファイルの先頭が RIFF で始まっているかを必ず1回確認してください。

Mihata の推奨:切り替える前にやっておく4つ

ここからは公式ドキュメントに書いていない、実務側の段取りです。TTS の移行は「コードが通るか」よりも「声が変わったことを社内が受け入れられるか」でつまずきます。

1. 既存の原稿10本を旧・新の両モデルで生成して並べて聞く

モデルが替わると声は別人になります。同じプリセット音声名を指定していても、合成の傾向が変わるので同一の声には戻りません。すでにユーザーに聞かせている音声がある場合、これは技術課題ではなく合意形成の話です。よく使う原稿を10本ほど選び、旧モデルと新モデルで同じ設定のまま生成して並べ、企画・営業まで含めて先に聞いてもらってください。切り替えた後に「声が違う」と言われるのが一番やり直しが大きくなります。

2. モデル名を設定ファイルの1箇所に外出しする

今回の作業で一番割に合うのがこれです。モデル名がコードのあちこちに直書きされていると、世代交代のたびに同じ grep を繰り返すことになります。環境変数か設定ファイルの1行にピン留めしておけば、次回の差し替えは1行で終わります。TTS に限らず、モデル提供終了への備え方はAIモデルの提供終了に企業がどう備えるかで整理しています。

3. 出力形式の分岐は呼び出し側ではなく保存処理の入口に置く

WAV か生 PCM かの判定を各呼び出し箇所に書くと、4番目の症状がまた再発します。「モデルから受け取ったバイト列を保存・配信する入口」に1箇所だけ分岐を置き、そこでヘッダの有無を判定する形にしてください。バイト列の先頭4バイトが RIFF かどうかを見るだけで済みます。

4. 停止日が未発表でも、四半期に1回 deprecations ページを見る運用にする

「No shutdown date announced」は安心材料ではなく、予告なしに日付が入る可能性がある状態です。preview 版は特に猶予が短くなりがちなので、四半期に1回、誰が deprecations ページを見るかを決めてしまうのが現実的です。Mihata では自社で回している自動化について、この点検を定例に組み込んでいます。

前提条件:SDK のバージョンと上限

移行の前に環境側で確認しておく点が3つあります。SDK は Python の google-genai が 2.25.0 以上JavaScript/TypeScript の @google/genai が 2.24.0 以上が必要です。古いままだと speech_metadata や Voice design のフィールドが通りません。

トークン上限は入力 8,192/出力 16,384です。入力はテキストのみ、出力は音声のみで、Function calling や構造化出力は対応していません。長い原稿はこれまでどおり分割して生成し、つなぐ必要があります。対応言語は Flash TTS が130言語、Flash-Lite TTS が101言語で、どちらも日本語を含みます。多言語の読み上げを扱っていて101言語に収まらない場合だけ、コスト差を飲んで Flash TTS を選ぶ判断になります。

なお Flash TTS 側の音声出力は 1M トークン $9.00(2026年12月31日まで。2027年1月1日から $18.00)で、旧 preview 比では 55%減です。Flash-Lite TTS の70%減には届きませんが、それでも安くなります。

どちらに寄せるか:中小企業での判断軸

公式の使い分けは、Flash TTS が「最大の声の忠実度・演技のニュアンス・方言のカバー」、Flash-Lite TTS が「高スループット・低レイテンシ・コスト効率」です。用途としては、オーディオブックや複雑な複数話者の対話、強い声の演技が要るものは Flash TTS、大量生産・リアルタイムの音声エージェント・読み上げ機能・日常の1話者生成は Flash-Lite TTS、と整理されています。

実務上はまず Flash-Lite TTS に寄せ、質が足りなかったものだけ Flash TTS に上げるのがおすすめです。公式が置き換え先として名指ししているのが Flash-Lite TTS であること、単価差が1.5倍あり量が出る用途で効くこと、Voice design に両モデルが対応していて声そのものは Flash-Lite TTS でも作り込めることの3点が理由です。他社サービスも含めて選び直すなら、Gemini TTS と OpenAI の TTS を比べた記事も合わせて読んでください。同じ 3.8 世代のテキストモデルについてはGemini 3.8 Flash の記事にあります。

1リクエストでの複数話者生成は最大2話者・プリセット音声のみという制限も残っています。カスタム音声で3人以上の対話を作るなら、話者ごとに個別生成して 24kHz PCM を連結する形です。

読み上げや音声応答を業務に組み込む段では、どこを自動化してどこを人が見るかの線引きで迷うことが多いと思います。Mihata では社内の業務に合わせた AI の作り込みと、月1回のミーティングで進める導入支援をしています。社内で決めきれない部分があれば、現状をうかがったうえで一緒に整理します。

よくある質問

gemini-3.1-flash-tts-preview はいつ使えなくなりますか?

2026年9月24日時点で停止日は発表されていません。公式の deprecations ページの該当行は「No shutdown date announced」です。置き換え先は指定されましたが、期限は未定です。

置き換え先は gemini-3.8-flash-tts と gemini-3.8-flash-lite-tts のどちらですか?

公式モデルページが gemini-3.1-flash-tts-preview の推奨置き換え先として名指ししているのは gemini-3.8-flash-lite-tts です。声の質や演技のニュアンスが必要な用途だけ gemini-3.8-flash-tts を選びます。

移行すると音声が再生できなくなりました。原因は何ですか?

既定の出力形式が生PCMのaudio/l16からRIFFヘッダ付きのWAVに変わったためです。自前でWAVヘッダを付けている処理が残っていると、ヘッダが二重になって再生できません。その処理を外してください。

指示文がそのまま読み上げられてしまいます。

3.8世代のTTSは入力テキストを厳密に読み上げ原稿として扱います。話し方の指示は speech_metadata の style、話者ラベルは speaker に移してください。

移行でコストはどう変わりますか?

音声出力の単価は1Mトークンあたり20.00ドルから6.00ドルへ70%下がります。ただしこれは2026年12月31日までの導入価格で、2027年1月1日から2倍になります。

まずはお気軽にご相談ください

AI・IT・デザインに関するお悩みやご相談、お見積りのご依頼など、
どんなことでもお気軽にお問い合わせください。

お問い合わせ