OpenAI API 語音轉文字和文字轉語音怎麼調:gpt-transcribe 轉寫、25 MB 限制,以及多個語音模型的停服日期

用 OpenAI API 把錄音轉成文字,官方現在推薦 gpt-transcribe;文字轉語音的 speech 接口則已被官方標為棄用。本文給 Python 和 Node 示例,講格式、25 MB 限制、prompt 與 keywords,並寫明官方公佈的停服日期。

NNathaniel bigo··原創首發·AI 輔助撰寫
9 分鐘讀完
資料核對於 2026-11-05 · 依據官方文檔與公開資料整理 其他 帳號
本文根據 OpenAI 官方《File transcription》和《Text to speech》整理,資料核對於 2026-11-05。配圖為本站整理的示意圖,不是介面截圖。代碼裏的模型名取自官方當天頁面,請以官方模型頁為準。本站(bigolab.com)不是 OpenAI 官方網站。API 是按用量計費的獨立服務,與 ChatGPT 訂閱分開計算,Key 的獲取見 /guides/openai-api-key。

適用於誰

  • 想把會議錄音、訪談、課程音頻轉成文字的開發者;
  • 想給自己的應用加朗讀功能,又看到網上教學裏的 tts-1、whisper-1 不知道還能不能用的人;
  • 已經能發出第一個請求(見 /guides/openai-api-python-quickstart)的人。

結論先說

  1. 語音轉文字:官方現在推薦用 gpt-transcribe 轉寫已經錄好的語音,端點是 /v1/audio/transcriptions。
  2. 舊模型在走向停服:whisper-1、gpt-4o-transcribe、gpt-4o-mini-transcribe、gpt-4o-transcribe-diarize 和 /v1/audio/translations 官方標為棄用,將在 2027 年 2 月 26 日停止服務。
  3. 文字轉語音:tts-1、tts-1-hd、gpt-4o-mini-tts 同樣已棄用,將在 2027 年 1 月 6 日停止服務,官方指向 Realtime API。
  4. 文件上限 25 MB,支持 mp3、mp4、mpeg、mpga、m4a、wav、webm。
  5. 以上日期和推薦都以官方當天頁面為準,這類接口變化比較快,寫代碼前先看一眼官方棄用公告。

語音接口的模型現狀:轉寫推薦 gpt-transcribe,舊模型與 TTS 模型有停服日期

圖:本站根據 OpenAI 官方《File transcription》 和 《Text to speech》 整理的示意圖

一、語音轉文字:最短的例子

Python:

python
from openai import OpenAI

client = OpenAI()

with open("audio.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",  # 以官方模型頁當天為準
        file=audio_file,
    )

print(transcription.text)

Node.js(儲存為 .mjs):

javascript
import fs from "fs";
import OpenAI from "openai";

const openai = new OpenAI();

const transcription = await openai.audio.transcriptions.create({
  file: fs.createReadStream("audio.wav"),
  model: "gpt-transcribe", // 以官方模型頁當天為準
});

console.log(transcription.text);

官方說,返回的 JSON 裏有轉寫文本,也有檢測到的語言,比如:

json
{
  "text": "Bonjour, pouvez-vous m'entendre ?",
  "languages": [{ "code": "fr" }]
}

當模型無法可靠判斷語言時,會返回 "languages": []。

二、讓專有名詞更準:prompt、keywords、languages

官方給 gpt-transcribe 提供了三個輔助資訊:

  • prompt:關於這段錄音的非結構化背景,比如“一通關於高級套餐和帳號 AC-42 的客服電話”;
  • keywords:你預期會聽到的字面詞;
  • languages:預期的輸入語言。

Python 示例(官方寫法,keywords 和 languages 通過 extra_body 傳):

python
with open("meeting.wav", "rb") as audio_file:
    transcription = client.audio.transcriptions.create(
        model="gpt-transcribe",
        file=audio_file,
        prompt="一通關於高級套餐和帳號 AC-42 的客服電話。",
        extra_body={
            "keywords": ["高級套餐", "AC-42", "帳單"],
            "languages": ["zh-cn", "en"],
        },
    )
print(transcription.text)

注意幾條官方規則:

  • 關鍵詞只是提示,不是必須出現的輸出。只放相關的詞,並自己評估它們有沒有讓準確度變好,同時沒有讓沒說過的詞冒出來;
  • 對 gpt-transcribe,languages(複數)取代舊的 language,兩個不要同時發;
  • 每個關鍵詞必須單獨一行,不能含 <、>、回車或換行;
  • 只要觸犯上面的字符規則,或者 prompt 超過模型的長度限制,整個請求會被拒絕;
  • languages 的格式:ISO 639-1 代碼(如 en、es、fr)、部分 ISO 639-3 代碼(如 yue、cmn),以及地區性的中文代碼(如 zh-cn、zh-tw、zh-hk);不支持或格式錯的代碼會被拒絕。示例裏的 zh-cn 取自官方列出的格式,具體哪些代碼可用以官方當天文檔為準。

語音轉文字遇到問題怎麼辦:文件過大、格式、專有名詞、請求被拒、實時音頻

圖:本站根據 OpenAI 官方《File transcription》 整理的示意圖,處理辦法為本站補充

三、文件超過 25 MB 怎麼辦

官方說:轉寫接口接受最大 25 MB 的文件。更大的錄音,用壓縮格式,或者切成每塊不超過 25 MB 的片段。不要在一句話中間切開,那樣會丟失上下文、降低準確度。官方示例用的是開源 Python 包 PyDub 來切分(官方註明不對第三方軟件的可用性和安全性做保證):

python
from pydub import AudioSegment

song = AudioSegment.from_wav("good_morning.wav")
ten_minutes = 10 * 60 * 1000          # PyDub 以毫秒計時
first_10_minutes = song[:ten_minutes]
first_10_minutes.export("good_morning_10.wav", format="wav")

分段轉寫後,如果想讓後一段延續前一段的上下文,官方在提示詞一節說過可以把上一段的內容作為背景使用,具體做法以官方當天文檔為準。

四、邊轉寫邊出文字

官方說,對已經錄好的文件也可以流式返回:設 stream=True,會先收到一串 transcript.text.delta 事件,最後收到包含完整文本的 transcript.text.done 事件,對 gpt-transcribe,最終事件裏還會帶檢測到的語言。事件循環的寫法和文字流式一樣,見 /guides/openai-api-streaming。

麥克風、通話這種還在持續到來的音頻,官方明確說要用 Realtime transcription,而不是上面的文件流式。Realtime 的概念見 /guides/openai-api-realtime。

五、文字轉語音:官方已標為棄用

官方 Text to speech 頁頂部的提示:tts-1、tts-1-hd、gpt-4o-mini-tts 已棄用,2027 年 1 月 6 日停止服務;請遷移到 Realtime API 裏的 gpt-realtime-2.1-mini。官方強調,這是 API 工作流的變化,gpt-realtime-2.1-mini 不是 /v1/audio/speech 支持的模型,不能只改個模型名。現有集成在停服前仍可使用下面的 speech 接口。

官方頁上仍保留的現有寫法(Python):

python
from pathlib import Path
from openai import OpenAI

client = OpenAI()
speech_file_path = Path("speech.mp3")

with client.audio.speech.with_streaming_response.create(
    model="gpt-4o-mini-tts",   # 已棄用,僅供現有集成參考
    voice="coral",
    input="今天是做點大家喜歡的東西的好日子。",
    instructions="用愉快積極的語氣說。",
) as response:
    response.stream_to_file(speech_file_path)

官方對這個接口的說明:預設輸出 MP3,也支持 opus、aac、flac、wav、pcm;聲音(voice)有 13 種,官方說目前針對英語優化,也能生成其他語言;追求最快響應推薦 wav 或 pcm 格式。

還有一條使用政策:官方使用政策要求你向終端用戶明確披露,他們聽到的 TTS 聲音是 AI 生成的,而不是真人。

新項目如果需要語音輸出,本文不給出自寫的替代方案,因為官方的替代方向走 Realtime,工作流不同,請直接看官方 Realtime 指南。

六、翻譯接口

/v1/audio/translations(把錄音翻譯成英文)已棄用,到 2027 年 2 月 26 日停止服務。官方說遷移目標是 Realtime translation,而且它需要翻譯會話、流式音頻輸入和翻譯事件,只改模型名並不等於遷移完成。

常見問題

Q:我看到的教學裏用 whisper-1,還能用嗎?

官方寫的是棄用、將在 2027 年 2 月 26 日停止服務,停服前現有集成仍可使用。新項目建議從 gpt-transcribe 開始。

Q:需要說話人區分、逐詞時間戳、字幕格式怎麼辦?

官方說這些專門示例目前用的是棄用模型,僅為現有集成保留到停服。需要時按官方當天的轉寫工作流頁面選擇當前方案。

Q:轉寫要花多少錢?

價格以官方價格頁當天為準,見 /guides/openai-api-price-official-table。

參考資料

  • OpenAI 官方:File transcription — https://developers.openai.com/api/docs/guides/speech-to-text
  • OpenAI 官方:Text to speech — https://developers.openai.com/api/docs/guides/text-to-speech

Nathaniel 的更多內容

  1. 01

    Claude Code 在 Windows 上的常見坑:Git Bash 還是 PowerShell、路徑反斜槓、假報錯、WSL 怎麼選

    Windows 上用 Claude Code,裝好之後最容易踩的是:用哪個 shell、路徑寫法不一致、grep 沒匹配就報錯、鉤子沒生效、WSL 和原生怎麼選。本文逐條按官方文檔整理原因和處理辦法,附三段提示詞和一張對照表。

    Claude0
  2. 02

    Claude Code Hooks 實戰「提交前自動跑測試」:PreToolUse 攔住 git commit,測試不過就退出碼 2,附 Windows 注意點

    只寫一個完整例子:讓 Claude Code 每次要執行 git commit 之前,先自動跑項目測試,沒通過就攔下並把輸出交給它修。本文按官方 Hooks 文檔給出腳本、settings.json 配置、測試方法、排錯和 Windows 的兩處坑。

    Claude0
  3. 03

    Claude Code 自定義斜槓命令與 Skill 實戰:從零寫一個「生成更新日誌」的 /release-notes,含傳參、預執行命令和調試

    概念看過了,還是不知道從哪下手?本文按 Claude Code 官方「Extend Claude with skills」寫一個完整可用的例子:用 /release-notes 根據 git 記錄生成更新日誌,覆蓋目錄、frontmatter、傳參、預執行命令、預授權和調試。

    Claude0
  4. 04

    Claude Code 部署網站:先寫 Dockerfile 和 compose 在本機跑通,再按清單上雲伺服器,別讓它直接改線上

    想讓 Claude Code 幫你把網站部署到雲伺服器。本文只寫通用做法,按 Docker 官方文檔講:讓它寫 Dockerfile、.dockerignore 和 compose,在本機跑通,端口和數據卷怎麼設,再給出上線清單,並說明為什麼不要讓它直接動線上機器。

    Claude0
  5. 05

    Claude Code 寫爬蟲與數據清洗:先查 robots.txt 和網站條款,控制頻率,原始數據留一份再清洗

    想讓 Claude Code 寫爬蟲抓數據再清洗。本文先講合規:robots.txt 不是授權也不是安全措施、網站條款要自己讀;再講怎麼用 Python 標準庫檢查規則、小樣本先試、儲存原始數據,以及用 pandas 清洗,附四段提示詞。

    Claude0
  6. 06

    Claude Code 寫 Chrome 擴展:按 Manifest V3 起步,加載未打包的擴展,改了哪些文件要重新加載

    想讓 Claude Code 幫你寫一個 Chrome 擴展。本文按 Chrome 官方擴展文檔講:manifest.json 的最小寫法、在 chrome://extensions 加載未打包的擴展、哪些改動要刷新、怎麼看控制檯和報錯,再給四段提示詞,以及權限要盡量少。

    Claude0

同產品的其他教學

  1. 01

    OpenAI API 的 token 怎麼算、怎麼估算費用:input_tokens 計數接口、tiktoken 和隱藏的輸出 token

    發請求前想知道會用多少 token?官方有 Responses 的 input_tokens 計數接口,能把文字、圖片、文件、工具定義一起算準;本地 tiktoken 只適合純文本。本文給 Python 和 Node 示例,講輸出 token 為什麼可能比看到的多,以及怎麼估算費用。

    ChatGPT0
  2. 02

    OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一個請求,到流式、函數調用、聯網搜尋

    用 Node.js 調 OpenAI API:設定 OPENAI_API_KEY 環境變量,npm install openai,新建 example.mjs,用 client.responses.create 發出第一個請求。並列出圖片、文件、流式、函數調用、聯網搜尋和錯誤捕獲的 Node 寫法。

    ChatGPT0
  3. 03

    OpenAI API 用量層級(usage tiers)與速率限制怎麼提升:Free、Build、Launch、Grow 和後台 Limits 頁

    OpenAI API 的限速不是固定的:官方按累計購買額度把組織分成 Free、Build、Launch、Grow 四個層級,達到門檻自動升級。本文講 RPM、TPM 等指標、怎麼在後台查自己的限額、響應頭怎麼讀、花費上限和限速的區別,以及怎麼讓限額變得夠用。

    ChatGPT0
  4. 04

    OpenAI API 報錯 400、401、403、404、429、500、503 怎麼排查:按官方錯誤碼頁逐個看原因和解決辦法

    調用 OpenAI API 返回 400、401、403、404、429、500、503,各自什麼意思?本文按官方 Error codes 頁,每個狀態碼一節,寫清官方給的原因和解決辦法,並說明 404 在官方頁面裏的位置、429 的六種情形,附 Python 和 Node 的錯誤捕獲寫法。

    ChatGPT0
  5. 05

    OpenAI Realtime API 是什麼:語音到語音會話、WebRTC 與 WebSocket、臨時密鑰和事件機制

    Realtime API 讓模型直接處理音頻,做可以隨時打斷的語音助手。本文按官方文檔講它是什麼、什麼時候用、瀏覽器接入的流程、session 與事件、可用聲音、60 分鐘會話上限、安全標識,以及它和轉寫、文字轉語音的分工。

    ChatGPT0
  6. 06

    OpenAI 圖像生成 API 怎麼用:gpt-image 系列、images.generate 與 Responses 工具、尺寸質素和遮罩編輯

    用 OpenAI API 生成或編輯圖片,有 Image API 和 Responses 裏的 image_generation 工具兩條路。本文按官方文檔給 Python 和 Node 示例,講 gpt-image 模型選擇、尺寸質素格式參數、遮罩編輯、被攔截時的錯誤處理,以及需要組織驗證的提醒。

    ChatGPT0

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~