メインコンテンツへスキップ

Gemini 3.5 Transcribe API 入門:録音とリアルタイム文字起こしを正しく実装する

7 分で読めますAI API ガイド

録音ファイルは Interactions API、話している最中の字幕は Live API を使います。出力構造と機能制限を理解し、日本語音声で導入可否を確かめる手順をまとめます。

Gemini 3.5 Transcribe の録音とリアルタイム API、出力、料金、日本語検証をまとめた入門図

Gemini 3.5 Transcribe を使う前に、入力が「すでに存在する録音」か「今流れている音声」かを決めてください。録音は gemini-3.5-transcribe と Interactions API、リアルタイムは gemini-3.5-transcribe-live と Live API です。名前は似ていますが、入力形式、返ってくる状態、利用できる機能、時間制限が異なります。

このモデルは音声をテキストにする専用ルートです。音声について質問する一般的な audio understanding、話して返答する Live Agent、音声翻訳、議事録の要約とは契約が違います。文字起こし後に要約や抽出が必要なら、検証済み transcript を別のモデルへ渡す二段構成にします。

Google は 2026 年 8 月 26 日に開発者向け public preview を公開しました。仕様変更の可能性があるため、実装時は必ず最新の Gemini 3.5 Transcribe モデルページ を確認してください。

まず三つの要件を分ける

録音ファイルから全文だけを得るなら、最も単純な unary request から始められます。話者ラベルや単語ごとの開始・終了時刻が必要なら、同じ録音ルートで verbatim と annotations を使います。発話中に画面を更新する必要がある場合だけ Live に進みます。

要件選ぶモデル現在の上限
会議、通話、インタビューなどの録音gemini-3.5-transcribe1 request 最大 1 時間
録音に話者分離または単語タイムスタンプを付けるgemini-3.5-transcribe最大 30 分
マイク入力からリアルタイム字幕を出すgemini-3.5-transcribe-live1 session 最大 10 分

Gemini 3.5 Transcribe の録音とリアルタイム endpoint を入力、制限、機能、出力、料金で比較した選択表

Live は話者分離と単語タイムスタンプをサポートしません。リアルタイム表示と精密な後処理の両方が必要なら、Live で表示しながら音声も保存し、終了後に録音モデルで再処理する設計が現実的です。

録音は最小 request の成功条件から確認する

現在の Audio transcription 公式ガイド は、Files API で音声をアップロードし、その URI を Interactions API に渡します。

bash
python -m pip install -U google-genai export GEMINI_API_KEY="YOUR_API_KEY"
python
from google import genai client = genai.Client() audio_file = client.files.upload(file="sample.mp3") interaction = client.interactions.create( model="gemini-3.5-transcribe", input=[ { "type": "audio", "uri": audio_file.uri, "mime_type": audio_file.mime_type, } ], ) print(interaction.output_text)

最初に見るのは精度の平均値ではありません。upload が成功したか、interaction が完了したか、output_text が空ではないか、提出した音声と内容が一致するかを確認します。モデル ID、音声時間、MIME type、request status、空出力の有無をログに残すと、その後の切り分けが容易です。

言語を省略すると自動判定とコードスイッチに対応します。日本語が中心だと分かっている場合、現在の対応表にある ja-JP を hint にできます。固有名詞や製品名には custom_vocabulary が使えます。最大 1,000 語ですが、Google は通常 100 語以下で良い結果が得られやすいと説明しています。重要度の低い巨大な辞書より、誤認識の損失が大きい語に絞ります。

読みやすい文章と追跡可能な transcript は同じではない

デフォルトの verbatim は、言い直し、繰り返し、フィラーを保ちます。監査、品質確認、字幕同期、発言者別の分析に向きます。

smart はフィラーを除き、自己修正を反映し、数字や一覧を読みやすく整えます。ただし diarization と word-level timestamps とは同時に使えません。議事録のような読みやすさを優先するか、録音に戻れる証跡を優先するかを先に決めます。

python
interaction = client.interactions.create( model="gemini-3.5-transcribe", input=[ { "type": "audio", "uri": audio_file.uri, "mime_type": audio_file.mime_type, } ], generation_config={ "transcription_config": { "custom_vocabulary": ["Gemini", "BigQuery"], "mode": { "type": "verbatim", "diarization_mode": "speaker", "timestamp_granularities": ["word"], }, } }, )

結合済み全文は interaction.output_text ですが、話者と単語時刻は content annotations にあります。SRT、音声位置へのジャンプ、発言者ごとの集計に使うなら output_text だけを保存してはいけません。

話者分離は最大 8 人と記載されていますが、3 人以上の attribution は experimental です。単語タイムスタンプも全体精度を下げる可能性があります。複数人会議は別の評価セットとして扱ってください。

Live 字幕では「現在の予測」と「確定文」を別に持つ

Live transcription ガイド の現在の入力契約は、raw 16-bit PCM、16 kHz、mono、little-endian、100 ms chunk です。ブラウザの WebM/Opus や電話の 8 kHz codec は、実データを decode/resample してから送ります。MIME type の文字列を書き換えるだけでは変換されません。

python
import asyncio from google import genai from google.genai import types client = genai.Client() config = types.LiveConnectConfig( response_modalities=["TEXT"], input_audio_transcription=types.AudioTranscriptionConfig( language_codes=["ja-JP"], ), ) async def receive(session): async for response in session.receive(): content = response.server_content if content and content.interim_input_transcription: replace_current_caption(content.interim_input_transcription.text) if content and content.input_transcription: commit_caption(content.input_transcription.text) async def main(): async with client.aio.live.connect( model="gemini-3.5-transcribe-live", config=config, ) as session: receiver = asyncio.create_task(receive(session)) async for chunk in your_pcm_source(): await session.send_realtime_input( audio=types.Blob( data=chunk, mime_type="audio/pcm;rate=16000", ) ) await session.send_realtime_input(audio_stream_end=True) await receiver asyncio.run(main())

interim_input_transcription は低遅延の仮説なので、現在表示中の文字列を置き換えます。input_transcription は確定 segment として履歴へ追加します。interim をすべて append すると、同じ発話が重複し、後から修正された語も残ります。

ブラウザや mobile から直接接続する場合、長期 API key を埋め込まないでください。公式ガイドは trusted server が発行する制約付き ephemeral token を案内しています。さらに production では 10 分前の session 更新、reconnect、final の重複排除、end-of-stream、partial/final latency の計測が必要です。

料金表の一行だけで総コストを決めない

2026 年 8 月 27 日の Gemini Developer API 料金 は、録音 Transcribe を audio input 約 $0.003/min、text output 約 $0.002/min、合計約 $0.005/min と見積もっています。Live は input 約 $0.005/min、output 約 $0.004/min、合計約 $0.009/min です。請求は実際の token 消費に基づきます。

100 時間なら単純計算で録音約 $30、Live 約 $54 ですが、保存、変換、再試行、メディアサーバー、後続の要約、監視、人手修正は含みません。Free Tier は入出力無料と表示される一方、データを Google 製品の改善に使用すると記載されています。Paid Tier は使用しないと記載されています。社内会議や顧客通話を「無料だから」送るのではなく、同意、保持、地域、組織ルールを先に確認します。

日本語の合否は日本語の失敗コストで決める

日本語音声の gold sample 準備から録音、機能比較、Live 字幕、Go No-Go までの5段階検証フロー

Google は Artificial Analysis を引用し、streaming の平均 WER 4.0%、non-streaming 2.6% と報告しています。これは試す根拠であって、日本語、特定の方言、雑音、マイク、業界用語での保証ではありません。

実際の音声から 20〜50 個の gold sample を作り、静かな録音、遠距離、電話、早口、日英切り替え、複数人の重なりを含めます。氏名、金額、日付、住所、型番、契約上の発言は通常の WER と別に採点します。Live では interim の揺れ、final 重複、切断復帰、確定遅延も測ります。

最も安全な導入順序は、短い非機密録音で Files/Interactions の全経路を確認し、必要な mode と annotations だけを追加し、即時表示が本当に必要な場合に Live を別に検証することです。リアルタイム話者分離、リアルタイム単語時刻、10 分を超えて更新できない session、または一つのモデル内で転記と tool call の両方が必須なら、現在の Transcribe 契約とは適合しません。

#Gemini 3.5 Transcribe#Gemini API#音声文字起こし#Live API#音声認識
Share: