67 人が閲覧(直近 30 日) Gemini

Gemini API TTSの使い方|3.8 Flash TTSの実装・料金・商用利用【2026年10月】

Gemini API TTSの使い方|3.8 Flash TTSの実装・料金・商用利用【2026年10月】

Gemini APIのTTS(音声合成)は、2026年9月22日に一般提供(GA)となった gemini-3.8-flash-tts と gemini-3.8-flash-lite-tts が現行モデルです。3.1 Flash TTS Previewなど旧Previewの3モデルは、最短で2026年11月17日に終了すると発表されています。Google Cloud側でも、2026年10月26日にGemini Enterprise Agent Platform(旧Vertex AI)で同じ2モデルがGAになり、global と us・eu のマルチリージョンで使えるようになりました。3.8では呼び出し方も変わり、台本には読み上げる文だけを書き、話し方は speech_metadata に分けて渡します。この記事では、AI Studioでの試し方、Python・curl・ストリーミングの実装、料金と無料枠、商用利用の条件、旧モデルからの移行で壊れる箇所、Agent Platform経由での呼び出し方を、公式ドキュメントをもとに整理します。SDKの送信内容は、google-genai 2.32.0を使い、ローカルの模擬サーバーで確かめました。実APIでの音声生成と音質の評価は、この確認に含まれていません。

まとめ:Gemini TTSの使い方と料金・商用利用の要点

  • モデル:品質重視なら gemini-3.8-flash-tts、量産・低遅延なら gemini-3.8-flash-lite-tts。日本語はどちらも対応しています。旧Previewの3モデルは、最短で2026年11月17日に終了します。
  • 試し方:Google AI Studioの音声生成画面で、APIキーなしで台本と声を試せます。
  • 実装:Python SDK(google-genai)の client.interactions.create に台本・speech_metadata・声を渡すと、単発リクエストではWAVが返ります。2話者の mode は、SDKの2.32.0時点でも extra_body で渡す必要があります。
  • Google Cloud経由:Gemini Enterprise Agent Platformでは2026年10月26日にGAとなり、global・us・eu を選べます。ただし呼び出しは generateContent 形式で、Voice designと声の複製はPreviewのまま global 限定です。
  • 料金:有料枠の音声出力は100万トークンあたり9.00ドル(Flash-Liteは6.00ドル)で、音声1分あたり約0.0135ドル/0.009ドルです。2027年1月1日から倍額になります。
  • 無料枠:3.8の2モデルにはあります。原則として入力と出力はGoogleの製品改善に使われますが、EEA・スイス・英国にいる利用者には有料サービスと同じデータ取扱条項が適用されます。
  • 商用利用:生成した音声の所有権を、Googleは主張しません。ただし、18歳未満向けのサービスには組み込めません。EEA・スイス・英国の利用者に提供する場合は、有料枠が必須です。他人の声を複製するには、本人の同意音声が要ります。

Gemini TTSの提供モデルと用途・終了予定を踏まえた選び方

料金表と非推奨モデルの一覧に載っているTTSモデルは、次の5つです(2026年10月23日確認)。3.8の2モデルは同じAPIスキーマと書き方を共有しているので、モデル名を差し替えるだけで切り替えられます。

モデルID 状態 終了予定(最短) Voice design・複製 音声出力単価(100万トークン)
gemini-3.8-flash-tts GA(2026-09-22) 未発表 対応 9.00ドル
gemini-3.8-flash-lite-tts GA(2026-09-22) 未発表 対応 6.00ドル
3.1 Flash TTS Preview Preview 2026-11-17 非対応 20.00ドル
2.5 Flash Preview TTS Preview 2026-11-17 非対応 10.00ドル
2.5 Pro Preview TTS Preview 2026-11-17 非対応 20.00ドル

旧Preview 3モデルのモデルIDは、上から順に gemini-3.1-flash-tts-preview・gemini-2.5-flash-preview-tts・gemini-2.5-pro-preview-tts です。コード内でこのIDを検索すれば、移行が必要な箇所を洗い出せます。

公式の使い分けでは、Flash TTSはオーディオブックやスタジオ品質のナレーション、複雑な2話者の対話、方言、長尺の読み上げ向けです。Flash-Lite TTSは、大量生成、音声エージェント、読み上げ機能、日常的な1話者の音声に向いています。旧Preview 3モデルの置き換え先は、この3.8の2モデルです。3.1 Flash TTS Previewの特徴は、Gemini 3.1 Flash TTS Previewの料金・使い方・音声タグと11月17日終了予定への移行で扱っています。

3.8の入力上限は8,192トークン、出力上限は16,384トークンです。音声は1秒あたり25トークンなので、1リクエストで返せる音声は約655秒(約11分)までです。書籍1章のような長文は段落単位に分けて送り、あとで結合します。この上限は、Agent Platformの3.8 Flash TTSのモデルページでも同じ値です。

AI StudioでGemini TTSの声と台本を無料で試す手順と注意点

コードを書く前に、Google AI Studioの音声生成画面(aistudio.google.com/generate-speech)で、声と台本の相性を確かめるのが早道です。

  1. Googleアカウントでログインし、モデルに3.8 Flash TTSか3.8 Flash-Lite TTSを選ぶ
  2. プリセットの声を選び、読み上げる台本を入力して再生する
  3. 口調を変えたい行にだけ、短い演出指示を足して聞き比べる

Voice design(説明文から声を作る)とVoice replication(録音から声を複製する)も、この画面からブラウザで実行できます。ただし、AI Studioでの声の複製は、米国のイリノイ州とテキサス州、EEA、英国、スイス、インドでは使えないとGoogleの発表記事の注記にあります。

利用規約上、AI Studioは原則として無料のサービスに当たり、入力した台本と生成音声はGoogleの製品改善に使われます。ただし、課金が有効なCloudプロジェクトにアクセスできるアカウントや、Workspaceの企業アカウントで使う場合は、料金がかからなくても有料サービス扱いです。個人のGoogleアカウントで試すときは、未発表の商品名や顧客名を台本に入れないでください(データの扱いは料金の章で説明します)。

Gemini API TTSの使い方(PythonとRESTの実装手順)

Gemini TTSの呼び出しに必要なAPIキーとPython SDKの準備

APIキーはGoogle AI Studioで発行します。Python SDKは google-genai で、声の一覧を取得する client.voices.list() は2.25.0以降(Node.js版の @google/genai は2.24.0以降)が必要です。PyPIのgoogle-genaiの最新版は、2026年10月30日時点で2.34.0(10月29日公開)で、Python 3.10以上が前提です。本記事の送信内容の確認は、その前の2.32.0(10月21日公開)で行っています。Interactions APIそのものの書き方は、Gemini APIの始め方とInteractions APIの最小コードにまとめています。

python -m pip install -U "google-genai>=2.25.0"
export GEMINI_API_KEY="AI Studioで発行したキー"

Gemini TTSで1話者の音声を生成してWAVで保存するコード

Gemini API音声生成ガイドのとおり、3.8 TTSは text を一字一句そのまま読み上げる台本として扱います。「明るく言って」のような演出は台本に書かず、speech_metadata の style に書きます。

import base64
from google import genai

client = genai.Client()  # 環境変数 GEMINI_API_KEY を読む

interaction = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{
        "type": "user_input",
        "content": [{
            "type": "text",
            "text": "本日のご案内です。<short pause> 午後3時から臨時点検を行います。",
            "annotations": [{
                "type": "speech_metadata",
                "style": "calm, speaking slowly",
            }],
        }],
    }],
    response_format={"type": "audio"},
    generation_config={"speech_config": [{"voice": "Kore"}]},
)

# 単発リクエストの既定はWAV(RIFFヘッダー付き・24kHz・モノラル・16bit)
with open("out.wav", "wb") as f:
    f.write(base64.b64decode(interaction.output_audio.data))

返ってくるのはRIFFヘッダー付きのWAV(24kHz・モノラル・16bit)なので、デコードしたバイト列をそのまま .wav に書けば再生できます。言語は自動で判定されるため、日本語でも言語コードの指定は要りません。

2話者の会話音声と、Python SDKでmodeが送られない問題

2話者の対話では、speech_config.speakers に話者名と声を2組登録し、各ターンの speech_metadata に speaker を付けて渡します。公式ガイドのREST例は、自然な掛け合いのために "mode": "conversational" を指定する形です。一方、同じページのPython例には mode が無く、注記にも「SDKは SpeakerConfig で speakers を受け付ける」とだけ書かれています。

実際に、google-genai 2.32.0で generation_config に mode を書くと、送信されるリクエストから mode が消えます。SDKの型定義(SpeakerConfig)が speakers しか持っていないためです。ローカルの模擬サーバーで送信内容を記録して確認しました(1巡目に確かめた2.25.0と同じ挙動です)。Node.js版の @google/genai 2.30.0も、型定義のSpeakerConfigは speakers だけです。extra_body で generation_config ごと渡すと、mode が残ります。2.33.0・2.34.0での挙動は未確認なので、SDKを上げたら同じ方法で送信内容を確かめてください。下のコードは、前の1話者の例で読み込んだ base64 と初期化済みの client を使います。

turns = [
    ("Host", "今日のテーマは音声合成APIです。", "cheerful and friendly"),
    ("Guest", "よろしくお願いします。<short pause> まず料金から見ていきます。", "calm and relaxed"),
]

interaction = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{
        "type": "user_input",
        "content": [
            {"type": "text", "text": text,
             "annotations": [{"type": "speech_metadata", "speaker": spk, "style": style}]}
            for spk, text, style in turns
        ],
    }],
    response_format={"type": "audio"},
    # google-genai 2.32.0 時点でも generation_config 経由では mode が送られないため extra_body で渡す
    extra_body={"generation_config": {"speech_config": {
        "mode": "conversational",
        "speakers": [
            {"speaker": "Host", "voice": "Puck"},
            {"speaker": "Guest", "voice": "Kore"},
        ],
    }}},
)

with open("dialog.wav", "wb") as f:
    f.write(base64.b64decode(interaction.output_audio.data))

1リクエストで扱える話者は、プリセットの声を使う場合で2人までです。Voice designや複製で作った声を対話に使うときは、話者ごとに1ターンずつ生成して結合します。その場合はWAVヘッダーが邪魔になるので、mime_type に audio/l16 を指定し、ヘッダーなしのPCMで受け取ります。

curl(REST)でのGemini TTS呼び出しと音声出力形式の変更

SDKを使わない場合は、Interactions APIのエンドポイントへJSONを送ります。以下は、GEMINI_API_KEYを設定済みで、curl・jq・base64が使えるシェル環境が前提です。音声はレスポンスの steps[].content[].data にBase64で入っています。

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.8-flash-lite-tts",
    "input": [{
      "type": "user_input",
      "content": [{
        "type": "text",
        "text": "ご注文ありがとうございます。",
        "annotations": [{"type": "speech_metadata", "style": "polite and calm"}]
      }]
    }],
    "response_format": {"type": "audio"},
    "generation_config": {"speech_config": [{"voice": "Kore"}]}
  }' | jq -r '[.steps[] | select(.type=="model_output") | .content[] | select(.type=="audio")] | last | .data' \
     | base64 --decode > out.wav

出力形式は response_format で変えられます。選べるのは、WAV・ヘッダーなしPCM(L16)・G.711のμ-law・A-lawの4種類です。サンプリングレートは24000・16000・8000Hzなどを指定できます。電話の自動音声(IVR)に流すなら、μ-law・8kHzで受け取れば変換の手間が省けます。下は、Pythonの呼び出しにある response_format 引数を置き換える断片です。

response_format={
    "type": "audio",
    "mime_type": "audio/mulaw",  # audio/wav(既定)・audio/l16・audio/mulaw・audio/alaw
    "sample_rate": 8000,
},

Gemini APIにMP3の選択肢はありません。MP3やOgg Opusが必要なら、手元でffmpeg等を使って変換するか、後述のCloud Text-to-Speech経由で生成します。

Gemini TTSのストリーミング音声の受信とヘッダーを付けたWAV保存

stream=True を付けると、音声が合成されるそばから届きます。ストリーミングの既定はヘッダーなしのL16(24kHz・モノラル・16bit)なので、そのまま連結してもWAVにはなりません。公式例のイベント判定に、標準ライブラリ wave でヘッダーを付ける処理を足すと、受信した音声をWAVファイルに保存できます。このコードには再生処理は含まれません。受信中に音を鳴らすには、音声チャンクを再生機器へ渡す処理が別途必要です。音声チャンクを2回返す模擬サーバーで動かし、0.4秒・24kHzのWAVになることを確認しました。

import base64, wave
from google import genai

client = genai.Client()

stream = client.interactions.create(
    model="gemini-3.8-flash-tts",
    input=[{"type": "user_input", "content": [{
        "type": "text", "text": "本日のご案内です。",
        "annotations": [{"type": "speech_metadata", "style": "calm"}],
    }]}],
    response_format={"type": "audio"},
    generation_config={"speech_config": [{"voice": "Kore"}]},
    stream=True,
)

with wave.open("stream.wav", "wb") as w:
    w.setnchannels(1)
    w.setsampwidth(2)       # 16bit
    w.setframerate(24000)   # ストリーミングの既定 24kHz
    for event in stream:
        if event.event_type == "step.delta" and event.delta.type == "audio":
            w.writeframes(base64.b64decode(event.delta.data))

最初の音を早く鳴らしたい音声エージェントはこの形にし、ナレーションを1本のファイルで納品するだけなら単発リクエストで足ります。

話し方・感情・間の指定(speech_metadataとインラインタグ)

演出の指示は、効く範囲で書き分けます。ターン全体に続く口調・感情・速さ・音量は speech_metadata.style に書く指定です。ため息や間のように一瞬で終わる音は、台本の該当位置に山括弧のタグで入れます。

  • 口調・感情・速さ:style に書く。例は speaking slowly・whispers・sarcastic
  • 間:台本内のタグで入れる。例は <short pause>・<long pause>
  • 笑い・ため息・咳:台本内のタグで入れる。例は <laugh>・<sigh>・<cough>
  • 相づち(2話者):台本内を縦棒で囲む。例は |oh really?|
  • 年齢・性別・訛り:声の選択かVoice designで決め、style には書かない

日本語の台本でも、タグは英語のまま書くよう公式ガイドが推奨しています。拍手や物音のような効果音タグは避け、人の発声に限ります。英語では単語を大文字にすると強調されますが、日本語の漢字かなには大文字がありません。日本語では、句読点や間のタグで強調を試し、生成音声を聞いて意図どおりか確かめます。

旧モデルで使われていた何段落もの「Audio Profile」や「Director’s Notes」を、公式ガイドは声のブレの最も多い原因に挙げています。「声を変えないで」のような念押しも入れないよう書かれています。まず style を空にして生成し、必要なターンにだけ短い指示を足すのが推奨の手順です。

声の選び方:プリセット30種・Voice Library・Voice design・複製

声の指定方法は4通りあります。保存型のVoice designとVoice replicationは、共有する枠は1プロジェクト合計200件です。保持期間は最終利用から1年で、音声合成やリミックスのベースとして利用するたびに更新されます。1年間利用しない声は自動削除の対象です。いずれも speech_config の voice に名前かIDを渡すだけで、呼び出し側のコードは変わりません。

方法 指定する値 上限・保持期間
プリセット(30種) Kore・Puckなどの名前 ―
Extended Voice Library 一覧APIで得たID ―
Voice design voice_... 1プロジェクト200件・最終利用から1年
Voice replication voice_... か voicekey_... 200件・最終利用から1年/キーは7日

プリセットは30種で、Kore(Firm)・Puck(Upbeat)・Charon(Informative)・Aoede(Breezy)・Sulafat(Warm)のように、特徴が1語で添えられています。Extended Voice Libraryは数百種類の声を収めたカタログで、GET /v1beta/voices で取得し、language_code(例 ja-JP)・性別・声の高さ・用途(Audiobook・News等)で絞り込めます。日本語のナレーションなら、まずここで日本語話者の声を探すのが近道です。

Voice replicationでは、複製したい話者の10〜30秒の音声と、同じ話者が同意文を読み上げた音声の2本を送る仕組みです。日本語の同意文は「私はこの音声の所有者であり、Googleがこの音声を使用して音声合成モデルを作成することを承認します。」と決められています。本人の同意録音が取れない声は、APIの仕組み上複製できません。社外のナレーターを起用するなら、同意録音の取得を契約の段取りに入れておく必要があります。

Gemini APIではモデルと同じGAの扱いですが、Google CloudのAgent Platformでは、Voice designと声の複製は10月26日以降もPreviewです。作った声もリージョン global でしか使えません。自作の声で本番運用を組むなら、どちらの経路で呼ぶかを先に決めておきます(詳しくは後述の使い分けの章)。

Gemini TTSのモデル別料金と無料枠・業務利用時のデータの扱い

Gemini TTSのモデル別単価と音声1分・1時間あたりの料金試算

料金は入力テキストと出力音声のトークン数で決まり、音声は1秒25トークンで数えます(Gemini API公式料金表、2026年10月23日確認)。3.8の2モデルには2026年12月31日までの割安価格があり、2027年1月1日から倍額になります。

モデル 入力(100万トークン) 出力音声(100万トークン) 音声1分 音声1時間
3.8 Flash TTS(〜2026年末) 0.50ドル 9.00ドル 約0.0135ドル 約0.81ドル
3.8 Flash TTS(2027年〜) 1.00ドル 18.00ドル 約0.027ドル 約1.62ドル
3.8 Lite TTS(〜2026年末) 0.50ドル 6.00ドル 約0.009ドル 約0.54ドル
3.8 Lite TTS(2027年〜) 1.00ドル 12.00ドル 約0.018ドル 約1.08ドル
3.1 Flash TTS Preview 1.00ドル 20.00ドル 約0.03ドル 約1.80ドル

音声1分は1,500トークン、1時間は90,000トークンです(入力テキスト分は別にかかりますが、音声に比べて小さい額です)。処理の優先度で単価が変わる点にも注意が要ります。急がない一括生成なら、BatchとFlexが標準の半額で、3.8 Flash TTSの出力は4.50ドルです。逆に、優先して処理されるPriorityは標準の1.8倍で、3.8 Flash TTSの出力は16.20ドル(Flash-Liteは10.80ドル)となります。2027年以降も同じ予算で運用するなら、Flash-Liteの品質で足りるかをいまのうちに聞き比べておくべきです。Agent Platform経由の単価はGoogle Cloudの料金ページで別に定められるため、上の表をそのまま当てはめず、見積もり前に確認してください。

ElevenLabs・OpenAI・Cloud TTSとの単価の比べ方

他社の音声合成APIは、多くが台本の文字数で課金します。Gemini TTSは、生成された音声の長さ(トークン数)で課金します。単位が違うので、単価を横に並べただけでは高い安いを判断できません(各社の公式料金ページ、2026年10月23日確認)。

サービス・モデル 課金単位 単価
Gemini 3.8 Flash TTS 音声出力100万トークン 9.00ドル
Gemini 3.8 Flash-Lite TTS 音声出力100万トークン 6.00ドル
Cloud TTS Chirp 3: HD 100万文字 30ドル(月100万文字まで無料)
ElevenLabs Flash系 1,000文字 0.04ドル
ElevenLabs v2〜v4 1,000文字 0.08ドル
OpenAI gpt-4o-mini-tts 音声出力100万トークン 12.00ドル
OpenAI tts-1/tts-1-hd 100万文字 15ドル/30ドル

表のElevenLabs Flash系は料金ページのFlash/Turbo・v4 Turboの行、v2〜v4はv2 Multilingual・v3・v4の行を指します。

文字課金のElevenLabsのAPI料金は、同じ台本ならゆっくり読ませても額が変わりません。Geminiは音声が長くなるほど高くなるので、speaking slowly や長い間を多用する台本では差が縮みます。比べるときは、自社の台本1本を両方で生成し、請求額を突き合わせるのが確実です。ElevenLabsの無料プランは商用ライセンスを含まないため、商用での比較は有料プランが前提になります(詳しくはElevenLabsの料金プランと無料版の商用制限)。

OpenAIの専用TTSモデル(tts-1・tts-1-hd・gpt-4o-mini-tts)は、OpenAIのTTSガイドで非推奨とされ、2027年1月6日に終了します。移行先はRealtime APIの gpt-realtime-2.1-mini で、呼び出し方そのものの変更が必要です。これから新規に組むなら、OpenAIの専用TTSを比較候補に入れても、1年以内に作り直しが発生します。

Gemini TTSの無料枠の利用条件と台本・生成音声のデータの扱い

3.8の2モデルは、無料枠では入出力とも無料です。無料枠で使えるのは標準とPriorityの処理で、BatchとFlexは有料枠だけです。無料枠のリクエスト数の上限はプロジェクト単位で、AI Studioのレート制限画面で確認できます。1日あたりの上限は、太平洋時間の0時にリセットされます。

注意点はデータの扱いです。利用規約では、AI Studioと無料枠に送った内容と生成結果はGoogleの製品と機械学習技術の改善に使われ、人間のレビュアーが読む場合もあるとされています。機密情報や個人情報は送らないよう明記されています。有料枠(Cloud Billingを紐づけたプロジェクト)では、プロンプトと応答が製品改善に使われないので、業務の台本は有料枠で扱ってください。EEA・スイス・英国にいる利用者には、無料枠でも有料枠と同じデータ取扱条項が適用されます。

Gemini TTSの商用利用で確認する年齢・提供地域・音声の条件

Gemini API追加利用規約では、生成したコンテンツの所有権をGoogleは主張しないとしています。同じ、または似たコンテンツが他の利用者にも生成されうることも併記されています。音声をアプリやナレーションに使うこと自体は妨げられていません。一方で、商用で問題になりやすい条件が次の4つあります。

  • 年齢:API利用者は18歳以上で、18歳未満向け、または18歳未満がアクセスしそうなサービスには組み込めません。子ども向けの学習アプリで読み上げに使う案は、この条項に抵触します。
  • 提供地域:EEA・スイス・英国の利用者にサービスを提供する場合は、有料枠しか使えません。
  • 透かし:Googleは、Gemini Audioモデルが出力するすべての音声にSynthIDの電子透かしを入れるとしています。AI生成であることは後から検出できます。声の複製には、来歴を示すC2PAの認証情報も組み合わされています。
  • 他人の声:複製には本人の同意音声が必須です。加えて、なりすましや誤認を招く使い方は、生成AIの使用禁止ポリシーの対象です。

自社サービスでは、規約や音声の提供画面に「音声はAIで生成しています」と表示しておくと、利用者が生成元を判断しやすくなります。業務システムへの組み込みでは、生成した音声ファイルの保存先や、台本を渡すAPI連携の設計も必要です。既存システムとの接続から任せたい場合は、API開発・システム連携の支援もご相談いただけます。

旧Preview TTSから3.8への移行で壊れる出力形式と話者指定

3.1 Flash TTS Preview・2.5 Flash Preview TTS・2.5 Pro Preview TTSの3モデルは、最短で2026年11月17日に終了します。この日付は「最短でこの日」という扱いで、正式な日付は事前に通知されます。それでも、旧Previewで動いている本番処理は11月17日より前に3.8へ移すべきです。旧モデル向けに書いたコードは、モデル名を変えるだけでは移行できません。特に2話者では、各ターンへの話者指定など、入力形式の修正が要ります。エラーにならないまま出力が変わる箇所もあります。公式の音声生成ガイドの移行手順のうち、気づきにくいのは次の2点です。

1つ目は出力形式です。3.1 Preview以前は単発リクエストでもヘッダーなしのPCMを返していました。そのため、Pythonの wave モジュールやffmpegでWAVヘッダーを付けて保存するコードを書いていた場合、3.8は最初からWAVを返すので、そのまま通すとヘッダーが二重になります。単発リクエストでヘッダーを付ける処理は削除し、ヘッダーなしが必要なら audio/l16 を明示します(ストリーミングは既定がL16なので、前述のようにヘッダーを付けたままで構いません)。

2つ目は台本の扱いです。旧モデルでは「Say cheerfully:」や「Speaker 1:」のような指示や話者名を台本に書く方式でしたが、3.8では台本をそのまま読み上げます。旧来の書き方のままだと、指示文まで読み上げられる可能性に注意が必要です。指示は style に、話者名は speaker に移し、2話者では全ターンに speaker を付ける形です。なお、generateContent 系のコードを残したい場合も、各 part に speech_metadata を付ける形に変わります。

Google CloudのCloud Text-to-Speech API経由で3.1 Flash TTS Previewや2.5系のGemini-TTSを使っている場合は、経路の移動も伴います。3.8はCloud Text-to-Speech APIでは提供されないため、移る先はAgent Platformの generateContent です。エンドポイント・リクエスト形式・出力形式の指定方法が変わり、MP3での直接出力もなくなります。3.8へ移すと決めたら、経路の移動とコードの書き換えを同じ作業として見積もってください。

Gemini API・Google Cloud・Live APIの使い分け

Gemini系の音声合成モデルは、Gemini APIのほかに、Google CloudのCloud Text-to-Speech(Gemini-TTS)とGemini Enterprise Agent Platform(旧Vertex AI、APIはGemini Enterprise API)からも呼べます。ただし、使えるモデルと条件は経路ごとに異なる仕様です。Cloud TTSのGemini-TTSガイドは、3.8の2モデルはGemini Enterprise APIでのみ提供され、Cloud Text-to-Speech APIでは使えないと明記しています。

Agent Platform(旧Vertex AI)で3.8 TTSがGAになった範囲

Agent Platformのリリースノートによると、3.8 Flash TTSと3.8 Flash-Lite TTSは2026年9月28日に global エンドポイントでPreview提供が始まり、10月26日にGAとなりました(2026年10月30日確認)。GAの対象は global ロケーションと us・eu のマルチリージョンです。話者とスタイルのメタデータ、インラインタグ、2話者の対話、ストリーミングがGAに含まれます。Voice designとVoice replicationはPreviewのまま継続です。

ひとつ食い違いがある状態です。同じ日に更新されたCloud TTSのGemini-TTSガイド(最終更新2026年10月26日)は、10月30日時点でも3.8を「Preview」と書いています。リリースノートと3.8のモデルページはどちらも「GA」なので、本記事での扱いはGAです。社内の調達判断でGAを条件にしている場合は、リリースノートの10月26日付の記載を根拠として残しておくと説明しやすくなります。

比較項目 Gemini API Agent Platform Cloud Text-to-Speech API
3.8 TTS GA(2026-09-22) GA(2026-10-26) 不可
Voice design・複製 対応 Preview・globalのみ ―
そのほかのモデル 旧Preview 3種 3.1 Preview・2.5系 3.1 Preview・2.5系
3.8の呼び出し形式 Interactions API generateContent ―
認証 APIキー Google Cloudの認証(IAM) Google Cloudの認証(IAM)
MP3・Ogg Opus出力 なし なし あり
Gemini-TTSの課金 無料枠あり 従量課金 無料枠なし
3.8の処理リージョン 指定なし global・us・eu ―

Agent PlatformでPythonとcurlから3.8 TTSを呼ぶコード

Agent PlatformのGemini TTSガイドのPython例は、google-genai 2.33.0以降を前提にしています。3.8のモデルページでは、Agent Platform側のInteractions APIは3.8 TTSの対応機能に入っていません。そのため、Gemini API向けに書いた client.interactions.create のコードはそのまま移せず、generate_content で書き直します。認証はアプリケーションのデフォルト認証情報(ADC)を使います。

python -m pip install -U "google-genai>=2.33.0"
gcloud auth application-default login

下は公式の単発リクエスト例を、台本と演出指示だけ日本語に置き換えたものです。location を us にすると米国のマルチリージョンで処理されます。このコードは実APIでの実行を確認していません。

from google import genai

# location は "global"・"us"・"eu" のいずれか
client = genai.Client(enterprise=True, project="PROJECT_ID", location="us")

response = client.models.generate_content(
    model="gemini-3.8-flash-tts",
    contents=[{
        "role": "user",
        "parts": [{
            "text": "本日のご案内です。<short pause> 午後3時から臨時点検を行います。",
            "speech_metadata": {"style": "calm, speaking slowly"},
        }],
    }],
    config={
        "response_modalities": ["AUDIO"],
        "speech_config": {"voice_config": {"voice": "Kore"}},
    },
)

# SDK がBase64をデコード済みなので、既定ではそのままWAVファイルになる
with open("out.wav", "wb") as f:
    f.write(response.candidates[0].content.parts[0].inline_data.data)

Gemini APIの例と見比べると、声の指定は speech_config.voice_config.voice、演出は parts の speech_metadata、出力は response_modalities で指定する形に変わります。RESTで呼ぶ場合は、ロケーションごとにホスト名が変わります。global は aiplatform.googleapis.com、us は aiplatform.us.rep.googleapis.com、eu は aiplatform.eu.rep.googleapis.com です。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://aiplatform.us.rep.googleapis.com/v1/projects/PROJECT_ID/locations/us/publishers/google/models/gemini-3.8-flash-tts:generateContent" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "ご注文ありがとうございます。",
        "speechMetadata": {"style": "polite and calm"}
      }]
    }],
    "generationConfig": {
      "responseModalities": ["AUDIO"],
      "speechConfig": {"voiceConfig": {"voice": "Kore"}}
    }
  }' | jq -r '.candidates[0].content.parts[0].inlineData.data' | base64 --decode > out.wav

ストリーミングは generate_content_stream(RESTは :streamGenerateContent?alt=sse)で、届く音声はGemini APIと同じくヘッダーなしのPCMです。出力形式はWAV・L16・μ-law・A-lawの4種類で、RESTでは generationConfig.responseFormat、Pythonでは http_options.extra_body で変えます。Gemini APIと違い、Agent Platformでは sampleRate の指定は無視されると公式ガイドに書かれています。μ-law・A-lawは8kHz固定で、それ以外は24kHzです。Google Gen AI SDKの接続先をGemini APIとAgent Platformで切り替える設定の全体像は、Google Gen AI SDKの導入とAgent Platformへの切り替えで解説しています。

us・euマルチリージョンと自作の声を選ぶ際の契約条件と優先順位

3.8のモデルページでは、MLの処理場所として us と eu のマルチリージョンが示されています。欧州の顧客データを扱うサービスで「EU域内で処理」を求められたら、location="eu" の指定で応えられます。一方、Voice designや複製で作った声は global でしか使えません。自作の声と処理リージョンの指定は、10月30日時点の仕様では両立しません。

判断は次のように分けられます。処理リージョンの指定が契約上の条件なら、プリセット30種かExtended Voice Libraryの声で us・eu を使う構成です。ブランド専用の声が条件なら、global で自作の声を使い、Preview向けの利用条件を受け入れる必要があります。日本を含むアジアの地域はGeminiのTTS経路のどこにも無いため、国内でのデータ処理が要件ならGemini TTSは候補から外れます。

Cloud TTS APIとLive APIを選ぶ際の出力形式と対話の条件

Cloud Text-to-Speech APIは、MP3で直接受け取りたい場合や、Chirp 3 HDなど既存の声と同じAPIで統一したい場合に向きます。ただし、そこで使える最新世代は3.1 Flash TTS Previewで、3.8へは移れません。3.8の音質や自作の声が必要になった時点で、呼び出し先をAgent Platformへ移すことになります。Google Cloudの契約・IAM・請求の中で3.8を使いたいなら、GAとなったAgent Platformが第一の選択肢です。認証やSLAの違いはVertex AIとGemini APIの違いで比較しています。

TTSは台本を渡して音声を受け取る一方向の処理です。ユーザーの発話を聞いて即座に音声で返す対話を作るなら、双方向のGemini 3.8 LiveとLive APIが選択肢です。LLMの応答をTTSに流す構成にする場合、公式ガイドは応答のターンごとにTTSを1回呼ぶよう勧めています。テキスト生成側の料金と移行は、Gemini 3.8 Flashの差分・料金・移行コードにまとめています。

Gemini API TTSの日本語対応・無料利用・出力形式でよくある質問

Gemini TTSは日本語に対応していますか?

対応しています。3.8 Flash TTS・3.8 Flash-Lite TTSの双方で日本語が対応言語に含まれ、入力の言語は自動で判定されます。インラインタグ(<sigh> など)は、日本語の台本でも英語で書くのが推奨です。

Gemini TTSは無料で使えますか?

AI Studioの画面とGemini APIの無料枠で、3.8の2モデルを無料で使えます。ただし、無料枠の入出力はGoogleの製品改善に使われます(課金が有効なCloudプロジェクトへアクセスできるアカウントまたはWorkspaceの企業アカウントでのAI Studio利用と、EEA・スイス・英国にいる利用者は除く)。EEA・スイス・英国の利用者向けに提供するサービスでは、無料枠は使えません。Google CloudのAgent Platform経由は従量課金です。

音声ファイルをMP3で出力できますか?

Gemini APIの出力はWAV・PCM(L16)・μ-law・A-lawの4種類で、MP3はありません。Agent Platform経由の3.8も同じ4種類です。生成後にffmpeg等で変換するか、MP3出力に対応したCloud Text-to-Speech API経由で、3.1 Flash TTS Previewか2.5系のGemini-TTSを使います。3.1 PreviewはGemini APIでは最短11月17日の終了が告知されているので、新規に組むなら変換の手間を含めて3.8と比べてください。

Geminiで音声をテキストにする(STT)こともできますか?

TTSモデルはテキスト入力・音声出力専用で、文字起こしはできません。Gemini APIには、2026年8月26日にGAとなった文字起こし専用の gemini-3.5-transcribe があり、話者分離や単語単位のタイムスタンプに対応します。有料枠の音声入力は1分あたり約0.003ドルです。Google Cloudで処理したい場合は、Google Cloud Speech-to-Textを使う方法もあります。

長い文章をまとめて音声にできますか?

1リクエストの入力は8,192トークン、出力は16,384トークン(音声で約11分)が上限です。長文は段落や章ごとに分けて生成し、ヘッダーなしのL16で受け取ってから結合すると、つなぎ目にヘッダーが挟まりません。

関連記事

お気に入りに入れた記事の一覧

一創の公式 SNS

X では毎朝の新着記事と IT ニュースの速報を、YouTube・TikTok・Instagram・LinkedIn・Facebook では記事の解説動画を配信しています。

この記事は以下の記事からリンクされています

ほか 2 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.29 テックブログ ソニー生命の不正アクセス:38.5万件の対象確認と窓口、停止中の手続き
  2. 2026.10.31 テックブログ osinaの情報漏洩:約23万人の対象確認とSNS連携の解除、分析ツールへ渡すデータの絞り方
  3. 2026.10.31 テックブログ 松屋の不正アクセス:237万件の対象確認と窓口、漏れたパスワードの守り方
  4. 2026.05.18 テックブログ マネーフォワードで連携できない・失敗するときの対処法|エラー別の原因と再連携のやり方
  5. 2026.10.31 テックブログ 無印良品の情報漏洩:MUJIアプリ最大2,726万件の対象確認となりすましメール対策

RELATED POSTS 関連記事

目次