OpenAI Realtime API入門:リアルタイム音声AIアプリの作り方

音声で質問すると即座に声で返答する——まるで電話のようなAI体験を可能にするのがRealtime APIです。リアルタイム音声AIアプリの作り方を解説します。

AI初心者

AIを知りたい

OpenAIのRealtime APIって何ですか?

AIエンジニア

AIエンジニア

Realtime APIはリアルタイムの音声会話を実現するAPIです。WebSocketを使って音声の入出力をリアルタイムで処理できます。

AI初心者

AIを知りたい

音声AIアシスタントが作れるってことですか?

AIエンジニア

AIエンジニア

その通りです!音声認識→AI処理→音声合成をすべてリアルタイムで行えます。遅延も非常に少ないです。

Realtime APIとは

OpenAI Realtime APIとは、WebSocket接続を通じてリアルタイムの音声会話を実現するAPIです。従来の「音声→テキスト→AI→テキスト→音声」のパイプラインを統合し、低遅延の自然な音声対話を可能にします。

Realtime APIの特徴

AI初心者

AIを知りたい

従来の音声AIとの違いは何ですか?

AIエンジニア

AIエンジニア

大きな違いを比較してみましょう。

項目 従来の方法 Realtime API
処理フロー STT→LLM→TTS(3段階) エンドツーエンド(1段階)
遅延 2-5秒 300ms以下
感情表現 テキスト経由で失われる 音声のニュアンスを保持
割り込み 困難 自然な割り込み対応
接続方式 REST API WebSocket

Realtime APIの基本実装

AI初心者

AIを知りたい

実装方法を教えてください!

AIエンジニア

AIエンジニア

JavaScriptでのWebSocket接続の例です。

// WebSocket接続
const ws = new WebSocket(
  "wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview",
  { headers: { "Authorization": `Bearer ${API_KEY}` } }
);

// セッション設定
ws.on("open", () => {
  ws.send(JSON.stringify({
    type: "session.update",
    session: {
      modalities: ["text", "audio"],
      voice: "alloy",
      instructions: "あなたは親切な日本語アシスタントです。",
      turn_detection: { type: "server_vad" }
    }
  }));
});

// 音声データの送信
function sendAudio(audioData) {
  ws.send(JSON.stringify({
    type: "input_audio_buffer.append",
    audio: base64Encode(audioData)
  }));
}

// レスポンスの受信
ws.on("message", (data) => {
  const event = JSON.parse(data);
  if (event.type === "response.audio.delta") {
    playAudio(base64Decode(event.delta));
  }
});

Realtime APIの活用シーン

AI初心者

AIを知りたい

どんなアプリケーションに使えますか?

AIエンジニア

AIエンジニア

さまざまなリアルタイム音声アプリに応用できます。

活用シーン 説明 メリット
カスタマーサポート AIによる電話対応 24時間対応可能
語学学習 AIとの会話練習 ネイティブレベルの発音
音声アシスタント スマートホーム操作 自然な対話体験
面接練習 模擬面接AI フィードバック付き
通訳 リアルタイム翻訳 低遅延で自然

料金

AI初心者

AIを知りたい

料金はどうなってますか?

AIエンジニア

AIエンジニア

通常のAPIより割高ですが、統合ソリューションとして見ればコスパは良いです。

項目 料金
音声入力 $100/百万トークン
音声出力 $200/百万トークン
テキスト入力 $5/百万トークン
テキスト出力 $20/百万トークン

AI初心者

AIを知りたい

音声AIって面白そうですね!

AIエンジニア

AIエンジニア

Realtime APIは次世代のユーザーインターフェースです。テキストだけでなく音声で自然に対話できるアプリケーションの可能性は無限大ですよ!

関連記事

OpenAI Realtime APIに関するよくある質問(FAQ)

Q1. Realtime APIとWebSocketはどういう関係ですか?

Realtime APIはWebSocketプロトコルを通信基盤として使用しています。クライアントはWebSocket接続を確立し、JSON形式のイベント(セッション設定、音声データ送信、テキスト入力など)をやり取りします。従来のREST APIとは異なり、接続が維持されている間はリアルタイムに双方向通信が可能です。ただし、WebSocketの低レベル処理を直接扱う必要はなく、OpenAIが提供するSDKやリファレンスクライアントを使えば、イベントの送受信を抽象化したインターフェースで開発できます。

Q2. 音声の品質はどの程度ですか?

Realtime APIはGPT-4oのネイティブ音声モデルを使用しており、音声→テキスト→テキスト→音声という中間変換を経ないため、イントネーション・感情・テンポを含んだ自然な音声を生成します。入力音声は16kHz/24kHz PCM16またはG.711に対応し、出力音声も同等品質です。複数の音声プリセット(alloy, echo, shimmer等)から選択可能で、用途に応じたトーンを設定できます。レイテンシは数百ミリ秒程度で、人間同士の会話に近いリアルタイム性を実現しています。

Q3. 料金体系はどうなっていますか?

Realtime APIはテキストと音声で別々の料金が設定されています。テキスト入力/出力は通常のGPT-4o料金と同等です。音声については、音声入力(ユーザーの発話)と音声出力(AIの発話)でそれぞれトークン単価が設定されており、音声は1秒あたり約50トークンに相当します。従来の「音声認識API + ChatCompletion API + 音声合成API」を3つ組み合わせるよりも、統合されたRealtime APIの方がトータルコストが安くなるケースが多いです。ただし、接続を長時間維持する場合はセッション単位のコストにも注意が必要です。

Q4. 対応言語は何ですか?

Realtime APIの音声入出力は、GPT-4oが対応する主要言語をサポートしています。英語・日本語・中国語・フランス語・ドイツ語・スペイン語・韓国語など多数の言語で利用可能です。言語間のリアルタイム翻訳(例:日本語で話しかけて英語で応答させる)もシステムプロンプトで指定することで実現できます。ただし、英語以外の言語では音声認識精度や合成音声の自然さに若干の差があり、言語によってはテキストモードの方が安定する場合もあります。

Q5. 通常のChat Completions APIとどう使い分けるべきですか?

Realtime APIは「音声ベースの対話インターフェース」が必要な場合に選択してください。具体的には、音声アシスタント、コールセンター自動応答、リアルタイム通訳、音声対話型教育ツールなどが典型的なユースケースです。一方、テキストベースのチャットボット、バッチ処理、APIバックエンド連携など音声が不要な場面では、従来のChat Completions APIの方がシンプルで低コストです。また、Realtime APIはWebSocket常時接続のためサーバー側の接続管理が必要になる点も考慮してください。「ユーザーが声で話しかけるUI」があるかどうかが判断の分水嶺です。