OpenAI 於 2026 年 7 月 28 日正式釋出兩款語音轉寫模型:gpt-transcribe 和 gpt-live-transcribe。兩者都是 Audio API 與 Realtime 轉寫體系的一部分,但解決的問題不同。
gpt-transcribe:處理完成的音訊檔案,或轉寫 Realtime 中已經提交的完整語音片段。gpt-live-transcribe:持續接收現場音訊,並儘快返回增量文字。
它們都支援自由格式上下文、關鍵詞提示和多個預期輸入語言,適合會議記錄、客服通話、直播字幕、語音檢索和多語言錄音整理。
先按音訊到達方式選模型
| 需求 | 推薦模型 | 接入方式 |
|---|---|---|
| 上傳已經錄好的音訊 | gpt-transcribe |
/v1/audio/transcriptions |
| 處理有限長度的音訊請求 | gpt-transcribe |
Transcriptions API |
| 檔案處理過程中逐段返回文字 | gpt-transcribe |
檔案轉寫並啟用串流輸出 |
| 提交一個 Realtime 語音片段後再轉寫 | gpt-transcribe |
Realtime transcription |
| 麥克風或電話音訊即時顯示字幕 | gpt-live-transcribe |
Realtime API |
| 持久連線中持續接收文字增量 | gpt-live-transcribe |
WebSocket 或 WebRTC |
最容易混淆的是“串流”一詞。已經錄好的檔案也能在處理過程中串流返回部分文字,但音訊本身已經完整存在,不需要建立 Realtime 會話。只有音訊仍在從麥克風、電話或媒體流不斷到達時,才需要 gpt-live-transcribe 和持久即時連線。
兩個模型的能力差異
| 能力 | gpt-transcribe |
gpt-live-transcribe |
|---|---|---|
| 輸入模態 | 音訊、文字上下文 | 音訊、文字上下文 |
| 輸出模態 | 文字 | 文字 |
| 檔案轉寫端點 | 支援 | 不支援 |
| Realtime 轉寫 | 支援已提交片段 | 支援即時增量 |
| 輸出增量文字 | 支援 | 支援 |
| 偵測輸入語言 | 支援 | 不返回語言預測 |
| 延遲檔位調節 | 不適用 | 支援 |
| 單詞級時間戳 | 不支援 | 不支援 |
| 說話人標籤 | 不支援 | 不支援 |
| 轉寫置信度 | 不支援 | 不支援 |
如果業務必須拿到單詞時間戳、SRT 或 VTT,官方轉寫指南仍建議使用 whisper-1。需要說話人標籤時,應使用檔案轉寫模型 gpt-4o-transcribe-diarize,而不是要求這兩個模型猜測發言人。
準備 SDK 與 API Key
安裝或更新 Python SDK:
|
|
設定 API Key:
|
|
不要把 API Key 寫進指令碼、前端程式碼或 Git 倉庫。瀏覽器透過 WebRTC 使用 Realtime API 時,應由後端建立短期客戶端憑據,而不是把長期服務端金鑰發給瀏覽器。
用 GPT Transcribe 轉寫音訊檔案
檔案轉寫呼叫 /v1/audio/transcriptions。下面是官方 Python SDK 的基本寫法:
|
|
對應的 cURL 請求如下:
|
|
檔案轉寫指南列出的常用格式包括:
mp3mp4mpegmpgam4awavwebm
單個檔案上限為 25 MB。更大的錄音要先壓縮或切分,每段保持在 25 MB 以內。切分時儘量選擇停頓或句子邊界,不要在一個人名、編號或完整句子中間截斷,否則相鄰片段會丟失語義上下文。
用上下文提高專業詞識別率
兩個新模型都接受三類轉寫上下文:
prompt:描述錄音主題、場景或背景。keywords:可能在音訊中出現的產品名、縮寫和專有詞。languages:預期出現的一個或多個輸入語言。
檔案轉寫示例:
|
|
prompt 應提供與錄音相關的資訊,不需要重複“請把音訊轉成文字”這類任務說明。keywords 只是提示,不是模型必須輸出的詞表。如果音訊裡沒有某個關鍵詞,轉寫結果也不應該憑空加入它。關鍵詞過多或與內容無關,可能誘發未說出口的詞出現在結果裡。上線前應比較有無關鍵詞時的真實錯誤率。
languages 與舊 language 參數不同
gpt-transcribe 和 gpt-live-transcribe使用複數參數 languages,不要同時傳送舊的單數 language。官方支援的語言程式碼形式包括:
- ISO 639-1,例如
en、es、fr。 - 部分 ISO 639-3,例如
eng、spa、yue、cmn。 - 中文區域程式碼,例如
zh-cn、zh-tw、zh-hk。
不受支援或格式錯誤的語言程式碼會被 API 拒絕。多語言通話可以提供多個候選語言,但不要把完全不相關的語言全部塞進請求。關鍵詞必須保持一行一個值,不能包含 <、>、回車或換行字元。遇到這些字元時,檔案請求或 Realtime 會話更新會被整體拒絕。
建立 GPT Live Transcribe 會話
即時轉寫會話的類型是 transcription。服務端音訊管道通常使用 WebSocket,瀏覽器麥克風場景通常使用 WebRTC。下面的 session.update 使用 24 kHz PCM 音訊,並關閉自動語音輪次偵測:
|
|
關閉自動輪次偵測後,應用需要自己決定什麼時候結束一個語音片段。音訊資料用 Base64 編碼後追加:
|
|
片段結束時顯式提交:
|
|
也可以配置服務端 VAD,讓系統偵測說話開始與結束並自動提交輪次。
處理增量文字和最終結果
gpt-live-transcribe 會先傳送增量事件,再傳送該語音輪次的完整結果。
|
|
介面不能把每個 delta 都當成永久文字。後續增量或最終結果可能修正先前內容,應設計可更新的字幕緩衝區。
不同語音輪次的完成事件不保證按提交順序到達。必須使用 item_id 將 delta、最終文字和原始音訊片段關聯,不能只依賴 WebSocket 訊息到達時間排序。
調整即時轉寫延遲
gpt-live-transcribe 允許用 delay 調整延遲與準確率:
| 檔位 | 適合場景 |
|---|---|
minimal |
極度重視立即顯示的互動 |
low |
低延遲直播字幕 |
medium |
延遲與準確率平衡 |
high |
可以等待更多上下文的高準確率任務 |
xhigh |
能接受最大等待時間以換取更多上下文 |
檔位不對應固定毫秒數。實際延遲會隨模型配置、音訊和網路變化,不能把某個測試結果寫死成服務承諾。
更低延遲會更早展示部分文字,更高延遲讓模型在輸出前聽到更多上下文,通常有利於降低詞錯誤率。
提交後再轉寫的 Realtime 模式
如果應用已經使用 Realtime WebSocket,但不需要邊說邊顯示文字,可以在會話中選擇 gpt-transcribe。
|
|
應用先追加音訊,再傳送 input_audio_buffer.commit。模型可在最終完成事件前發出文字增量,完成事件還會包含偵測到的語言。
如果無法可靠判斷語言,languages 會是空陣列。gpt-live-transcribe 不提供這項偵測語言結果。
在專用轉寫會話或 Realtime 輸入轉寫中,gpt-transcribe 會自動把之前已經轉寫的輪次作為上下文,有利於保持連續對話中的術語一致性。
生產環境怎麼測試
不要只拿安靜房間裡的標準普通話樣本驗收。測試集應覆蓋真實使用條件:
- 目標語言、口音和中途切換語言的情況。
- 電話窄帶音訊、不同麥克風和背景噪聲。
- 人名、日期、金額、郵箱、訂單號與字母數字串。
- 產品名、藥品名、縮寫和行業術語。
- 極短回答、長錄音、搶話和中斷。
- 網路抖動、連線重建與重複提交。
除了整體詞錯誤率,還要統計對業務真正重要的錯誤。客服系統應單獨評估訂單號和賬戶號,醫療場景應單獨評估藥品名和劑量。
即時介面還應記錄:
- 首個 delta 到達延遲。
- 最終結果完成延遲。
- 空轉寫、截斷和長時間無結果。
- delta 被最終文字修正的比例。
- 不同
delay檔位下的準確率差異。
常見問題
檔案轉寫的 stream 等於 Realtime 嗎?
不等於。檔案可以在處理期間串流返回文字,但輸入音訊已經完整上傳;Realtime 用於仍在持續到達的現場音訊。
兩個模型能生成字幕時間軸嗎?
它們不提供單詞級時間戳。需要單詞或分段時間戳、SRT、VTT 時,應根據官方指南選擇 whisper-1。
GPT Live Transcribe 能區分說話人嗎?
不能返回說話人標籤。需要說話人分離時,應使用相容的檔案轉寫模型或應用級後處理方案。
keywords 越多越好嗎?
不是。關鍵詞只是識別提示,無關詞過多可能增加未說詞語被寫入結果的風險。
多語言錄音應該使用 language 還是 languages?
這兩個新模型使用 languages。不要同時傳送 language 和 languages。
總結
gpt-transcribe 適合已經完成的檔案、有限音訊請求,以及 Realtime 中提交後再處理的完整語音輪次。
gpt-live-transcribe 適合麥克風、電話和直播音訊,能持續返回低延遲文字增量,並透過 delay 調節速度與準確率。
無論選擇哪一個,都應把 prompt、keywords 和 languages當成需要透過真實音訊評測的提示,而不是保證特定文字一定出現的硬約束。