🎁 新用戶 免費註冊,送 10 次呼叫,最高 $1,免綁卡。

即時語音

gpt-realtime 建構雙向語音代理——模型即時聆聽語音並即時以語音回覆(就像打電話一樣),透過 WebSocket 連接到 /v1/realtime。你現有的 OpenAI Realtime SDK 無需改動即可繼續使用;只需將它指向我們的端點,並使用你的 Synthorai key。

語音轉語音,而非轉寫
本頁介紹語音轉語音:語音進、語音出。用 ?model=gpt-realtime 連接。
如果你只需要把音訊轉成文字(不需要語音回覆),請改用 語音轉文字——那是另一種能力。

端點與驗證

在查詢字串裡帶上模型,向 /v1/realtime 打開一個 WebSocket。驗證在升級之前完成,因此被拒絕的 key 根本不會打開 socket。

# WebSocket, server-side (Node / Python / Go — anything that can set headers)
GET wss://synthorai.io/v1/realtime?model=gpt-realtime
Authorization: Bearer $YOUR_KEY
# Send only the Authorization header. Do NOT send OpenAI-Beta: realtime=v1
# (the beta protocol is retired; it makes the upstream reject the session).
  • 你的 sk-syn key 永遠不會離開我們的閘道——上游憑證在我們這一側被替換進去。
  • 伺服器端用戶端設計(Node、Python、Go——任何能設定 Authorization 標頭的語言)。不支援瀏覽器端的臨時 token。
  • 僅支援 WebSocket。SIP(電話)和 WebRTC 會把用戶端直接連到上游,不做代理——請改為把電話音訊橋接進 WebSocket。

設定工作階段

連接打開後,你會收到 session.created。發送一個 session.update 來設定音色、模態、音訊格式和輪次偵測。請使用 GA 版結構(session.type: "realtime",音訊放在 audio.input / audio.output 下)——舊的扁平 beta 結構已淘汰。

{
  "type": "session.update",
  "session": {
    "type": "realtime",
    "output_modalities": ["audio"],
    "instructions": "You are a concise customer-support agent.",
    "audio": {
      "input":  { "format": { "type": "audio/pcm", "rate": 24000 },
                  "turn_detection": { "type": "server_vad" } },
      "output": { "format": { "type": "audio/pcm", "rate": 24000 } }
    }
  }
}

一個最小的對話輪次:

  1. input_audio_buffer.append 串流傳送麥克風音訊(base64 PCM)。
  2. input_audio_buffer.commit 提交這一輪,然後發送 response.create
  3. 接收音訊增量(response.output_audio.delta)和文字轉錄,然後是帶用量的 response.done
  4. 啟用 server VAD 後,模型會自動為你偵測輪次;相同的事件照常流動,無需手動 commit。

工具、函式呼叫與知識

session.update 裡宣告函式。模型會在對話中途呼叫它們——這就是你接入訂單查詢、工單系統或任何業務系統的方式。回傳結果後,模型會帶著它繼續說話:

// 1. Declare tools in session.update: "tools": [{ "type": "function", ... }]
// 2. The model emits a function_call in response.done.
// 3. Return the result, then ask the model to continue:
{ "type": "conversation.item.create",
  "item": { "type": "function_call_output",
            "call_id": "call_abc",
            "output": "{\"status\":\"shipped\"}" } }
{ "type": "response.create" }

也支援遠端 MCP 伺服器("type": "mcp")——上游會直接連接到 MCP 伺服器。對於知識庫,可以透過 instructions、由你的 RAG 支撐的函式工具,或 MCP 來注入事實;模型自帶的知識並不是業務事實的可靠來源。

計費

按每次 response.done 的用量以官方刊例價計費(不加價)——音訊與文字、輸入與輸出,並帶快取輸入價。每個工作階段在結束時寫入一行台帳記錄。

類型輸入 / 1M tokens輸出 / 1M tokens
音訊$32 / 1M$64 / 1M
文字$4 / 1M$16 / 1M
快取輸入$0.40 / 1M

所示價格適用於 gpt-realtime / gpt-realtime-2.1;gpt-realtime-2.1-mini 大約是其三分之一。音訊輸入 ~10 tokens/second,輸出 ~20 tokens/second。把對話歷史保持為只追加(append-only),就能讓快取價($0.40/1M)吸收長通話的大部分成本。

工作階段時長與熱切換

!

單個 Realtime 工作階段最長 60 minutes——這是 OpenAI 平台的限制,不是我們的。到達上限時,上游會關閉連接。

  • 對可能較長的通話,請在遠早於上限時熱切換(例如在 50 minutes 時):開啟一個新工作階段,並用 conversation.item.create 以文字形式重放對話(使用者用 input_text,助手用 output_text——助手的音訊無法重放)。
  • 沒有工作階段恢復機制:如果 WebSocket 斷開,上游狀態就會遺失。重連走的是同一條文字重放路徑,所以請從第一天就把重連能力做進去。
  • gpt-realtime-2.1 / -mini 的上下文為 128K(≈3.5 hours 的輸入音訊);舊版 gpt-realtime 是 32K——不要用它做長通話。

使用權限

gpt-realtime 處於邀請制內測階段。它會出現在模型目錄和價格中,但要使用它,需要你的工作空間獲得授權——請聯繫我們開通。