繁中 ▾
取得 API 金鑰

Whisper API 伺服器:設定選項與文字處理步驟

Whisper API 伺服器是一個 HTTP 服務,接受音訊並返回轉錄結果。它僅處理語音,因此後續對文字的任何處理都需要單獨的文字模型。

更新於

音訊從伺服器流向一疊整潔文字行的等距插圖

重點摘要

  • Whisper 是語音轉文字模型;伺服器將其封裝在 HTTP 端點後方。
  • 您可以租用託管端點、自行託管封裝程式,或執行本機二進位檔。
  • 此 API 僅處理文字:它執行轉錄後的步驟,而非音訊步驟。
  • 這兩階段透過 Python 程式碼兩次呼叫 OpenAI SDK 來連接。

簡短答案

Whisper 是 OpenAI 發布的開源語音辨識模型。單獨而言,它是一個模型檔案與一些推理程式碼。伺服器在其前方提供 HTTP 介面,讓您的應用程式可以傳送音訊檔案並取得文字,而非直接呼叫 Python 函式。

大多數伺服器複製 OpenAI 轉錄端點的格式,POST /v1/audio/transcriptions,該格式接受包含音訊檔案與模型名稱的多部分上傳。這種格式使得相同的客戶端程式庫可以與託管服務、您機器上的容器或他人編寫的小型封裝程式通訊。

  • 輸入:音訊檔案,通常是 mp3、wav、m4a 或類似格式。
  • 輸出:純文字,或包含片段與時間戳記的 JSON,取決於伺服器。
  • 未包含:摘要、將內容轉化為優美散文的翻譯、提取行動項目。這些需要語言模型。

取得 Whisper 伺服器的三種方式

1. 託管端點

OpenAI 提供託管的轉錄端點,其他供應商也提供基於 Whisper 的轉錄服務。你按使用量付費,無需管理硬體,但需將音訊傳送至他人的基礎設施。不同供應商的計費模式各異,且語音服務通常按音訊時長收費,因此在大量使用前請先確認其最新定價。

2. 自行託管封裝程式

幾個開源專案將 Whisper 或其重新實作版本封裝在模擬 OpenAI 轉錄路徑的網頁伺服器中。您可以在具有 GPU 的機器上使用 Docker 運行它,或在 CPU 上運行(若接受較慢的處理速度)。這讓您可以控制音訊的去向。但也需要您負責模型下載、更新、佇列管理與重啟。

3. 本機二進位檔

whisper.cpp 專案是該模型的 C 和 C++ 移植版本,其程式碼庫包含一個範例 HTTP 伺服器。它在一般筆記型電腦和小型伺服器上運行,適合原型開發或每天轉錄少量錄音的單一使用者。對於數百小時的批次工作,基於 GPU 的服務通常更實用。

根據三個問題選擇:音訊可以傳輸到哪裡、每月處理多少小時的錄音、誰將維持服務運行。下文描述的文字步驟對這三種方式都適用。

文字 LLM API 在轉錄後的定位

原始的 Whisper 轉錄結果是一堆文字。段落分隔很少,除非單獨加入語者分離,否則缺少說話者姓名,且填充詞仍保留在內。Whisper 也會在產品名稱、術語和專有名詞上出錯。幾乎每個實際專案都會增加一個處理文字的後續階段。

典型的第二階段工作:

  • 修正標點符號、分割段落、移除錯誤的開頭。
  • 將會議或講座摘要為幾個要點。
  • 提取結構化資料,如決策、姓名和日期,以 JSON 格式輸出。
  • 將口語內容改寫為文章、腳本或節目筆記。
  • 翻譯或本地化清理後的文字。

這就是此服務的定位。它是 OpenAI 相容的文字 API,使用單一模型 uncensored,擁有 100,000-token 上下文視窗和串流輸出功能。兩小時的訪談轉錄通常可包含在單一請求中,因此你可以跳過較小上下文視窗所強制要求的分塊邏輯。對於更長的內容,請參閱 快速入門文件 以獲取請求詳細資訊。

該模型經過調整,可針對合法成人用途提供無拒絕回應的輸出。這對於轉錄管線很重要,因為來源音訊具有不可預測性:訪談、播客、小說朗讀和客服電話常包含髒話或敏感主題。如果模型因為講者髒話就拒絕處理,會浪費一次付費轉錄。唯一的硬性限制是,不接受涉及未成年人性內容的內容。

實用的兩階段管線

OpenAI Python SDK 允許你建立兩個具有不同 base URL 的客戶端。一個指向你的 Whisper 伺服器,另一個指向此 API。為你的轉錄服務設定環境變數;第二個客戶端使用此站點的 base URL。

import os
from openai import OpenAI

# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])

# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])

with open("call.mp3", "rb") as f:
    transcript = stt.audio.transcriptions.create(
        model=os.environ["STT_MODEL"],  # the model name your server expects
        file=f,
    )

resp = llm.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
        {"role": "user", "content": transcript.text},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

有兩個細節容易出錯。首先,轉錄模型名稱就是你的伺服器所期望的名稱,這就是為什麼這裡來自環境變數。其次,文字 API 的金鑰與你持有的語音服務金鑰是分開的;每個金鑰僅驗證其自己的主機。

如果您偏好使用 shell,文字階段是一個普通的聊天補全請求:

curl https://api.whisperapis.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [
      {"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
    ]
  }'

驗證方式是使用 Bearer 金鑰作為 Authorization 標頭,端點為 POST /v1/chat/completions 和 GET /v1/models。你可從 API 金鑰頁面取得金鑰;新帳戶可在此一鍵領取 $0.50 免費試用額度,有效期 7 天且無需綁定信用卡。

實務上會出錯的事項

大型音訊檔案

許多 Whisper 伺服器限制上傳大小,長時間錄音可能會在請求過程中超時。使用 ffmpeg 等工具將音訊分割為 10 到 30 分鐘的片段,轉錄每個片段,然後連接文字。由於文字 API 接受最多 100,000 token,您可以連接這些片段並作為單一提示詞傳送。此 API 的請求主體限制為 8 MB,這遠大於任何轉錄結果所需的大小。

速率與並行限制

完整金鑰允許 8 個並行請求和每分鐘 300 個請求;試用金鑰則允許 2 個和每分鐘 60 個。如果你使用多個工作程式執行佇列,請將其上限設為金鑰的並行數。超過限制會回傳 HTTP 429,並附上程式碼 rate_limited(每分鐘請求數)或 concurrency(同時請求過多)。串流請求會保留其槽位直到串流結束,因此如果客戶端停滯,可能會佔用比預期更久的槽位。請退避並重試;如果回應包含 Retry-After: 5 標頭,請等待該時間後再試。

LLM 無法察覺的轉錄錯誤

如果 Whisper 聽錯了字,文字模型只能看到這個錯字。它甚至可能修飾這個錯誤,使其看起來像是故意的。將名稱和術語的詞典放入系統提示詞中,並指示模型標記不確定的段落,而不是猜測。對於關鍵資料,請將原始轉錄內容與清理後的版本並列保存。

幻覺填充詞

Whisper 有時會在無聲或音樂期間產生虛構的文字。在傳送前修剪無聲部分,並要求第二階段標記讀起來不自然的句子。較低的 temperature(例如 0.2)可讓清理結果更接近來源。

此 API 不做的事

它不進行語音轉文字。沒有音訊輸入、沒有語音輸出、沒有影像或影片生成、沒有嵌入向量,也不支援微調。它是位於聊天補全端點後方的託管文字模型,由獨立供應商運行,並非 OpenAI 或其他模型供應商的官方 API。如果你的專案需要這兩部分,你需要一個語音伺服器處理第一部分,並使用此服務處理第二部分。

提示詞不用於訓練。這與您的語音供應商對音訊所做的處理不同,因此請單獨閱讀該供應商的條款。

為進行成本規劃,文字部分的計費方式為每百萬個輸入 token $0.15,每百萬個輸出 token $0.50,費用從永不過期的預付額度中扣除。定價頁面列出了儲值方案與贈額。失敗或被拒絕的請求不會收費,這可避免重試循環讓你浪費錢。

合理的起步方式

  1. 啟動一個相容 Whisper 的伺服器(託管或本機),並確認它對一分鐘的檔案返回文字。
  2. 建立帳號、領取試用額度,並執行上述 curl 指令,傳入一段簡短的文字稿。
  3. 使用 Python 腳本連接兩個客戶端,並使用你自己的系統提示詞來定義你想要的清理風格。
  4. 只有在單一檔案流程運作後才新增佇列,並根據金鑰的並行數來設定佇列大小。

大部分工作集中在提示詞和音訊處理上,而非連接程式碼。從你熟悉的單一錄音開始,將輸出與你聽到的內容進行比較,並在擴展之前調整提示詞。

問答

Whisper API 伺服器與 OpenAI API 相同嗎?

否。Whisper 是一個模型,伺服器是任何透過 HTTP 暴露該模型的程式。OpenAI 運行一個託管版本,許多人使用複製相同轉錄路徑的開源工具運行自己的伺服器。

此 API 能轉錄音訊檔案嗎?

否。它僅接受文字。請使用語音服務或你自己的 Whisper 伺服器處理音訊步驟,然後將轉錄內容傳送至此。

文字處理步驟應使用哪個模型名稱?

使用 uncensored 作為模型 ID,搭配基礎 URL https://api.whisperapis.com/v1 與您的金鑰作為 Bearer token。

我可以傳送多長的轉錄內容?

上下文視窗為 100,000 token,涵蓋提示詞與補全內容的總和。這足以在單一請求中處理許多長達數小時的錄音。

試用需要信用卡嗎?

否。新用戶可在註冊後前往 API 金鑰頁面,一鍵領取 $0.50 試用額度,無需綁定信用卡。

只差一張表單,即可取得金鑰

建立帳號、複製金鑰、更改基礎 URL。這就是整個設定過程。

取得 API 金鑰