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トークン、最大出力は2,000トークンです。これらはモデルのトークン上限であり、ファイルのワークフローの25 MBというアップロード上限や、分割を必要とするしきい値とは別です。すべての録音に当てはまる架空の分数に換算しないでください。
長い文字起こしを組み立てたり確認したりするときは、時刻とセグメントの識別情報を保持します。送信前に録音を分割した場合は、各部分と元の音声の関係を残し、部分内の時刻を会話全体の位置と混同しないようにします。
確定したセグメントのストリーミング
ファイルの文字起こしワークフローでは、録音を処理しながらテキストをストリーミングできます。話者ラベル付きのストリーミングでは、完成したセグメントからセグメントイベントが生成されます。テキストの差分にはセグメントIDが含まれますが、部分的な話者の割り当ては含まれません。話者は、セグメントが確定した時点で割り当てられます。
この違いは表示に重要です。モデルがセグメントを完成させる前に、不確かな話者ラベルを付けず、暫定テキストと確定した話者の発言を別の状態として表示してください。後で編集や分析に使う場合は、完成した結果を保持します。
モデルと出力の範囲
このプロファイルは話者分離モデルであり、通常の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の料金
設定別の価格
各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。
| 設定 | 料金表 | 課金単位 | 料金 |
|---|---|---|---|
| 設定基本トークン料金 | 料金表基本料金 | 課金単位— | 料金 入力 · 入力トークン — / 1K トークン 出力 · 出力トークン — / 1K トークン 入力 · キャッシュ読み取り — / 1K トークン 入力 · キャッシュ書き込み — / 1K トークン 入力 · キャッシュ書き込み、1時間 — / 1K トークン |
| 設定Ultra | 料金表— | 課金単位/ 1K 音声トークン | 料金 入力 · 入力音声トークン $0.012 / 1K 音声トークン |
| 設定Ultra | 料金表— | 課金単位/ 1K 音声トークン | 料金 出力 · 出力音声トークン $0.02 / 1K 音声トークン |
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