gpt-4o-transcribe-diarize
GPT-4o Transcribe Diarize 將錄製的語音轉成附有說話者標籤與時間的文字片段。適合會議、訪談及多人錄音,需要在逐字稿中顯示誰在何時發言的情境,也可選擇提供已知說話者的短語音參考。
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
GPT-4o Transcribe Diarize 是 OpenAI 內建說話者分段功能的自動語音辨識模型。它將轉錄的音訊片段對應到對話中的不同說話者。有用的成果是依說話者與時間整理的逐字稿,而不只是連續的一大段文字。它適用於需要說話者標籤的錄製語音,例如會議、訪談或多人討論。
準備已完成的錄音
提供需要轉錄的錄音。文件記載的檔案流程接受 MP3、MP4、MPEG、MPGA、M4A、WAV 與 WebM,檔案大小上限為 25 MB。保留來源錄音,以便將說話輪次、名稱或不清楚的字句對照實際音訊檢查。
會議錄音應保留對話順序,不要剪掉有助區分輪次的短暫停頓。訪談任務若需要問答關係,應將問題與回答保留在一起。音訊準備應讓語音清楚可聞,同時不移除對帶說話者標籤成果重要的資訊。
這是檔案轉錄流程。處理已完成錄音與辨識仍持續傳入的音訊串流是不同任務;模型的說話者標籤不支援 Realtime 轉錄工作階段。
要求附說話者標籤的逐字稿
diarized_json 結果格式回傳附有說話者身分標籤及起訖時間的片段。每個片段也包含其轉錄文字。將這些欄位保留在一起,才能把字句連到錄音中的相關部分。
有用的會議逐字稿應保留片段順序,並搭配時間顯示每位說話者的字句。後續任務可以用逐字稿準備會議紀錄或待辦事項,但說話者分段本身不會決定會議達成哪些共識,也不會產生經驗證的摘要。
說話者標籤描述模型對語音的分組。檢查人們互相打斷、短暫發言或重疊發言的轉換處。良好結構有助導覽與檢閱,但特定歸屬仍可能需要聆聽原始音訊。
已知說話者參考
文件記載的流程最多接受四個具名說話者參考。每個參考是 2–10 秒的短音訊片段,格式需與主要上傳支援的格式一致。名稱與參考一併提供,以便將片段對應到已知說話者。
準備清楚包含目標說話者的參考,並讓名稱與逐字稿預定標籤一致。訪談中,主持人的參考可以協助整理帶有說話者標籤的成果,不必讓每個參與者都只得到匿名標籤。參考是歸屬判定的輸入,並非一般語音複製操作,也不是個人身分的證明。
不要混淆為說話者命名與修改實際發言。有用的輸出仍需保留錄音內容及實際輪次順序。
分塊與模型限制
音訊超過 30 秒時,開發商要求指定分塊策略,可以是自動分塊或語音活動偵測設定。這項要求不是錄音時長上限,而是說明如何分割較長輸入以供處理。
模型卡列出 16,000 個 token 的上下文視窗與最多 2,000 個輸出 token。這些是模型 token 限制,與檔案流程的 25 MB 上傳上限及分塊門檻分開。不應將其換算成適用於所有錄音的虛構分鐘數。
組合或檢查較長逐字稿時,保留時間與片段識別。若錄音在提交前已分割,應保留各部分與原始音訊的關係,避免將局部時間戳誤認為完整對話中的位置。
串流傳送已定稿片段
檔案轉錄流程可在處理錄音時串流傳送文字。帶說話者標籤的串流會在片段完成時產生片段事件。文字增量含有片段識別碼,但不含部分的說話者指派;說話者會在片段定稿時指派。
呈現時,這項區別很重要。將暫定文字與定稿的說話輪次顯示為不同狀態,不要在模型完成片段前附上不確定的說話者標籤。若後續編輯或分析需要逐字稿,應保留完成結果。
模型與輸出範圍
這個設定檔是說話者分段模型,與一般 GPT-4o 轉錄、Mini 轉錄、語音合成及即時對話模型分開。它不支援轉錄提示詞;術語檢閱或修正應作為獨立步驟,並對照原始音訊檢查。其開發商介面將錄製音訊轉錄成文字,不會生成音訊回答,也不會透過獨立的音訊翻譯流程翻譯錄音。
用於同時需要內容與說話者結構的逐字稿。將名稱、專業術語、數字、輪次邊界與歸屬對照錄音檢查。保留音訊、所選結果格式、參考及完成逐字稿,讓修正可以針對一個具體字句或說話者指派。
Ailoot Ultra · 語音辨識 POST /v1/audio/transcriptions openai/gpt-4o-transcribe-diarize
openai/gpt-4o-transcribe-diarize
openai/gpt-4o-transcribe-diarize入門
GPT-4o Transcribe Diarize 將錄製的語音轉成附有說話者標籤與時間的文字片段。適合會議、訪談及多人錄音,需要在逐字稿中顯示誰在何時發言的情境,也可選擇提供已知說話者的短語音參考。
- 接受的輸入
- 音訊
- 結果
- transcription
Ailoot 可用 · 輸入與方法
Ailoot Ultra · 語音辨識 POST /v1/audio/transcriptions
- 輸入
audio- 輸出
transcription- 輸出格式
- json
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 openai/gpt-4o-transcribe-diarize | 預設值— |
欄位file | 類型file | 要求必填 | 值與限制 位元組數上限: 26,214,400 MIME 類型: audio/mpeg 副檔名: .mp3 時長上限(秒): 30 | 預設值— |
欄位response_format | 類型string | 要求必填 | 值與限制 diarized_json | 預設值— |
輸入素材組合
diarized_transcription
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格multipart/form-data |
參數required | 規格model, file, response_format |
參數file_formats | 規格mp3 |
參數max_audio_seconds | 規格30 |
參數max_bytes | 規格26214400 |
參數response_format | 規格diarized_json |
參數other_options | 規格false |
參數material_types | 規格audio |
參數additional_properties | 規格false |
參數form_string_maximum_bytes | 規格256 |
方法別名: /audio/transcriptions
生命週期: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · 實際回傳的 task_id 或媒體庫紀錄
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
請使用實際錄音與相符的格式。
請保留完整轉錄文字、片段、說話者 ID 與時間資訊。
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。
| 設定 | 費率表 | 計費單位 | 費用 |
|---|---|---|---|
| 設定基礎 token 費率 | 費率表基本費率 | 計費單位— | 費用 輸入 · 輸入 Token — / 1K Token 輸出 · 輸出 Token — / 1K Token 輸入 · 讀取快取 — / 1K Token 輸入 · 寫入快取 — / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
| 設定Ultra | 費率表— | 計費單位/ 1K 音訊 Token | 費用 輸入 · 輸入音訊詞元 $0.012 / 1K 音訊 Token |
| 設定Ultra | 費率表— | 計費單位/ 1K 音訊 Token | 費用 輸出 · 輸出音訊詞元 $0.02 / 1K 音訊 Token |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · 語音辨識
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}"
export AILOOT_AUDIO_FILE
python3 - <<'PY_REQUEST'
import os
from pathlib import Path
p=Path(os.environ["AILOOT_AUDIO_FILE"])
if not p.is_file() or p.suffix.lower()!=".mp3":raise SystemExit("Choose an existing MP3 recording")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" \
--form-string model=openai/gpt-4o-transcribe-diarize -F "file=@$AILOOT_AUDIO_FILE" --form-string response_format=diarized_json \
-D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text())))
PY_RESULT
接收並儲存結果
Ailoot Ultra · 語音辨識
json
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
其他內容讀取方式
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('result.json').read_text())
urls=[]
if isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
請保留完整 JSON,而非僅保留文字;所有可用的片段/說話者/時間戳記與實際工作/資產身分均須保留。
需要檢查原始回應時
保留原始 operation_id/X-Client-Request-ID 以供核對,請勿重新提交;沒有專用的音訊輪詢路由。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位text | 類型string |
欄位segments[] | 類型object |
欄位task_id | 類型string |
欄位asset_url | 類型string |
欄位usage | 類型object |
欄位segments[].speaker | 類型string |
欄位segments[].start | 類型number |
欄位segments[].end | 類型number |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
回應server_error | 條件回傳的回應表示該作業或結果需要檢查 | 下一步保留原始回傳的作業/任務 ID、請求標頭與回應;繼續以支援的方式讀取該原始作業。請勿重新提交建立請求。 |
別名
模型別名
Ailoot Ultra openai/gpt-4o-transcribe-diarize
方法路徑別名
/audio/transcriptions
相關呼叫用 ID
FAQ · gpt-4o-transcribe-diarize
- 可以使用哪些輸入與結果?
POST /v1/audio/transcriptions·openai/gpt-4o-transcribe-diarize:audio→transcription- 請求使用哪些欄位?
POST /v1/audio/transcriptions·openai/gpt-4o-transcribe-diarize:model,file,response_format