gemini-live-api-dev
Gemini Live APIを使ったリアルタイム双方向ストリーミングアプリを構築する際に活用するスキル。WebSocketベースの音声・映像・テキストストリーミング、音声アクティビティ検出(VAD)、ネイティブ音声機能、ファンクションコーリング、セッション管理、クライアントサイド認証用のエフェメラルトークン、すべてのLive API設定オプションをカバーする。対応SDKはgoogle-genai(Python)および@google/genai(JavaScript/TypeScript)。
description の原文を見る
Use this skill when building real-time, bidirectional streaming applications with the Gemini Live API. Covers WebSocket-based audio/video/text streaming, voice activity detection (VAD), native audio features, function calling, session management, ephemeral tokens for client-side auth, and all Live API configuration options. SDKs covered - google-genai (Python), @google/genai (JavaScript/TypeScript).
SKILL.md 本文
Gemini Live API開発スキル
概要
Live APIは、WebSockets経由でGeminiとの低遅延でリアルタイムな音声およびビデオ対話を実現します。連続的なオーディオ、ビデオ、またはテキストストリームを処理して、即座に人間的な音声応答を配信します。
主な機能:
- 双方向オーディオストリーミング — リアルタイムなマイクからスピーカーへの会話
- ビデオストリーミング — オーディオと共にカメラ/スクリーンフレームを送信
- テキスト入力/出力 — ライブセッション内でテキストを送受信
- オーディオトランスクリプション — 入出力オーディオの両方のテキストトランスクリプトを取得
- 音声活動検出(VAD) — 自動割り込み処理
- ネイティブオーディオ — シンキング(設定可能な
thinkingLevel付き) - 関数呼び出し — 同期的なツール使用
- Googleサーチグラウンディング — リアルタイム検索結果で応答をグラウンディング
- セッション管理 — コンテキスト圧縮、セッション再開、GoAwayシグナル
- エフェメラルトークン — セキュアなクライアント側認証
[!NOTE] Live APIは現在、WebSocketのみをサポートしています。WebRTCサポートまたは簡略化された統合については、パートナー統合を参照してください。
モデル
gemini-3.1-flash-live-preview— 低遅延でリアルタイム対話に最適化。ネイティブオーディオ出力、シンキング(thinkingLevel経由)。128kコンテキストウィンドウ。すべてのLive API使用ケースに推奨されるモデルです。
[!WARNING] 以下のLive APIモデルは非推奨であり、シャットダウンされます。
gemini-3.1-flash-live-previewに移行してください。
gemini-2.5-flash-native-audio-preview-12-2025—gemini-3.1-flash-live-previewに移行してください。gemini-live-2.5-flash-preview— 2025年6月17日リリース。シャットダウン: 2025年12月9日。gemini-2.0-flash-live-001— 2025年4月9日リリース。シャットダウン: 2025年12月9日。
SDK
- Python:
google-genai—pip install google-genai - JavaScript/TypeScript:
@google/genai—npm install @google/genai
[!WARNING] レガシーSDK
google-generativeai(Python)および@google/generative-ai(JS)は非推奨です。上記の新しいSDKを使用してください。
パートナー統合
リアルタイムオーディオ/ビデオアプリケーション開発を効率化するために、WebRTCまたはWebSockets経由でGemini Live APIをサポートするサードパーティ統合を使用してください:
- LiveKit — LiveKit AgentsでGemini Live APIを使用します。
- Pipecat by Daily — Gemini LiveとPipecatを使用してリアルタイムAIチャットボットを作成します。
- Fishjam by Software Mansion — Fishjamでライブビデオおよびオーディオストリーミングアプリケーションを作成します。
- Vision Agents by Stream — Vision Agentsでリアルタイム音声およびビデオAIアプリケーションを構築します。
- Voximplant — VoximplantでインバウンドおよびアウトバウンドコールをLive APIに接続します。
- Firebase AI SDK — Firebase AI LogicでGemini Live APIを開始します。
オーディオフォーマット
- 入力: Raw PCM、リトルエンディアン、16ビット、モノラル。16kHzネイティブ(他はリサンプリング)。MIMEタイプ:
audio/pcm;rate=16000 - 出力: Raw PCM、リトルエンディアン、16ビット、モノラル。24kHzサンプリングレート。
[!IMPORTANT] すべてのリアルタイムユーザー入力(オーディオ、ビデオ、およびテキスト)に対して
send_realtime_input/sendRealtimeInputを使用してください。send_client_content/sendClientContentは初期コンテキスト履歴のシード処理のみサポートされています(history_configでinitial_history_in_client_contentを設定する必要があります)。会話中に新しいユーザーメッセージを送信するために使用しないでください。
[!WARNING]
sendRealtimeInputでmediaを使用しないでください。特定のキーを使用してください: オーディオデータ用のaudio、画像/ビデオフレーム用のvideo、テキスト入力用のtext。
クイックスタート
認証
Python
from google import genai
client = genai.Client(api_key="YOUR_API_KEY")
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({ apiKey: 'YOUR_API_KEY' });
Live APIへの接続
Python
from google.genai import types
config = types.LiveConnectConfig(
response_modalities=[types.Modality.AUDIO],
system_instruction=types.Content(
parts=[types.Part(text="You are a helpful assistant.")]
)
)
async with client.aio.live.connect(model="gemini-3.1-flash-live-preview", config=config) as session:
pass # Session is active
JavaScript
const session = await ai.live.connect({
model: 'gemini-3.1-flash-live-preview',
config: {
responseModalities: ['audio'],
systemInstruction: { parts: [{ text: 'You are a helpful assistant.' }] }
},
callbacks: {
onopen: () => console.log('Connected'),
onmessage: (response) => console.log('Message:', response),
onerror: (error) => console.error('Error:', error),
onclose: () => console.log('Closed')
}
});
テキストを送信
Python
await session.send_realtime_input(text="Hello, how are you?")
JavaScript
session.sendRealtimeInput({ text: 'Hello, how are you?' });
オーディオを送信
Python
await session.send_realtime_input(
audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)
JavaScript
session.sendRealtimeInput({
audio: { data: chunk.toString('base64'), mimeType: 'audio/pcm;rate=16000' }
});
ビデオを送信
Python
# frame: raw JPEG-encoded bytes
await session.send_realtime_input(
video=types.Blob(data=frame, mime_type="image/jpeg")
)
JavaScript
session.sendRealtimeInput({
video: { data: frame.toString('base64'), mimeType: 'image/jpeg' }
});
オーディオとテキストを受信
[!IMPORTANT] 単一のサーバーイベントは複数のコンテンツパートを同時に含むことができます(例: オーディオチャンクとトランスクリプト)。各イベントのすべてのパートを処理して、コンテンツの欠落を避けてください。
Python
async for response in session.receive():
content = response.server_content
if content:
# オーディオ — 各イベントのすべてのパートを処理
if content.model_turn:
for part in content.model_turn.parts:
if part.inline_data:
audio_data = part.inline_data.data
# トランスクリプション
if content.input_transcription:
print(f"User: {content.input_transcription.text}")
if content.output_transcription:
print(f"Gemini: {content.output_transcription.text}")
# 割り込み
if content.interrupted is True:
pass # Stop playback, clear audio queue
JavaScript
// onmessageコールバック内
const content = response.serverContent;
if (content?.modelTurn?.parts) {
for (const part of content.modelTurn.parts) {
if (part.inlineData) {
const audioData = part.inlineData.data; // Base64エンコード
}
}
}
if (content?.inputTranscription) console.log('User:', content.inputTranscription.text);
if (content?.outputTranscription) console.log('Gemini:', content.outputTranscription.text);
if (content?.interrupted) { /* Stop playback, clear audio queue */ }
制限事項
- 応答モダリティ — セッションあたり
TEXTまたはAUDIOのみ、両方ではない - オーディオのみセッション — 圧縮なしで15分
- オーディオ+ビデオセッション — 圧縮なしで2分
- 接続の生存期間 — 約10分(セッション再開を使用)
- コンテキストウィンドウ — 128kトークン(ネイティブオーディオ) / 32kトークン(標準)
- 非同期関数呼び出し — まだサポートされていません。関数呼び出しは同期のみです。ツール応答を送信するまで、モデルは応答を開始しません。
- プロアクティブオーディオ — Gemini 3.1 Flash Liveではまだサポートされていません。この機能の構成を削除してください。
- 感情的対話 — Gemini 3.1 Flash Liveではまだサポートされていません。この機能の構成を削除してください。
- コード実行 — サポートされていません
- URLコンテキスト — サポートされていません
Gemini 2.5 Flash Liveからの移行
gemini-2.5-flash-native-audio-preview-12-2025からgemini-3.1-flash-live-previewに移行する場合:
- モデル文字列 —
gemini-2.5-flash-native-audio-preview-12-2025からgemini-3.1-flash-live-previewに更新してください。 - シンキング構成 —
thinkingBudgetの代わりにthinkingLevel(minimal、low、medium、high)を使用してください。デフォルトは最低遅延のためのminimalです。 - サーバーイベント — 単一のイベントはオーディオ+トランスクリプトなど、複数のコンテンツパートを同時に含むことができます。各イベントのすべてのパートを処理してください。
- クライアントコンテンツ —
send_client_contentは初期コンテキスト履歴のシード処理のみです(history_configでinitial_history_in_client_contentを設定)。会話中のテキストにはsend_realtime_inputを使用してください。 - ターンカバレッジ —
TURN_INCLUDES_ONLY_ACTIVITYの代わりにTURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEOにデフォルト設定されています。常にビデオフレームを送信している場合、コストを削減するためにオーディオアクティビティ中のみ送信することを検討してください。 - 非同期関数呼び出し — まだサポートされていません。関数呼び出しは同期のみです。
- プロアクティブオーディオと感情的対話 — まだサポートされていません。これらの機能の構成を削除してください。
ベストプラクティス
- ヘッドフォンを使用してマイクオーディオをテストするときは、エコー/自己割り込みを防ぐため
- コンテキストウィンドウ圧縮を有効にする15分以上のセッション向け
- セッション再開を実装する接続リセットを適切に処理するため
- エフェメラルトークンを使用クライアント側デプロイメント向け — ブラウザでAPIキーを公開しないこと
- すべてのリアルタイムユーザー入力(オーディオ、ビデオ、テキスト)に
send_realtime_inputを使用してください。send_client_contentは初期コンテキスト履歴のシード処理のみに予約してください - マイクが一時停止されているときに
audioStreamEndを送信キャッシュされたオーディオをフラッシュするため - 割り込みシグナルでオーディオ再生キューをクリア
- 各サーバーイベントのすべてのパートを処理 — イベントは複数のコンテンツパートを含む可能性があります
ドキュメント検索
MCPがインストールされている場合(推奨)
search_docsツール(Google MCPサーバーから)が利用可能な場合、それを唯一のドキュメントソースとして使用してください:
- クエリで
search_docsを呼び出す - 返されたドキュメントを読む
- MCPの結果をAPI詳細の真実のソースとして信頼してください — それらは常に最新です。
[!IMPORTANT] MCPツールが存在する場合、決してURLを手動で取得しないでください。MCPは最新で、インデックス化されたドキュメントを提供し、URLフェッチよりも正確でトークン効率が高いです。
MCPがインストールされていない場合(フォールバックのみ)
MCPドキュメントツールが利用できない場合、公式ドキュメントインデックスから取得してください:
llms.txt URL: https://ai.google.dev/gemini-api/docs/llms.txt
このインデックスには、.md.txt形式のすべてのドキュメントページへのリンクが含まれています。Webフェッチツールを使用して:
llms.txtを取得して、利用可能なドキュメントページを検出- 特定のページを取得(例:
https://ai.google.dev/gemini-api/docs/live-session.md.txt)
主要なドキュメントページ
[!IMPORTANT] これらはすべてのドキュメントページではありません。
llms.txtインデックスを使用して、利用可能なドキュメントページを検出してください
- Live API概要 — 開始方法、raw WebSocket使用法
- Live APIキャパビリティガイド — 音声構成、トランスクリプション構成、ネイティブオーディオ(シンキング)、VAD構成、メディア解像度
- Live APIツール使用 — 関数呼び出し(同期と非同期)、Googleサーチグラウンディング
- セッション管理 — コンテキストウィンドウ圧縮、セッション再開、GoAwayシグナル
- エフェメラルトークン — ブラウザ/モバイル向けセキュアなクライアント側認証
- WebSockets API リファレンス — raw WebSocketプロトコルの詳細
サポートされている言語
Live APIは70以上の言語をサポートしており、以下が含まれます: 英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語、日本語、韓国語、ヒンディー語、アラビア語、ロシア語、その他多数。ネイティブオーディオモデルは自動的に言語を検出し、切り替えます。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- google-gemini
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/google-gemini/gemini-skills / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。