OpenAI Realtime API実装入門【2026年版】

ミッドナイトインディゴの空間中央で一筋の発光する音波の連続パルスが入口と出口を結び、双方向にストリーミングする一本の対話接続を象徴する横長の構図

OpenAI Realtime API実装入門【2026年版】

「OpenAI Realtime APIがGAしたのは知っているが、gpt-realtime-2や128Kコンテキストまで追えていない」――こんな声をよく聞きます。音声AIで「STT→LLM→TTS」を自前で組むと遅延が累積し、関数呼び出し精度も落ちがちでした。OpenAI Realtime APIは、この3段を1接続に統合するSpeech-to-Speech基盤です。2025年8月28日にGA(一般提供)へ到達し、2026年5月にgpt-realtime-2が追加されました。関数呼び出し精度ComplexFuncBenchは66.5%(前49.7%)まで向上しています。本記事ではPython実装、料金試算、本番運用Tipsまで一気通貫で解説します。

目次

OpenAI Realtime APIとは – 2026年5月時点の機能まとめ

深い藍色の縦長棚に五段の浮遊するタブレットが高さと厚みを変えて段違いに積み重なり、五つのモデル系統の役割の違いを抽象化した縦方向構図
5つのRealtimeモデル系統の役割と重みの違いを縦方向に並列化

OpenAI Realtime APIは音声入出力を1接続で完結させるspeech-to-speech APIです。Whisper(STT)→GPT→TTSの3段構成と比べ、遅延と実装コストを大きく削減できます。2025年8月28日のGAでgpt-realtimeが提供開始されました。続いて2026年5月7日にgpt-realtime-2 / translate / whisperが追加されています(出典:OpenAI「Advancing voice intelligence」)。

gpt-realtime-2はGPT-5クラス推論を備えた初のRealtimeモデルです。コンテキスト長は128K(前世代の4倍)で、reasoning effortをnormal / high / xhighから選べます。並列ツール呼び出しとpreambles(合いの手の発話)にも対応します。

対応プロトコルはWebSocket(サーバー間)/ WebRTC(ブラウザ直結)/ SIP(電話網)の3種類で、remote MCPも目玉です(出典:OpenAI公式「Realtime and audio」)。旧gpt-4o-realtime-previewは2026年4月30日に廃止済みです。GAに伴いイベント名もresponse.output_audio.deltaに改名されました。

モデル 用途 主要料金
gpt-realtime 本流(32K) 音声$32 / $64(1M)
gpt-realtime-mini 軽量(32K) 音声$10 / $20
gpt-realtime-2 GPT-5級推論(128K) 音声$32 / $64
gpt-realtime-translate 同時通訳 $0.034 / 分
gpt-realtime-whisper STTストリーム $0.017 / 分

料金の仕組み – 音声トークンの数え方と試算

Realtime APIは音声トークン単位で課金されます。公式料金ページによれば、gpt-realtimeは音声入力$32/1M、音声出力$64/1M、キャッシュ$0.40/1Mです。長い会話履歴の再送はキャッシュで大きく圧縮できます。

音声トークン目安(非公式参照値)は入力約3,200/分、出力約4,800/分です。10分通話(双方向均等)なら入力32,000×$32/1M=$1.024、出力48,000×$64/1M=$3.072、合計約$4.10。1時間通話なら約$24.6が目安です。

※上記の試算はあくまで目安です。実際のコストは発話量・無音区間・キャッシュヒット率・関数呼び出し回数により変動します。本番運用前にダッシュボードのUsageで実測してください。料金体系も2026年5月時点のもので、公式の改定により変わる可能性があります。

軽量版gpt-realtime-miniは約3分の1の単価で、10分通話で約$1.28まで圧縮できます。定型問い合わせ中心ならmini採用が現実的ですが、複雑な関数呼び出しでは精度差が出やすいため、PoCで両モデルを並走比較する運用を推奨します。

項目 gpt-realtime mini
音声入力 $32 / 1M $10 / 1M
音声出力 $64 / 1M $20 / 1M
キャッシュ入力 $0.40 / 1M $0.30 / 1M

文字起こしだけならgpt-realtime-whisper($0.017/分)やWhisper APIをPythonで30分実装する手順の方が大幅に低コストです。

30分で実装 – WebSocket版 Python サンプル

ミッドナイトブルーの空間で上下に並ぶ二本のレーンを通って小さなパケットがそれぞれ逆方向に流れ、中央で交差しながら持続的な双方向通信を象徴する構図
WebSocketの上下二レーン双方向ストリームを抽象化

サーバー側からの最短ルートはWebSocketです。公式WebSocketガイドに従い、wss://api.openai.com/v1/realtime?model=gpt-realtimeAuthorization: Bearer $OPENAI_API_KEYヘッダで接続します。GA以降はOpenAI-Betaヘッダ不要です。Python 3.10以上で以下をインストールします。


pip install openai==1.54.0 websockets==13.1 python-dotenv==1.0.1

APIキーは環境変数OPENAI_API_KEYに設定します。


# realtime_connect.py
import asyncio
import json
import os
import websockets
from dotenv import load_dotenv

load_dotenv()
API_KEY = os.environ["OPENAI_API_KEY"]
URL = "wss://api.openai.com/v1/realtime?model=gpt-realtime"

async def main():
    headers = {"Authorization": f"Bearer {API_KEY}"}
    async with websockets.connect(URL, additional_headers=headers) as ws:
        msg = await ws.recv()  # session.created が届く
        print("connected:", json.loads(msg)["type"])

if __name__ == "__main__":
    asyncio.run(main())

接続直後にサーバーからsession.createdが返ります。続けてsession.updateでモダリティ・音声・フォーマットを指定します(24kHz固定、PCM16標準、SIP時のみg711_ulaw)。


# session_update.py(抜粋)
session_config = {
    "type": "session.update",
    "session": {
        "modalities": ["audio", "text"],
        "voice": "marin",  # 新音声 Cedar / Marin が利用可能
        "input_audio_format": "pcm16",
        "output_audio_format": "pcm16",
        "instructions": "AI教科書のサポート担当として日本語で簡潔に応答してください。",
        "turn_detection": {"type": "server_vad", "threshold": 0.5}
    }
}
await ws.send(json.dumps(session_config))

turn_detectionにserver VAD(Voice Activity Detection、無音区間検出)を指定すると、サーバー側が発話の切れ目を自動判定します。マイク音声はPCM16にエンコードしたバイト列をBase64で包み、input_audio_buffer.appendとして連続送信します。応答音声はresponse.output_audio.deltaでストリーミング受信します。

Function Callingで外部APIを叩く

Realtime APIの真価は、音声対話中に関数呼び出しを挟める点です。gpt-realtimeはComplexFuncBenchで66.5%を記録し、前モデルの49.7%から大幅に改善しました(出典:InfoQ「OpenAI’s gpt-realtime」)。Big Bench Audioも82.8%(前65.6%)に達しています。gpt-realtime-2では並列ツール呼び出しが正式対応し、複数ツール同時実行とpreamblesの組み合わせが可能になりました。session.updatetools配列に関数定義を渡せば、モデル側が自動で呼び出しを判断します。


# function_calling.py(抜粋)
tools = [{
    "type": "function",
    "name": "get_weather",
    "description": "指定都市の現在の天気を返します",
    "parameters": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
    }
}]
await ws.send(json.dumps({
    "type": "session.update",
    "session": {"tools": tools, "tool_choice": "auto"}
}))

# ユーザーが「東京の天気は?」と発話すると以下が届く
# response.function_call_arguments.done (name, arguments, call_id)

# 関数を実行して結果を返す
await ws.send(json.dumps({
    "type": "conversation.item.create",
    "item": {
        "type": "function_call_output",
        "call_id": call_id,
        "output": json.dumps({"temp": 22, "weather": "晴れ"})
    }
}))
await ws.send(json.dumps({"type": "response.create"}))

非同期関数呼び出し(async function calling)は、ツール結果待ちの間も会話を中断せず継続できます。DB照会等を挟みつつ合いの手で応答できます。

本番運用Tips – WebRTC・SIP・MCP・モニタリング

深い藍紫の俯瞰背景に四枚の薄い角張ったハニカム板がわずかに重なり合いながら扇状に配置され、それぞれが異なる色の薄い光をたたえている平面的な構図
本番運用を支える4要素を扇状に重なるハニカム板で表現

ブラウザ・モバイル直結ならWebRTCが第一選択です。POST /v1/realtime/callsとエフェメラル鍵(/v1/realtime/client_secrets)を使えば、クライアントから安全にセッションを確立できます。NAT越え・ジッタ吸収にも強く、UXが向上します。

電話網ではSIP(電話回線の呼制御プロトコル)が標準的な選択肢です。g711_ulaw+Twilio Media Streamsをプロキシに挟む構成が定番です(出典:InfoWorld「OpenAI adds MCP and SIP support」)。

remote MCPなら外部ツールを自作せずRealtime APIに委譲できます。toolsにMCPサーバーを登録するだけでOpenAI側が呼び出しを自動処理します。


# mcp_tools.py(抜粋)
tools = [{
    "type": "mcp",
    "server_url": "https://your-mcp-server.example.com",
    "allowed_tools": ["search_inventory", "create_ticket"]
}]
await ws.send(json.dumps({
    "type": "session.update",
    "session": {"tools": tools}
}))

MCP公開手順はMCPサーバーを自作してツール連携する方法、エージェント設計はLangGraphでマルチエージェントを設計する手順自律型AIエージェントのエンタープライズ導入実態を併読してください。

モニタリングはOpenAI-Safety-Identifierでユーザー識別、response.doneusageでトークン消費を記録し、コストダッシュボード化を初期から組み込みましょう。

FAQ

Q1. Whisper APIとの違いは? WhisperはSTTの単方向APIで$0.006/分と低コスト・バッチ向きです。Realtime APIは音声入出力を1接続で扱うspeech-to-speech APIで、双方向対話・関数呼び出し・SIP接続に対応します。文字起こしだけならWhisper、音声会話ならRealtime APIという棲み分けです。

Q2. WebSocketとWebRTCのどちらを使うべき? サーバーで集約処理(セッション管理・ログ蓄積)するならWebSocket、ユーザー端末直結で低遅延を求めるならWebRTCを選びます。電話網であればSIPが標準的です。

Q3. 日本語の音声認識精度は? OpenAI公式は多言語対応を明言し、gpt-realtime-translateは70以上の入力言語をサポートします。日本語精度の定量データは公式公開がないため、実環境で計測し公開後追記する運用を推奨します。

Q4. 同時接続数の上限は? Realtime APIはTier別レート制限が設定され、組織やモデルごとに上限が異なります。ダッシュボード「Usage limits」でRPM・TPMを確認し、本番想定の負荷で事前申請して引き上げる運用が安全です。

まとめ

OpenAI Realtime APIは、2025年8月のGAと2026年5月のgpt-realtime-2追加により、本番品質の音声エージェント基盤として実装段階に入りました。本記事では5モデルの使い分け、音声トークン課金の試算、WebSocket実装、Function Calling、WebRTC / SIP / remote MCPの運用Tipsを通しで解説しました。次の一手はminiで小規模PoCを構築し、ベンチマークと実コストを計測した上で上位モデルへ昇格させる段階導入です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次