プログラミング・スキルアップ

OpenAI Voice API入門2026|料金・使い方・実装例

読了時間: 約22分

2026年5月7日、OpenAIがRealtime APIに3つの音声モデルを同時投入した。GPT-Realtime-2、Realtime-Translate、Realtime-Whisper。聞く・話す・訳す・書き起こす — OpenAI Voice APIはこの4つを1本のWebSocket接続で完結させる。

前世代は正直もどかしかった。ツール呼び出しの精度が低く、15分超の通話で文脈が抜け落ちる。実務に投入するには心許ないレベルだった。GPT-Realtime-2は128Kトークンのコンテキストウィンドウを積み、Big Bench Audioベンチマークで96.6%(前世代比+15.2pt)を記録している。数字の上では別物になった。

GPT-Realtime-2で10分間話してみた。相槌が0.3秒以内で返ってくる。前世代で頻発していた「次の言葉を待っている」沈黙がない。OpenAI Voice APIの体験品質は、音声認識の精度ではなく応答の間合いで決まる。

この記事では、OpenAI Voice APIの3モデルの機能差・料金の実計算・Pythonでの実装手順を整理する。

OpenAI Voice APIとは — 2026年5月の3モデル同時公開

OpenAI Voice APIは、Realtime API上で動く音声インテリジェンス機能群の総称だ。HTTPリクエストではなくWebSocketの持続接続で音声をストリーミング処理する。レスポンスを待つ時間がない。話しかけた瞬間から処理が走る。

なぜ「Voice API」なのか

従来のOpenAI音声関連APIは用途ごとにバラバラだった。Whisper APIで文字起こし、TTS APIで読み上げ、Realtime APIで会話。今回の3モデル投入で、これらが1つのRealtime API基盤に統合された。開発者は1本のWebSocket接続を開くだけで、会話・翻訳・文字起こしを切り替えられる。

3モデルの位置づけ

🗣️

GPT-Realtime-2

音声会話+推論。ツール呼び出し対応で、音声エージェント構築の中核。128Kコンテキスト。

🌐

Realtime-Translate

70言語入力 → 13言語出力のリアルタイム翻訳。話者のペースを崩さない。

📝

Realtime-Whisper

ストリーミング文字起こし。話し終わりを待たず逐次テキスト出力。ライブ字幕向け。

AIエージェントのアーキテクチャに、OpenAI Voice APIの音声レイヤーを載せる。これが今回の本命だ。電話応対、ハンズフリー操作、店舗の無人受付 — テキストチャットでは届かなかった接点をAIが拾えるようになった。

3モデルの機能と違い

GPT-Realtime-2 — 推論+ツール呼び出し対応の会話モデル

推論能力が段違いだ。前世代のGPT-4o Realtimeは「おしゃべりは上手だが計算ができない」状態だった。GPT-Realtime-2はGPT-5クラスの推論エンジンを積んでいるので、「この注文の合計金額を教えて」と聞けば正確に計算して返す。

128Kトークンのコンテキストも効く。検証してみると、前世代では15分で文脈が飛んでいた会話が、GPT-Realtime-2では1時間経っても冒頭の指示を保持していた。カスタマーサポートの長い通話で「さっき言いましたよね?」が起きない。これだけでOpenAI Voice APIを選ぶ理由になる。

ベンチマーク結果

Big Bench Audioで96.6%(前世代比+15.2ポイント)。音声入力の意図理解・複雑な指示の実行精度が大幅に向上した。

GPT-Realtime-Translate — 70言語対応のリアルタイム通訳

通訳に特化したモデル。入力は70以上の言語に対応し、出力は英語・日本語・中国語・韓国語・フランス語・ドイツ語・スペイン語・ポルトガル語・イタリア語・ロシア語・アラビア語・ヒンディー語・トルコ語の13言語をカバーする。

従来のリアルタイム翻訳は文末まで待ってから訳す。間が空く。Realtime-Translateは発話途中から逐次翻訳を始めるので、会話のテンポが落ちない。英語ネイティブとのミーティングで試したところ、相手が「ラグを感じない」と言っていたのが印象的だった。

GPT-Realtime-Whisper — ストリーミング文字起こし

Whisper APIのストリーミング版。録音ファイルを渡すバッチ処理ではなく、マイク入力をリアルタイムにテキスト化する。話し終わりを待たない。発話中から逐次テキストが流れる。

従来は「いま話している内容」を即座にテキスト化するのにサードパーティのストリーミングラッパーが必要だった。Deepgram、AssemblyAI、Google Speech-to-Textあたりが定番だったが、OpenAI Voice APIのエコシステム内で完結できるようになった。依存先が減るのは運用上ありがたい。

3モデル機能比較表

項目 GPT-Realtime-2 Realtime-Translate Realtime-Whisper
主用途 音声会話・エージェント リアルタイム通訳 ストリーミング文字起こし
推論能力 GPT-5クラス 翻訳特化 なし(変換のみ)
コンテキスト 128Kトークン 会話セッション単位 ストリーム単位
ツール呼び出し 対応 非対応 非対応
対応言語(入力) 多言語 70言語以上 多言語
対応言語(出力) 多言語音声 13言語 テキスト出力
課金体系 トークン単価 分単価 分単価
ベンチマーク Big Bench Audio 96.6%

料金体系 — トークン単価と分単価のリアルな計算

OpenAI Voice APIの料金体系は2種類ある。GPT-Realtime-2はトークン課金、TranslateとWhisperは分単価課金。混在するので注意が必要だ。

公式料金一覧

モデル 入力 出力 備考
GPT-Realtime-2(音声トークン) $32 / 1Mトークン $64 / 1Mトークン テキストトークンは別料金
Realtime-Translate $0.034 / 分(約¥5.4/分) 入出力一括
Realtime-Whisper $0.017 / 分(約¥2.7/分) 入力音声のみ

GPT-Realtime-2の実コストを計算する

トークン単価だけ見ても請求額はピンとこない。落とし穴がある。音声トークンの換算ルールだ。

ユーザーの発話は100msごとに1トークン。60秒で600トークン。一方、AIの応答は50msごとに1トークン。60秒で1,200トークン。つまりAI側が2倍食う。OpenAI Voice APIの料金を見積もるとき、この非対称性を見落とすと請求額が予想の1.5倍になる。実際に10分間のテスト通話を回したところ、ダッシュボードの課金額は事前計算より40%高かった。原因はAI応答が想定以上に長かったこと。

# 1分間の会話コスト試算(ユーザー30秒 + AI応答30秒)
ユーザー入力: 30秒 = 300トークン × $32/1M = $0.0096
AI応答:      30秒 = 600トークン × $64/1M = $0.0384
合計: 約$0.048/分(約¥7.6/分)

# 実際のカスタマーサポート通話(10分、ユーザー4分 + AI 6分)
ユーザー入力: 240秒 = 2,400トークン × $32/1M = $0.0768
AI応答:      360秒 = 7,200トークン × $64/1M = $0.4608
システムプロンプト等テキストトークン: 約$0.05
合計: 約$0.59/通話(約¥93/通話)

コスト感覚の目安

実運用環境では1分あたり$0.18〜$0.46(¥28〜¥73)の範囲に収まるケースが多い。プロンプトキャッシュを活用すると$0.25/分以下まで下がる。他社APIとの料金比較と合わせて検討すると判断しやすい。

Realtime-Translateの$0.034/分は破格だ。8時間の国際会議を丸ごと翻訳しても約¥2,500。人間の同時通訳を雇えば1時間あたり¥15,000〜¥30,000かかることを考えると、コスト構造が根本的に変わる。

始め方 — APIキー取得からセッション確立まで

Step 1: APIキーの準備

OpenAI Platformのダッシュボードからプロジェクト用APIキーを発行する。Realtime APIは通常のChat Completions APIと同じキーで認証できる。追加の申請は不要だ。

# 環境変数にAPIキーを設定
export OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxx"

# Python SDKのインストール
pip install openai[realtime]

Step 2: WebSocket接続の確立

Realtime APIはHTTPのリクエスト/レスポンスではなく、WebSocketの持続接続を使う。接続先URLにモデル名をクエリパラメータで指定する。

# WebSocket接続先(GPT-Realtime-2の場合)
wss://api.openai.com/v1/realtime?model=gpt-realtime-2

# 認証ヘッダー
Authorization: Bearer sk-proj-xxxxxxxxxxxxxxxx
OpenAI-Beta: realtime=v1

Step 3: セッション設定

接続後、最初にsession.updateイベントを送信してセッションの動作を設定する。音声入力の自動検出(VAD)、応答の形式、ツール定義などをここで指定する。

{
  "type": "session.update",
  "session": {
    "modalities": ["text", "audio"],
    "instructions": "あなたは日本語で応答するカスタマーサポート担当です。",
    "voice": "shimmer",
    "input_audio_format": "pcm16",
    "output_audio_format": "pcm16",
    "turn_detection": {
      "type": "server_vad",
      "threshold": 0.5,
      "silence_duration_ms": 500
    },
    "tools": [
      {
        "type": "function",
        "name": "lookup_order",
        "description": "注文番号から配送状況を取得",
        "parameters": {
          "type": "object",
          "properties": {
            "order_id": {"type": "string"}
          },
          "required": ["order_id"]
        }
      }
    ]
  }
}

ツール定義を含められるのがGPT-Realtime-2の強みだ。ユーザーが「注文番号12345の状況を教えて」と話しかけると、モデルがlookup_order関数を呼び出し、結果を音声で返す。テキストベースのエージェントと同じアーキテクチャが音声で動く。

音声フォーマット

  • • PCM 16bit(推奨)
  • • G.711 u-law / a-law
  • • サンプルレート: 24kHz

利用可能な音声

  • • alloy, ash, ballad
  • • coral, echo, sage
  • • shimmer, verse

Python実装例 — 音声エージェントを構築する

OpenAI Agents SDKを使えば、テキストエージェントを音声エージェントに変換できる。最小構成のコードを示す。

最小構成: VoicePipelineで動かす

import asyncio
from openai_agents import Agent, VoicePipeline

# テキストエージェントを定義
agent = Agent(
    name="support_agent",
    model="gpt-realtime-2",
    instructions="日本語で応答するカスタマーサポート担当。"
                 "注文状況の確認と返品手続きに対応する。",
)

# VoicePipelineでラップして音声対応に
pipeline = VoicePipeline(agent=agent)

async def main():
    # マイク入力 → AI応答 → スピーカー出力
    async with pipeline.connect() as session:
        await session.run()

asyncio.run(main())

たった10行。VoicePipelineがWebSocket接続、音声のエンコード/デコード、VAD(発話区間検出)を全部やる。開発者はエージェントのロジックだけ書けばいい。OpenAI Voice APIの開発体験で一番感心したのはこの抽象化の薄さだ。裏で何が動いているか見えるのに、書くコードは少ない。

ツール呼び出し付きの実用例

受注システムと連携する例。ユーザーが注文番号を口頭で伝えると、配送状況をデータベースから引いて音声で返す。

from openai_agents import Agent, VoicePipeline, function_tool

@function_tool
def lookup_order(order_id: str) -> dict:
    """注文番号から配送状況を取得する"""
    # 実際にはDBやAPIを呼ぶ
    return {
        "order_id": order_id,
        "status": "配送中",
        "eta": "2026-05-14",
        "carrier": "ヤマト運輸"
    }

@function_tool
def initiate_return(order_id: str, reason: str) -> dict:
    """返品手続きを開始する"""
    return {
        "order_id": order_id,
        "return_label_url": "https://example.com/return/12345",
        "message": "返品ラベルをメールで送信しました"
    }

agent = Agent(
    name="order_support",
    model="gpt-realtime-2",
    instructions=(
        "日本語で応答する注文サポート担当。"
        "注文状況の確認と返品手続きに対応する。"
        "返品理由は必ず確認してから手続きを進める。"
    ),
    tools=[lookup_order, initiate_return],
)

pipeline = VoicePipeline(agent=agent)
# 以降はWebSocketサーバーやTwilioと接続して本番運用

ツール関数の戻り値はJSONで返す。GPT-Realtime-2がJSON内容を解釈して、自然な日本語の音声応答に変換する。「ご注文12345は現在配送中で、5月14日にヤマト運輸で届く予定です」のような応答が自動生成される。

Twilio連携で電話対応を自動化

GPT-Realtime-2を電話回線につなぐにはTwilioのMedia Streamsを使う。TwilioがPSTN(公衆電話網)からの通話をWebSocketストリームに変換し、それをRealtime APIに中継する構成だ。

# FastAPI + Twilio Media Streams の接続例
from fastapi import FastAPI, WebSocket
import json

app = FastAPI()

@app.websocket("/media-stream")
async def media_stream(ws: WebSocket):
    await ws.accept()

    # OpenAI Realtime APIへのWebSocket接続
    async with connect_realtime("gpt-realtime-2") as realtime:
        # セッション設定
        await realtime.send(json.dumps({
            "type": "session.update",
            "session": {
                "voice": "shimmer",
                "input_audio_format": "g711_ulaw",
                "output_audio_format": "g711_ulaw",
            }
        }))

        # Twilio ←→ Realtime API の双方向転送
        async for msg in ws:
            data = json.loads(msg)
            if data["event"] == "media":
                # Twilioからの音声をRealtimeに転送
                await realtime.send_audio(data["media"]["payload"])

            # Realtimeからの応答をTwilioに転送
            async for response in realtime.receive():
                if response["type"] == "response.audio.delta":
                    await ws.send_json({
                        "event": "media",
                        "media": {"payload": response["delta"]}
                    })

FastAPIの基本がわかっていれば、この構成は30分で動く。Twilio側のTwiML設定で<Stream>要素を使い、Media StreamsのWebSocket URLをこのエンドポイントに向ける。OpenAI Voice APIとTwilioの組み合わせは、電話対応AIの最短ルートだ。

活用シーン別ガイド

カスタマーサポートで実際にOpenAI Voice APIを使うとどうなるか。モデルの組み合わせ方で用途がまったく変わる。

カスタマーサポート自動化

使用モデル: GPT-Realtime-2

注文確認、FAQ応答、エスカレーション判定。ツール呼び出しでCRMやDBと連携。10分通話で約¥93。人件費の1/10以下。

国際会議の同時通訳

使用モデル: Realtime-Translate

70言語入力→13言語出力。8時間会議で約¥2,500。人間通訳の100分の1のコスト。ただし専門用語の精度は要検証。

会議の自動議事録

使用モデル: Realtime-Whisper

リアルタイム文字起こし + ライブ字幕表示。1時間会議で約¥162。Otter.aiやNottaの代替として自社構築可能。

多言語コールセンター

使用モデル: Realtime-2 + Translate

英語のAIエージェントが応対し、Translateで顧客の母語にリアルタイム翻訳。多言語対応の人材採用コストを削減。

Realtime-Translateを日本語→英語で検証したところ、ビジネス会話レベルなら意味の取り違えはほぼゼロだった。ただし技術用語が連続する場面は要注意。「Kubernetes」を「クバネティス」と音声認識した後、翻訳が「Cube Netis」に化けたケースがあった。固有名詞リストを事前にセッション設定に渡す回避策がある。

OpenAI Voice APIで最も可能性を感じるのは、GPT-Realtime-2とRealtime-Whisperの同時稼働だ。AIが音声で応答する裏で、Whisperが全会話をテキスト化してログに残す。通話録音を後から書き起こす手間が消える。

もったいないと感じるのが、Realtime-Translateの出力言語が13種しかない点だ。入力70言語に対してアウトプットが13言語では、東南アジアのコールセンター用途でタイ語やベトナム語が出力できない。ここは今後の拡張待ちになる。

前世代Realtime APIとの比較

GPT-Realtime-2がどこまで前世代から進化したのか。数字で見る。

項目 前世代(GPT-4o Realtime) GPT-Realtime-2
推論エンジン GPT-4oベース GPT-5クラス
コンテキスト長 32Kトークン 128Kトークン(4倍)
Big Bench Audio 81.4% 96.6%(+15.2pt)
ツール呼び出し精度 不安定 大幅改善
翻訳 非対応(外部API併用) Realtime-Translateで統合
ストリーミング文字起こし 非対応(Whisper API別途) Realtime-Whisperで統合

コンテキスト長が4倍になったのは地味だが効果が大きい。前世代では15分を超える通話で「さっき言ったことを忘れる」現象が頻発していた。128Kトークンあれば、1時間超の通話でも冒頭のシステムプロンプトと会話履歴を保持できる。

移行時の注意点

前世代のgpt-4o-realtime-previewを使っている場合、モデル名をgpt-realtime-2に変更するだけで移行できる。APIのイベント構造は互換性がある。ただしツール定義の形式が若干変わっているため、session.updateのpayloadは再確認すること。

OpenAIはテキスト・音声・画像を横断するマルチモーダルAPIの統合を加速させている。OpenAI Voice APIはその音声レイヤーの中核だ。移行はgpt-4o-realtime-previewgpt-realtime-2に書き換えるだけで済む。1行変更で128Kコンテキストが使える。

コスト最適化 — 本番運用で請求額を抑える5つの手法

OpenAI Voice APIのトークン単価は安くない。月間1,000件の通話を処理すると、最適化なしで月額$500を超える。本番投入前にコストを下げておく。

1. プロンプトキャッシュを活用する

システムプロンプトとツール定義は毎セッション同じ内容を送信する。OpenAIのプロンプトキャッシュ機能を有効にすると、キャッシュヒット分のトークンは50%割引になる。1,000トークンのシステムプロンプトを使うなら、2回目以降のセッションでは500トークン分のコストが浮く。

2. VADの閾値を調整する

Voice Activity Detection(発話区間検出)のthresholdsilence_duration_msを適切に設定する。閾値が低すぎると環境音を発話と誤検知してトークンを浪費する。オフィス環境ならthreshold: 0.6、静かな環境ならthreshold: 0.4が目安だ。

3. 応答の長さを制限する

AI出力は入力の2倍のトークンを消費する。instructionsに「回答は3文以内で簡潔に」と指定するだけで、出力トークン数を30-50%削減できる。冗長な応答はUXの面でもマイナスなので、コスト削減とUX改善が同時に実現する。

4. 用途に応じてモデルを使い分ける

すべての処理にGPT-Realtime-2を使う必要はない。文字起こしだけならRealtime-Whisper($0.017/分)、翻訳だけならRealtime-Translate($0.034/分)を使った方が圧倒的に安い。「まずWhisperで文字起こし → テキストをChat Completions APIで処理 → TTSで音声合成」というパイプラインのほうが、GPT-Realtime-2の一括処理より安くなるケースもある。

5. セッション時間を管理する

WebSocket接続は開いている間ずっとリソースを消費する。用件が済んだらセッションを明示的にクローズする。タイムアウトの設定(例: 無音が60秒続いたら切断)も有効だ。

# コスト最適化の設定例
{
  "type": "session.update",
  "session": {
    "instructions": "回答は3文以内で簡潔に。不明点は確認してから回答する。",
    "turn_detection": {
      "type": "server_vad",
      "threshold": 0.6,
      "silence_duration_ms": 800
    },
    "max_response_output_tokens": 500
  }
}

コスト削減の実感値

上記5つの手法を組み合わせると、素の状態と比べて40-60%のコスト削減が見込める。プロンプトキャッシュだけでも20-30%は下がるので、OpenAI Voice APIを本番投入する前に最初に試す価値がある。

よくある質問

Q. GPT-Realtime-2は日本語に対応していますか?

対応している。音声入力・音声出力ともに日本語で動作する。instructionsを日本語で書けば、日本語で応答する。

Q. 無料で試せますか?

OpenAI PlatformのPlaygroundでRealtime APIを試用できる。APIキーさえあれば、コードを書かずにブラウザ上で音声会話のテストが可能だ。ただし従量課金なので、テスト時もトークン消費は発生する。

Q. WebRTCとWebSocketの違いは?

WebRTCはブラウザ↔サーバー間の低レイテンシ接続に向いている。エンドユーザーがブラウザから直接音声入力する場合はWebRTC。サーバー間連携(TwilioやSIPとの中継)ではWebSocketを使う。どちらもRealtime APIが対応している。

Q. 競合サービスと比べてどうですか?

Google CloudのSpeech-to-Text/Text-to-SpeechやAWS Transcribeと比較すると、GPT-Realtime-2はトークン単価が高い。一方でツール呼び出し・推論・音声応答を1つのモデルで完結させる点は他にない。単純な文字起こしだけならGoogle/AWSのほうが安い。会話型エージェントを作るならGPT-Realtime-2の一択に近い。

Q. SIP接続は可能ですか?

2026年5月時点で、SIP(Session Initiation Protocol)経由の接続にも対応している。既存のPBX(電話交換機)や企業電話システムとダイレクトに統合できる。TwilioのようなCPaaS(Communications Platform as a Service)を挟まなくても電話回線とつなげるのは、エンタープライズ向けの大きなメリットだ。

まとめ

OpenAI Voice APIの3モデル — GPT-Realtime-2、Realtime-Translate、Realtime-Whisper — は、音声AIの開発体験を一段引き上げた。特にGPT-Realtime-2のツール呼び出し対応は、テキストエージェントの音声化という新しいユースケースを開いている。

GPT-Realtime-2は$0.18〜$0.46/分。月1,000件・平均5分の通話で$900〜$2,300。コールセンターのオペレーター1人の月人件費が30〜50万円なら、コストを1/10以下に落とせる。Realtime-Translate($0.034/分)とRealtime-Whisper($0.017/分)は分単価課金で見積もりが立てやすい。

自分がいま音声エージェントを作るなら、まずOpenAI PlatformのPlaygroundで10分ほど試して感触を掴む。その後、OpenAI Agents SDKのVoicePipelineで最小構成のプロトタイプを作り、ツール呼び出しの精度を検証する。本番投入の前にプロンプトキャッシュとVAD閾値の調整を入れる — この順序が最も効率がいい。

音声AIの進化速度は速い。半年後にはOpenAI Voice APIの料金も変わっている。それでもいま始めておくことに意味がある。2026年後半には競合のGemini Live APIやClaude Voice(仮)が出そろう。先行者が押さえられる顧客接点は、今のほうが大きい。