OpenAI: GPT Transcribe
GPT Transcribeは、録音した音声を元の言語のテキストに変換します。背景を伝えるプロンプト、実際の語句を指定するキーワードのヒント、複数の言語のヒントを使えます。OpenAIは、完成したファイルの文字起こし、ファイルの結果のストリーミング、Realtimeでコミットした音声ターンの文字起こしを文書化しています。
モデルについて
この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。
GPT Transcribeは、完成した音声ファイル、ストリーミングするファイルの文字起こし結果、Realtimeセッションでコミットした音声ターンに向けた、OpenAIの音声認識モデルです。任意のテキストの背景情報とともに音声を受け取り、認識したテキストを返します。メーカーは、専門用語、複数言語の録音、発話中の言語切り替えを含め、録音した発話を元の言語で正確に文字起こしする用途に位置付けています。有用な出力は、録音との対応を保つ文字起こし結果です。モデルが信頼できる予測を行える場合は、検出した言語のメタデータも含まれます。
完成した録音を準備する
OpenAIのファイルの文字起こしの流れは、最大25 MBのアップロードを受け付けます。現在のエンドポイントのリファレンスは、FLAC、MP3、MP4、MPEG、MPGA、M4A、OGG、WAV、WebMの入力形式を挙げています。また、適切なファイル名の拡張子とコンテンツタイプなど、形式を特定するのに十分なファイルのメタデータを推奨しています。大きな録音では、圧縮するか、25 MB以下のファイルに分割することをガイドは推奨しています。前後の発話を除くと認識の精度が下がる場合があるため、文の途中で切らないでください。分割した音声の順序を保ち、元の録音内での位置を保持します。
会議、インタビュー、録音したプレゼンテーションでは、実際の音声を提供し、話題と発話されそうな用語を示してください。有用な結果は、話し合いから推測した要約ではなく、認識された言葉です。返されたテキストとともに録音の識別子を保持し、名前、数字、不確かな語句を確認する人が、正しい原資料に戻れるようにしてください。文字起こし結果は、その後の別の要約、翻訳、編集作業の資料にできます。
背景、キーワードのヒント、想定する言語
メーカーは、三種類の手掛かりを分けています。プロンプトは、録音の話題や場面について自由な形式の背景情報を与えます。キーワードは、発話に含まれると想定する実際の単語や語句を指定します。languagesのリストは、想定する発話言語を示します。二言語を使う製品の話し合いでは、プロンプトに場面を記述し、関連する製品名をキーワードとして挙げ、想定する言語を提供してください。これらは認識のヒントであり、誰も発話していない語句を挿入する指示ではありません。
GPT Transcribeは、従来の単数形のlanguageフィールドではなく、複数形のlanguagesフィールドを使います。OpenAIは、両方を送信しないよう指示しています。ガイドは、対応するISO 639-1コード、一部のISO 639-3コード、中国語の地域別ロケールコードを受け付け、未対応の値や形式が不正な値は拒否されると説明しています。各キーワードは一行に収め、山括弧、キャリッジリターン、改行を含めないでください。不正なキーワードや長すぎるプロンプトにより、リクエスト全体が拒否される場合があります。関連する背景に絞り、ヒントのリストを文字起こし結果として扱わず、指定した名前が音声内で実際に発話されているかを確認してください。
JSON出力と検出した言語の予測
文書化されたファイルの結果は、文字起こしと検出した言語を含むJSONです。言語の予測はモデルの出力であり、提供した言語のヒントのコピーではありません。モデルが信頼できる予測を行えない場合、空の言語リストも有効な結果です。録音が無音だったことや、文字起こしに失敗したことを示すものではありません。後の処理でそれぞれの意味に沿って使えるよう、認識したテキストと言語のメタデータを分けて保持してください。
ファイルの文字起こし結果をストリーミングする
完成したファイルでは、処理中に文字起こしのテキストを順次出力できます。OpenAIは、途中のテキストのtranscript.text.deltaイベントと、ファイル全体の文字起こし結果のtranscript.text.doneイベントを文書化しています。最終イベントには、検出した言語も含まれます。これは、すでに提供した録音の出力をストリーミングするものです。長いアップロードの進行状況を表示するのに役立ち、最終イベントが、完了した結果として保持するテキストを確定します。
Realtimeセッションでコミットしたターン
GPT Transcribeには、WebSocketを使う専用のRealtimeの流れもあります。入力バッファに音声を追加した後、アプリケーションが音声ターンを明示的にコミットします。そのコミットしたチャンクの文字起こしが始まり、完了イベントの前に差分を出力する場合があります。検出した言語の情報も含まれます。このメーカーのセッションの流れでは、モデルが、前の文字起こし済みのターンを自動的に背景情報として使います。これは、マイク音声が届くたびにライブ字幕のテキストを連続して出力する流れとは別です。OpenAIは、その連続的な流れにGPT Live Transcribeという名称を使っています。
複数のターンでは、対応する文字起こし結果とともに入力項目の識別子を保持してください。OpenAIは、異なるターンの完了イベントが発話順に届くとは限らないと注意しています。会話を完了時刻だけで並べず、各最終結果をコミットした入力に対応付けてください。有用な成果物は、正しい最終項目から組み立てた、順序の整った文字起こし結果です。途中のテキストは、別の完了した発話ではなく、進行状況として扱います。
専用の出力と内容上の制限
この仕様は、字幕、タイムスタンプ、翻訳、話者ラベルについて、一律の契約を提供するものではありません。OpenAIの移行ガイドは、これらの専用機能を区別しています。ネイティブの字幕形式と単語の時刻情報には対応するモデルと形式が必要であり、話者ラベルにはGPT-4o Transcribe Diarizeを使います。GPT Transcribeのファイルの結果はJSONであり、SRT、VTT、詳細なタイムスタンプを含む応答をそのまま置き換えるものではありません。このモデルのモデルカードは、数値によるコンテキストや最大出力の枠を公開していないため、音声の文字起こしにチャットモデルのトークンウィンドウを仮定しないでください。
難しい用語、数字、アクセント、背景の雑音、言語の切り替えを録音に照らして確認してください。関連するヒントが、発話されていない用語を加えずに認識を改善したか、最終的な文字起こしに音声の末尾まで含まれるかを確認します。複数言語の結果では、翻訳版を準備する前に、発話された言葉を保持してください。これらの確認により、背景のヒント、検出した言語、認識した発話を明確に区別しながら、文字起こし結果を原資料として使えます。
Ailoot Ultra · 文字起こし POST /v1/audio/transcriptions openai/gpt-transcribe
openai/gpt-transcribeはじめに
GPT Transcribeは、録音した音声を元の言語のテキストに変換します。背景を伝えるプロンプト、実際の語句を指定するキーワードのヒント、複数の言語のヒントを使えます。OpenAIは、完成したファイルの文字起こし、ファイルの結果のストリーミング、Realtimeでコミットした音声ターンの文字起こしを文書化しています。
- 対応する入力
- 音声
- 結果
- テキスト
Ailootで利用可能 · 入力とメソッド
Ailoot Ultra · 文字起こし POST /v1/audio/transcriptions
- 入力の種類
audio- 出力の種類
text
| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
|---|---|---|---|---|
フィールドmodel | 種類string | 要件必須 | 値と制限 openai/gpt-transcribe | デフォルト— |
フィールドinput_audio | 種類object | 要件必須 | 値と制限 | デフォルト— |
メソッドのパラメータとライフサイクル
| パラメータ | 仕様 |
|---|---|
パラメータcontent_type | 仕様application/json |
パラメータrequired | 仕様model, input_audio |
パラメータmaterial_types | 仕様audio |
パラメータmaterial_conditions | 仕様この例では、実際の空でないPCM WAVファイルを読み込み、ファイル全体のバイト列をbase64にエンコードして、input_audio.formatをwavとして送信します。 |
ライフサイクル: 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}
料金
料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。
- 高速モード
- 未指定 高速モードが選択されている場合
- Flex モード
- 未指定 flex モードが選択されている場合
- 最大推論量
- 未指定 推論量が最大で、調整に既定値(default)を使用する場合
Ailootの料金
設定別の価格
各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。
| 設定 | 料金表 | 課金単位 | 料金 |
|---|---|---|---|
| 設定基本トークン料金 | 料金表基本料金 | 課金単位— | 料金 入力 · 入力トークン — / 1K トークン 出力 · 出力トークン — / 1K トークン 入力 · キャッシュ読み取り — / 1K トークン 入力 · キャッシュ書き込み — / 1K トークン 入力 · キャッシュ書き込み、1時間 — / 1K トークン |
| 設定入力音声の秒 | 料金表— | 課金単位入力音声1秒あたり | 料金 入力 · 入力音声の秒 $0.00015 入力音声1秒あたり |
Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →
リクエスト例
Ailoot Ultra · 文字起こし
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}"
export AILOOT_AUDIO_FILE
python3 - <<'PY_REQUEST'
import base64, io, json, os, wave
from pathlib import Path
audio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()
if not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):
raise SystemExit('Supply your actual PCM WAV audio file')
with wave.open(io.BytesIO(audio), 'rb') as recording:
if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:
raise SystemExit('Supply a nonempty PCM WAV recording')
request = {'model': 'openai/gpt-transcribe', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}
Path('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o response.bin
# Retain the complete original response, headers and actual X-Client-Request-ID.
# Read existing owned records for recovery; do not resubmit an uncertain operation.
結果を受け取って保存
Ailoot Ultra · 文字起こし
元のレスポンス本文全体、ステータス、および転送されたヘッダー。このハンドラーは共通のJSON構造、テキストフィールド、タスクの外側の構造を追加しません。
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
完了した結果をすべて保存
返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。
レスポンスとヘッダーの全体、実際の出力すべて、最初に返された識別子、使用量フィールドすべてを保存してください。作成リクエストを再送せずに、元の操作を復旧してください。
元のレスポンスを確認する場合
実際のX-Client-Request-IDと完全なレスポンスを保持してください。元の所有アセットと、その正確な署名付きコンテンツURLを読み取ってください。結果が不確かな作成リクエストは、決して再送信しないでください。
レスポンスのフィールド
| フィールド | 種類 |
|---|---|
フィールドtext (when present) | 種類 |
フィールドusage (when present) | 種類 |
エラーと次の手順
| レスポンス | 条件 | 次の手順 |
|---|---|---|
レスポンス400 · invalid_request_error | 条件JSON本文、または明示された正規モデルIDが無効です。 | 次の手順レスポンスを保持し、指摘されたリクエストフィールドを修正してください。 |
レスポンス401 · authentication_error | 条件Ailoot APIキーが無効です。 | 次の手順利用権限のあるAiloot APIキーを使用してください。 |
レスポンス403 · permission_error | 条件このキーのグループでは、このメソッドの利用が許可されていません。 | 次の手順返されたエラーの詳細を保持してください。 |
レスポンス404 · not_found_error | 条件選択したメソッドには、利用が許可されたルートがありません。 | 次の手順返されたエラーの詳細を保持してください。 |
レスポンス422 · price_unavailable | 条件受諾済みの料金体系に必要な入力量、またはその上限を取得できません。 | 次の手順レスポンスを保持し、受諾済みの料金体系で必要とされる入力表現を使用してください。 |
レスポンス503 · | 条件必要な保存領域、ルート、メソッド料金、または料金の仮押さえを利用できません。 | 次の手順元のレスポンス全体を保持してください。料金の仮押さえ状態が不明でも、再送信が認められるわけではありません。 |
レスポンス502 · server_error | 条件元の結果、使用量、または精算を確認する必要があります。 | 次の手順実際のリクエストIDと元のレスポンスを保持してください。既存の所有レコードを読み取ってください。作成リクエストを再送信しないでください。 |
エイリアス
モデルのエイリアス
Ailoot Ultra openai/gpt-transcribe
メソッドパスのエイリアス
上記に表示されたメソッドパスを使用してください。
関連する呼び出し用ID
FAQ · OpenAI: GPT Transcribe
- 利用できる入力と結果は何ですか?
POST /v1/audio/transcriptions·openai/gpt-transcribe:audio→text- リクエストはどの項目を使用しますか?
POST /v1/audio/transcriptions·openai/gpt-transcribe:model,input_audio