{
  "aboutHtml": "<p>Transcribe 1は、短い録音向けのFish Audioの汎用音声認識モデルです。音声ファイルを受け取り、認識した言葉をテキストとして返します。録音の長さ、任意の時刻付き区間、判明した場合の言語情報も含まれます。短い音声メモ、口頭の指示、録音の抜粋、読みやすいテキスト表現が必要な音声クリップに便利です。</p><p>音声メモのワークフロー例では、録音、文字起こし全文、元のクリップの識別子をまとめて保持します。後続のアプリケーション処理で、発話の原資料を残しながら、テキストの検索、メモの整理、要約の作成ができます。コマンドの場合、文字起こしは認識した言葉をアプリケーションに渡します。実際の操作は別の解釈と実行の段階です。インタビューの抜粋では、引用を正しい位置で照合できるよう、音声全体におけるクリップの位置を記録してください。</p><p>提供元は、WAV、MP3、M4A/MP4を含むAAC、FLAC、OpusまたはVorbisを格納したOggに対応しています。ブラウザーで録音したWebMは、このモデルではOgg/Opus、MP3、WAVのいずれかに変換してください。Proのドキュメントには、追加のコンテナーへのネイティブ対応が記載されています。1リクエストにつき音声ファイルを1つ渡します。基本モデルの記載されたリクエスト上限は50 MiBで、MP3とOpusのファイルは25 MiB未満にします。ファイルサイズと録音時間は別の条件です。圧縮ファイルがアップロード枠に収まっても、処理に時間がかかりすぎる場合があります。</p><p>Transcribe 1は短い録音向けです。提供元は数分を超える音声にはProを推奨しており、基本モデルで長い録音を処理すると、処理時間の上限を超えて失敗する可能性があります。長い資料を短いクリップに分けて文字起こしする場合は、各クリップの開始オフセットを保持し、結果を結合する前に、返された文字起こしがクリップ全体を網羅しているか確認します。区間内の時刻に元のオフセットを加え、録音全体の正しい位置へ移動できるようにします。基本モデルの案内を、Proの別の60分という枠と混同してはいけません。</p><p>提供元の応答には、text、duration、segmentsが含まれます。長さは秒単位で、読みやすい文字起こし全文をクリップの主要な文面として保持します。タイムスタンプは任意です。提供元APIではignore_timestampsの既定値はtrueで、falseを指定すると、text、start、endを含む秒単位の単語別区間を要求します。アラインメントの要求には追加の処理時間がかかります。segmentsの配列が空でも、時刻情報を省略した、発話がない、アラインメントが一時的に利用できないなどの可能性があり、文字起こし全文まで空だと即断してはいけません。</p><p>区間は通常は単語単位ですが、中国語と日本語では1文字または数文字のことがあります。区間のテキストは句読点を省き、全文と異なる形に数値などを正規化する場合もあります。読みやすい応答の文字単位の複製ではありません。開始時刻と終了時刻が同じ区間もあります。区間は録音内の位置検索や時刻に合わせた表示に使い、文面と句読点が重要な場合は全文を使います。成果物では、この2つの表現を分けて保持してください。</p><p>任意の言語ヒントを指定してもしなくても、言語は自動検出されます。提供元はヒントに小文字のISO 639-1コードを指定し、判明した場合はアプリケーション処理用の言語コードと表示用の言語名を返すと説明しています。録音中に言語が切り替わっても、応答はすべての言語ではなく1つの言語を報告します。文字起こしを翻訳処理とみなさず、原語の文面と利用可能な言語メタデータを結果に保持してください。</p><p>字幕のワークフローでは、1語ずつ表示せず、連続する時刻付き区間を読みやすい字幕キューにまとめます。元のクリップに結び付いたSRTまたはWebVTTファイルを作り、休止に合わせてキューを区切り、画面に表示して読み切れる量の文字を設定すると実用的です。時刻の欠落を確認し、各キューの終了が開始より後になるようにします。字幕のグループ化とファイル整形は、返されたアラインメントを利用するアプリケーション側の処理であり、表示方法はプレーヤーと視聴者に合わせてください。</p><p>Transcribe 1に記載された制御は、音声、言語ヒント、タイムスタンプの選択です。Proの話者マーカー、構造化された話者ターン、感情イベントの制御、話者数ヒントは別の機能であり、この基本モデルの公開された応答仕様には含まれません。処理前に必要な成果物を決めます。メモなら読みやすい平文、再生位置への移動や字幕ならテキストとアラインメントです。クリップ識別子、文字起こし、取得できた時刻情報を残すことで、次のアプリケーション処理に役立つ結果になります。</p>",
  "aboutText": "Transcribe 1は、短い録音向けのFish Audioの汎用音声認識モデルです。音声ファイルを受け取り、認識した言葉をテキストとして返します。録音の長さ、任意の時刻付き区間、判明した場合の言語情報も含まれます。短い音声メモ、口頭の指示、録音の抜粋、読みやすいテキスト表現が必要な音声クリップに便利です。\n\n音声メモのワークフロー例では、録音、文字起こし全文、元のクリップの識別子をまとめて保持します。後続のアプリケーション処理で、発話の原資料を残しながら、テキストの検索、メモの整理、要約の作成ができます。コマンドの場合、文字起こしは認識した言葉をアプリケーションに渡します。実際の操作は別の解釈と実行の段階です。インタビューの抜粋では、引用を正しい位置で照合できるよう、音声全体におけるクリップの位置を記録してください。\n\n提供元は、WAV、MP3、M4A/MP4を含むAAC、FLAC、OpusまたはVorbisを格納したOggに対応しています。ブラウザーで録音したWebMは、このモデルではOgg/Opus、MP3、WAVのいずれかに変換してください。Proのドキュメントには、追加のコンテナーへのネイティブ対応が記載されています。1リクエストにつき音声ファイルを1つ渡します。基本モデルの記載されたリクエスト上限は50 MiBで、MP3とOpusのファイルは25 MiB未満にします。ファイルサイズと録音時間は別の条件です。圧縮ファイルがアップロード枠に収まっても、処理に時間がかかりすぎる場合があります。\n\nTranscribe 1は短い録音向けです。提供元は数分を超える音声にはProを推奨しており、基本モデルで長い録音を処理すると、処理時間の上限を超えて失敗する可能性があります。長い資料を短いクリップに分けて文字起こしする場合は、各クリップの開始オフセットを保持し、結果を結合する前に、返された文字起こしがクリップ全体を網羅しているか確認します。区間内の時刻に元のオフセットを加え、録音全体の正しい位置へ移動できるようにします。基本モデルの案内を、Proの別の60分という枠と混同してはいけません。\n\n提供元の応答には、text、duration、segmentsが含まれます。長さは秒単位で、読みやすい文字起こし全文をクリップの主要な文面として保持します。タイムスタンプは任意です。提供元APIではignore_timestampsの既定値はtrueで、falseを指定すると、text、start、endを含む秒単位の単語別区間を要求します。アラインメントの要求には追加の処理時間がかかります。segmentsの配列が空でも、時刻情報を省略した、発話がない、アラインメントが一時的に利用できないなどの可能性があり、文字起こし全文まで空だと即断してはいけません。\n\n区間は通常は単語単位ですが、中国語と日本語では1文字または数文字のことがあります。区間のテキストは句読点を省き、全文と異なる形に数値などを正規化する場合もあります。読みやすい応答の文字単位の複製ではありません。開始時刻と終了時刻が同じ区間もあります。区間は録音内の位置検索や時刻に合わせた表示に使い、文面と句読点が重要な場合は全文を使います。成果物では、この2つの表現を分けて保持してください。\n\n任意の言語ヒントを指定してもしなくても、言語は自動検出されます。提供元はヒントに小文字のISO 639-1コードを指定し、判明した場合はアプリケーション処理用の言語コードと表示用の言語名を返すと説明しています。録音中に言語が切り替わっても、応答はすべての言語ではなく1つの言語を報告します。文字起こしを翻訳処理とみなさず、原語の文面と利用可能な言語メタデータを結果に保持してください。\n\n字幕のワークフローでは、1語ずつ表示せず、連続する時刻付き区間を読みやすい字幕キューにまとめます。元のクリップに結び付いたSRTまたはWebVTTファイルを作り、休止に合わせてキューを区切り、画面に表示して読み切れる量の文字を設定すると実用的です。時刻の欠落を確認し、各キューの終了が開始より後になるようにします。字幕のグループ化とファイル整形は、返されたアラインメントを利用するアプリケーション側の処理であり、表示方法はプレーヤーと視聴者に合わせてください。\n\nTranscribe 1に記載された制御は、音声、言語ヒント、タイムスタンプの選択です。Proの話者マーカー、構造化された話者ターン、感情イベントの制御、話者数ヒントは別の機能であり、この基本モデルの公開された応答仕様には含まれません。処理前に必要な成果物を決めます。メモなら読みやすい平文、再生位置への移動や字幕ならテキストとアラインメントです。クリップ識別子、文字起こし、取得できた時刻情報を残すことで、次のアプリケーション処理に役立つ結果になります。",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d60ba0224941613d28939d374f67c22359a02dbf4ce9c1c430266942f6dfb873",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ja",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"閉じる\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1</code><button type=\"button\" id=\"copy-id\">IDをコピー</button></div><nav class=\"card-jump-nav\" aria-label=\"モデルカードのセクション\"><button type=\"button\" data-card-jump=\"overview\">はじめに</button><button type=\"button\" data-card-jump=\"methods\">入力とメソッド</button><button type=\"button\" data-card-jump=\"pricing\">料金</button><button type=\"button\" data-card-jump=\"examples\">例</button><button type=\"button\" data-card-jump=\"results\">結果</button><button type=\"button\" data-card-jump=\"aliases\">エイリアス</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"APIメソッド\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1\">認識</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">はじめに</h3><p class=\"mdesc-full\">Transcribe 1は、短い音声録音を、自動言語検出と任意の単語単位タイムスタンプ付きでテキストに変換します。文字起こしは音声メモ、検索できるクリップ、字幕の準備に使えます。時刻付きの区間と、読みやすい全文は分けて保持してください。</p><dl class=\"card-io\" data-card-io><div><dt>対応する入力</dt><dd>音声</dd></div><div><dt>結果</dt><dd>テキスト</dd></div></dl><details class=\"card-about\"><summary>モデルについて</summary><p class=\"note-s\" data-model-method-boundary>この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1は、短い録音向けのFish Audioの汎用音声認識モデルです。音声ファイルを受け取り、認識した言葉をテキストとして返します。録音の長さ、任意の時刻付き区間、判明した場合の言語情報も含まれます。短い音声メモ、口頭の指示、録音の抜粋、読みやすいテキスト表現が必要な音声クリップに便利です。</p><p>音声メモのワークフロー例では、録音、文字起こし全文、元のクリップの識別子をまとめて保持します。後続のアプリケーション処理で、発話の原資料を残しながら、テキストの検索、メモの整理、要約の作成ができます。コマンドの場合、文字起こしは認識した言葉をアプリケーションに渡します。実際の操作は別の解釈と実行の段階です。インタビューの抜粋では、引用を正しい位置で照合できるよう、音声全体におけるクリップの位置を記録してください。</p><p>提供元は、WAV、MP3、M4A/MP4を含むAAC、FLAC、OpusまたはVorbisを格納したOggに対応しています。ブラウザーで録音したWebMは、このモデルではOgg/Opus、MP3、WAVのいずれかに変換してください。Proのドキュメントには、追加のコンテナーへのネイティブ対応が記載されています。1リクエストにつき音声ファイルを1つ渡します。基本モデルの記載されたリクエスト上限は50 MiBで、MP3とOpusのファイルは25 MiB未満にします。ファイルサイズと録音時間は別の条件です。圧縮ファイルがアップロード枠に収まっても、処理に時間がかかりすぎる場合があります。</p><p>Transcribe 1は短い録音向けです。提供元は数分を超える音声にはProを推奨しており、基本モデルで長い録音を処理すると、処理時間の上限を超えて失敗する可能性があります。長い資料を短いクリップに分けて文字起こしする場合は、各クリップの開始オフセットを保持し、結果を結合する前に、返された文字起こしがクリップ全体を網羅しているか確認します。区間内の時刻に元のオフセットを加え、録音全体の正しい位置へ移動できるようにします。基本モデルの案内を、Proの別の60分という枠と混同してはいけません。</p><p>提供元の応答には、text、duration、segmentsが含まれます。長さは秒単位で、読みやすい文字起こし全文をクリップの主要な文面として保持します。タイムスタンプは任意です。提供元APIではignore_timestampsの既定値はtrueで、falseを指定すると、text、start、endを含む秒単位の単語別区間を要求します。アラインメントの要求には追加の処理時間がかかります。segmentsの配列が空でも、時刻情報を省略した、発話がない、アラインメントが一時的に利用できないなどの可能性があり、文字起こし全文まで空だと即断してはいけません。</p><p>区間は通常は単語単位ですが、中国語と日本語では1文字または数文字のことがあります。区間のテキストは句読点を省き、全文と異なる形に数値などを正規化する場合もあります。読みやすい応答の文字単位の複製ではありません。開始時刻と終了時刻が同じ区間もあります。区間は録音内の位置検索や時刻に合わせた表示に使い、文面と句読点が重要な場合は全文を使います。成果物では、この2つの表現を分けて保持してください。</p><p>任意の言語ヒントを指定してもしなくても、言語は自動検出されます。提供元はヒントに小文字のISO 639-1コードを指定し、判明した場合はアプリケーション処理用の言語コードと表示用の言語名を返すと説明しています。録音中に言語が切り替わっても、応答はすべての言語ではなく1つの言語を報告します。文字起こしを翻訳処理とみなさず、原語の文面と利用可能な言語メタデータを結果に保持してください。</p><p>字幕のワークフローでは、1語ずつ表示せず、連続する時刻付き区間を読みやすい字幕キューにまとめます。元のクリップに結び付いたSRTまたはWebVTTファイルを作り、休止に合わせてキューを区切り、画面に表示して読み切れる量の文字を設定すると実用的です。時刻の欠落を確認し、各キューの終了が開始より後になるようにします。字幕のグループ化とファイル整形は、返されたアラインメントを利用するアプリケーション側の処理であり、表示方法はプレーヤーと視聴者に合わせてください。</p><p>Transcribe 1に記載された制御は、音声、言語ヒント、タイムスタンプの選択です。Proの話者マーカー、構造化された話者ターン、感情イベントの制御、話者数ヒントは別の機能であり、この基本モデルの公開された応答仕様には含まれません。処理前に必要な成果物を決めます。メモなら読みやすい平文、再生位置への移動や字幕ならテキストとアラインメントです。クリップ識別子、文字起こし、取得できた時刻情報を残すことで、次のアプリケーション処理に役立つ結果になります。</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailootで利用可能 · 入力とメソッド</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 文字起こし</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>入力の種類</dt><dd><code>audio</code></dd></div><div><dt>出力の種類</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>フィールド</th><th>種類</th><th>要件</th><th>値と制限</th><th>デフォルト</th></tr></thead><tbody><tr><th data-cell-label=\"フィールド\" scope=\"row\"><span class=\"card-cell-label\">フィールド</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"種類\" data-field-type><span class=\"card-cell-label\">種類</span><code>string</code></td><td data-cell-label=\"要件\"><span class=\"card-cell-label\">要件</span>必須</td><td data-cell-label=\"値と制限\"><span class=\"card-cell-label\">値と制限</span><div>fish-audio/transcribe-1</div></td><td data-cell-label=\"デフォルト\" data-default=\"unspecified\"><span class=\"card-cell-label\">デフォルト</span>—</td></tr><tr><th data-cell-label=\"フィールド\" scope=\"row\"><span class=\"card-cell-label\">フィールド</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"種類\" data-field-type><span class=\"card-cell-label\">種類</span><code>object</code></td><td data-cell-label=\"要件\"><span class=\"card-cell-label\">要件</span>必須</td><td data-cell-label=\"値と制限\"><span class=\"card-cell-label\">値と制限</span></td><td data-cell-label=\"デフォルト\" data-default=\"unspecified\"><span class=\"card-cell-label\">デフォルト</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>メソッドのパラメータとライフサイクル</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>パラメータ</th><th>仕様</th></tr></thead><tbody><tr><th data-cell-label=\"パラメータ\" scope=\"row\"><span class=\"card-cell-label\">パラメータ</span><code>content_type</code></th><td data-cell-label=\"仕様\"><span class=\"card-cell-label\">仕様</span>application/json</td></tr><tr><th data-cell-label=\"パラメータ\" scope=\"row\"><span class=\"card-cell-label\">パラメータ</span><code>required</code></th><td data-cell-label=\"仕様\"><span class=\"card-cell-label\">仕様</span>model, input_audio</td></tr><tr><th data-cell-label=\"パラメータ\" scope=\"row\"><span class=\"card-cell-label\">パラメータ</span><code>material_types</code></th><td data-cell-label=\"仕様\"><span class=\"card-cell-label\">仕様</span>audio</td></tr><tr><th data-cell-label=\"パラメータ\" scope=\"row\"><span class=\"card-cell-label\">パラメータ</span><code>material_conditions</code></th><td data-cell-label=\"仕様\"><span class=\"card-cell-label\">仕様</span>この例では、実際の空でないPCM WAVファイルを読み込み、ファイル全体のバイト列をbase64にエンコードして、input_audio.formatをwavとして送信します。</td></tr></tbody></table></div><p>ライフサイクル: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · 既存の所有メディアレコードにある正確なtask_id</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">料金</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。</p><dl data-price-conditions><dt>高速モード</dt><dd>未指定 <span class=\"note-s\">高速モードが選択されている場合</span></dd><dt>Flex モード</dt><dd>未指定 <span class=\"note-s\">flex モードが選択されている場合</span></dd><dt>最大推論量</dt><dd>未指定 <span class=\"note-s\">推論量が最大で、調整に既定値（default）を使用する場合</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailootの料金</h4><h4>設定別の価格</h4><p class=\"note-s\">各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>設定</th><th>料金表</th><th>課金単位</th><th>料金</th></tr></thead><tbody><tr><th data-cell-label=\"設定\" scope=\"row\"><span class=\"card-cell-label\">設定</span>基本トークン料金</th><td data-cell-label=\"料金表\"><span class=\"card-cell-label\">料金表</span>基本料金</td><td data-cell-label=\"課金単位\"><span class=\"card-cell-label\">課金単位</span>—</td><td data-cell-label=\"料金\"><span class=\"card-cell-label\">料金</span><div><span>入力 · 入力トークン</span> <b>—</b> <span class=\"price-unit\">/ 1K トークン</span></div><div><span>出力 · 出力トークン</span> <b>—</b> <span class=\"price-unit\">/ 1K トークン</span></div><div><span>入力 · キャッシュ読み取り</span> <b>—</b> <span class=\"price-unit\">/ 1K トークン</span></div><div><span>入力 · キャッシュ書き込み</span> <b>—</b> <span class=\"price-unit\">/ 1K トークン</span></div><div><span>入力 · キャッシュ書き込み、1時間</span> <b>—</b> <span class=\"price-unit\">/ 1K トークン</span></div></td></tr><tr><th data-cell-label=\"設定\" scope=\"row\"><span class=\"card-cell-label\">設定</span>入力音声の秒</th><td data-cell-label=\"料金表\"><span class=\"card-cell-label\">料金表</span>—</td><td data-cell-label=\"課金単位\"><span class=\"card-cell-label\">課金単位</span>入力音声1秒あたり</td><td data-cell-label=\"料金\"><span class=\"card-cell-label\">料金</span><div><span>入力 · 入力音声の秒</span> <b>$0.0002</b> <span class=\"price-unit\">入力音声1秒あたり</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。<a href=\"/docs/ja/billing/reserve/\">金額の確保と精算の仕組み →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">リクエスト例</h3><h4>Ailoot Ultra · 文字起こし</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"コードの種類\"><button class=\"cg-tab\" id=\"model-code-1361-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1361-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 実際の WAV ファイルと元の結果全体</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"コードをコピー\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1361-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1361-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;fish-audio/transcribe-1&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">結果を受け取って保存</h3><h4>Ailoot Ultra · 文字起こし</h4><p class=\"note-s\">元のレスポンス本文全体、ステータス、および転送されたヘッダー。このハンドラーは共通のJSON構造、テキストフィールド、タスクの外側の構造を追加しません。</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>完了した結果をすべて保存</h5><p class=\"note-s\">返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。</p><p class=\"note-s\">レスポンスとヘッダーの全体、実際の出力すべて、最初に返された識別子、使用量フィールドすべてを保存してください。作成リクエストを再送せずに、元の操作を復旧してください。</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>元のレスポンスを確認する場合</h5><p class=\"note-s\">実際のX-Client-Request-IDと完全なレスポンスを保持してください。元の所有アセットと、その正確な署名付きコンテンツURLを読み取ってください。結果が不確かな作成リクエストは、決して再送信しないでください。</p></div><details class=\"card-about\" data-output-fields><summary>レスポンスのフィールド</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>フィールド</th><th>種類</th></tr></thead><tbody><tr><th data-cell-label=\"フィールド\" scope=\"row\"><span class=\"card-cell-label\">フィールド</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"種類\" data-field-type><span class=\"card-cell-label\">種類</span></td></tr><tr><th data-cell-label=\"フィールド\" scope=\"row\"><span class=\"card-cell-label\">フィールド</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"種類\" data-field-type><span class=\"card-cell-label\">種類</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>エラーと次の手順</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>レスポンス</th><th>条件</th><th>次の手順</th></tr></thead><tbody><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>JSON本文、または明示された正規モデルIDが無効です。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>レスポンスを保持し、指摘されたリクエストフィールドを修正してください。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>401 · <code>authentication_error</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>Ailoot APIキーが無効です。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>利用権限のあるAiloot APIキーを使用してください。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>403 · <code>permission_error</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>このキーのグループでは、このメソッドの利用が許可されていません。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>返されたエラーの詳細を保持してください。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>404 · <code>not_found_error</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>選択したメソッドには、利用が許可されたルートがありません。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>返されたエラーの詳細を保持してください。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>受諾済みの料金体系に必要な入力量、またはその上限を取得できません。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>レスポンスを保持し、受諾済みの料金体系で必要とされる入力表現を使用してください。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>503 · <code></code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>必要な保存領域、ルート、メソッド料金、または料金の仮押さえを利用できません。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>元のレスポンス全体を保持してください。料金の仮押さえ状態が不明でも、再送信が認められるわけではありません。</td></tr><tr><th data-cell-label=\"レスポンス\" scope=\"row\"><span class=\"card-cell-label\">レスポンス</span>502 · <code>server_error</code></th><td data-cell-label=\"条件\"><span class=\"card-cell-label\">条件</span>元の結果、使用量、または精算を確認する必要があります。</td><td data-cell-label=\"次の手順\"><span class=\"card-cell-label\">次の手順</span>実際のリクエストIDと元のレスポンスを保持してください。既存の所有レコードを読み取ってください。作成リクエストを再送信しないでください。</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">エイリアス</h3><h4>モデルのエイリアス</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></span></p><h4>メソッドパスのエイリアス</h4><p class=\"note-s\">上記に表示されたメソッドパスを使用してください。</p><h4>関連する呼び出し用ID</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "JSON本文、または明示された正規モデルIDが無効です。",
                "http_status": 400,
                "recovery": "レスポンスを保持し、指摘されたリクエストフィールドを修正してください。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot APIキーが無効です。",
                "http_status": 401,
                "recovery": "利用権限のあるAiloot APIキーを使用してください。",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "このキーのグループでは、このメソッドの利用が許可されていません。",
                "http_status": 403,
                "recovery": "返されたエラーの詳細を保持してください。",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "選択したメソッドには、利用が許可されたルートがありません。",
                "http_status": 404,
                "recovery": "返されたエラーの詳細を保持してください。",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "受諾済みの料金体系に必要な入力量、またはその上限を取得できません。",
                "http_status": 422,
                "recovery": "レスポンスを保持し、受諾済みの料金体系で必要とされる入力表現を使用してください。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "必要な保存領域、ルート、メソッド料金、または料金の仮押さえを利用できません。",
                "http_status": 503,
                "recovery": "元のレスポンス全体を保持してください。料金の仮押さえ状態が不明でも、再送信が認められるわけではありません。",
                "type": null
              },
              {
                "code": null,
                "condition": "元の結果、使用量、または精算を確認する必要があります。",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "実際のリクエストIDと元のレスポンスを保持してください。既存の所有レコードを読み取ってください。作成リクエストを再送信しないでください。",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "実際のX-Client-Request-IDと完全なレスポンスを保持してください。元の所有アセットと、その正確な署名付きコンテンツURLを読み取ってください。結果が不確かな作成リクエストは、決して再送信しないでください。"
            },
            "outputs": {
              "all_results": "レスポンスとヘッダーの全体、実際の出力すべて、最初に返された識別子、使用量フィールドすべてを保存してください。作成リクエストを再送せずに、元の操作を復旧してください。",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "元のレスポンス本文全体、ステータス、および転送されたヘッダー。このハンドラーは共通のJSON構造、テキストフィールド、タスクの外側の構造を追加しません。"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "この例では、実際の空でないPCM WAVファイルを読み込み、ファイル全体のバイト列をbase64にエンコードして、input_audio.formatをwavとして送信します。"
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "既存の所有メディアレコードにある正確なtask_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "文字起こし",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f08c114510940aa9d8e1b3594b3dc92b6e1a3cc4d23692023347ff0788332097",
    "input_html_sha256": "94980b41228199ca615e685ac8f3cfb228dc8bcaa26a6b31274c3a392c9ac8e9",
    "private_audit_sha256": "4a87d48ab24a9b63f8377fa090861ed1e67f57f6c15021089bcba44c35b1bf53",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ja/fish-audio-transcribe-1/",
    "description": "Transcribe 1は、短い音声録音を、自動言語検出と任意の単語単位タイムスタンプ付きでテキストに変換します。文字起こしは音声メモ、検索できるクリップ、字幕の準備に使えます。時刻付きの区間と、読みやすい全文は分けて保持してください。",
    "locale": "ja",
    "md_url": "https://ailoot.ai/models/ja/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/ja/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1は、短い録音向けのFish Audioの汎用音声認識モデルです。音声ファイルを受け取り、認識した言葉をテキストとして返します。録音の長さ、任意の時刻付き区間、判明した場合の言語情報も含まれます。短い音声メモ、口頭の指示、録音の抜粋、読みやすいテキスト表現が必要な音声クリップに便利です。\n\n音声メモのワークフロー例では、録音、文字起こし全文、元のクリップの識別子をまとめて保持します。後続のアプリケーション処理で、発話の原資料を残しながら、テキストの検索、メモの整理、要約の作成ができます。コマンドの場合、文字起こしは認識した言葉をアプリケーションに渡します。実際の操作は別の解釈と実行の段階です。インタビューの抜粋では、引用を正しい位置で照合できるよう、音声全体におけるクリップの位置を記録してください。\n\n提供元は、WAV、MP3、M4A/MP4を含むAAC、FLAC、OpusまたはVorbisを格納したOggに対応しています。ブラウザーで録音したWebMは、このモデルではOgg/Opus、MP3、WAVのいずれかに変換してください。Proのドキュメントには、追加のコンテナーへのネイティブ対応が記載されています。1リクエストにつき音声ファイルを1つ渡します。基本モデルの記載されたリクエスト上限は50 MiBで、MP3とOpusのファイルは25 MiB未満にします。ファイルサイズと録音時間は別の条件です。圧縮ファイルがアップロード枠に収まっても、処理に時間がかかりすぎる場合があります。\n\nTranscribe 1は短い録音向けです。提供元は数分を超える音声にはProを推奨しており、基本モデルで長い録音を処理すると、処理時間の上限を超えて失敗する可能性があります。長い資料を短いクリップに分けて文字起こしする場合は、各クリップの開始オフセットを保持し、結果を結合する前に、返された文字起こしがクリップ全体を網羅しているか確認します。区間内の時刻に元のオフセットを加え、録音全体の正しい位置へ移動できるようにします。基本モデルの案内を、Proの別の60分という枠と混同してはいけません。\n\n提供元の応答には、text、duration、segmentsが含まれます。長さは秒単位で、読みやすい文字起こし全文をクリップの主要な文面として保持します。タイムスタンプは任意です。提供元APIではignore_timestampsの既定値はtrueで、falseを指定すると、text、start、endを含む秒単位の単語別区間を要求します。アラインメントの要求には追加の処理時間がかかります。segmentsの配列が空でも、時刻情報を省略した、発話がない、アラインメントが一時的に利用できないなどの可能性があり、文字起こし全文まで空だと即断してはいけません。\n\n区間は通常は単語単位ですが、中国語と日本語では1文字または数文字のことがあります。区間のテキストは句読点を省き、全文と異なる形に数値などを正規化する場合もあります。読みやすい応答の文字単位の複製ではありません。開始時刻と終了時刻が同じ区間もあります。区間は録音内の位置検索や時刻に合わせた表示に使い、文面と句読点が重要な場合は全文を使います。成果物では、この2つの表現を分けて保持してください。\n\n任意の言語ヒントを指定してもしなくても、言語は自動検出されます。提供元はヒントに小文字のISO 639-1コードを指定し、判明した場合はアプリケーション処理用の言語コードと表示用の言語名を返すと説明しています。録音中に言語が切り替わっても、応答はすべての言語ではなく1つの言語を報告します。文字起こしを翻訳処理とみなさず、原語の文面と利用可能な言語メタデータを結果に保持してください。\n\n字幕のワークフローでは、1語ずつ表示せず、連続する時刻付き区間を読みやすい字幕キューにまとめます。元のクリップに結び付いたSRTまたはWebVTTファイルを作り、休止に合わせてキューを区切り、画面に表示して読み切れる量の文字を設定すると実用的です。時刻の欠落を確認し、各キューの終了が開始より後になるようにします。字幕のグループ化とファイル整形は、返されたアラインメントを利用するアプリケーション側の処理であり、表示方法はプレーヤーと視聴者に合わせてください。\n\nTranscribe 1に記載された制御は、音声、言語ヒント、タイムスタンプの選択です。Proの話者マーカー、構造化された話者ターン、感情イベントの制御、話者数ヒントは別の機能であり、この基本モデルの公開された応答仕様には含まれません。処理前に必要な成果物を決めます。メモなら読みやすい平文、再生位置への移動や字幕ならテキストとアラインメントです。クリップ識別子、文字起こし、取得できた時刻情報を残すことで、次のアプリケーション処理に役立つ結果になります。",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "構成の料金情報はすべて詳細で確認できます。"
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "JSON本文、または明示された正規モデルIDが無効です。",
                "http_status": 400,
                "recovery": "レスポンスを保持し、指摘されたリクエストフィールドを修正してください。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Ailoot APIキーが無効です。",
                "http_status": 401,
                "recovery": "利用権限のあるAiloot APIキーを使用してください。",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "このキーのグループでは、このメソッドの利用が許可されていません。",
                "http_status": 403,
                "recovery": "返されたエラーの詳細を保持してください。",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "選択したメソッドには、利用が許可されたルートがありません。",
                "http_status": 404,
                "recovery": "返されたエラーの詳細を保持してください。",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "受諾済みの料金体系に必要な入力量、またはその上限を取得できません。",
                "http_status": 422,
                "recovery": "レスポンスを保持し、受諾済みの料金体系で必要とされる入力表現を使用してください。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "必要な保存領域、ルート、メソッド料金、または料金の仮押さえを利用できません。",
                "http_status": 503,
                "recovery": "元のレスポンス全体を保持してください。料金の仮押さえ状態が不明でも、再送信が認められるわけではありません。",
                "type": null
              },
              {
                "code": null,
                "condition": "元の結果、使用量、または精算を確認する必要があります。",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "実際のリクエストIDと元のレスポンスを保持してください。既存の所有レコードを読み取ってください。作成リクエストを再送信しないでください。",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "実際のX-Client-Request-IDと完全なレスポンスを保持してください。元の所有アセットと、その正確な署名付きコンテンツURLを読み取ってください。結果が不確かな作成リクエストは、決して再送信しないでください。"
            },
            "outputs": {
              "all_results": "レスポンスとヘッダーの全体、実際の出力すべて、最初に返された識別子、使用量フィールドすべてを保存してください。作成リクエストを再送せずに、元の操作を復旧してください。",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "元のレスポンス本文全体、ステータス、および転送されたヘッダー。このハンドラーは共通のJSON構造、テキストフィールド、タスクの外側の構造を追加しません。"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "この例では、実際の空でないPCM WAVファイルを読み込み、ファイル全体のバイト列をbase64にエンコードして、input_audio.formatをwavとして送信します。"
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "既存の所有メディアレコードにある正確なtask_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "文字起こし",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Transcribe 1は、短い音声録音を、自動言語検出と任意の単語単位タイムスタンプ付きでテキストに変換します。文字起こしは音声メモ、検索できるクリップ、字幕の準備に使えます。時刻付きの区間と、読みやすい全文は分けて保持してください。"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Transcribe 1は、短い音声録音を、自動言語検出と任意の単語単位タイムスタンプ付きでテキストに変換します。文字起こしは音声メモ、検索できるクリップ、字幕の準備に使えます。時刻付きの区間と、読みやすい全文は分けて保持してください。",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "a321fcba26c9b77478eb4d67de1e1453021aba9578e480080b13ed7fd4f3c408",
    "renderer_sha256": "b06e5309d3e585ab5fe0535c1a8bd6320bdc357ea8509c2389320e8fa40c36e5"
  },
  "sourceRevision": "465d3b740ede392895f38c2ecf9fab9e78f5fc687d9a1f0a17ee380de0d180d7"
}
