{
  "aboutHtml": "<p>Transcribe 1 是 Fish Audio 用於短錄音的通用語音轉文字模型。它接受音訊檔，將辨識到的內容以文字傳回，並附上錄音時長、選用的定時片段，以及已知的語言資訊。此模型適合短語音筆記、口述指令、錄音摘錄，或需要可讀文字版本的音訊片段。</p><p>語音筆記流程可將錄音、完整逐字稿與原始片段識別碼一併保存。後續應用程式步驟可搜尋文字、整理筆記或產生摘要，同時保留口語來源。對指令而言，逐字稿提供應用程式辨識到的字詞；任何動作都屬於另一個解讀與執行步驟。處理訪談摘錄時，記錄片段在完整音訊中的位置，讓引文能回到正確位置核對。</p><p>開發商接受 WAV、MP3、AAC（包含 M4A/MP4）、FLAC，以及內含 Opus 或 Vorbis 的 Ogg。瀏覽器產生的 WebM 錄音，應先轉為 Ogg/Opus、MP3 或 WAV 再交給此模型；Pro 文件另載原生支援其他容器。每次請求提供一個音訊檔。基礎模型文件中的請求額度最高為 50 MiB，其中 MP3 與 Opus 檔須低於 25 MiB。檔案大小與錄音長度是不同考量：壓縮檔即使符合上傳額度，處理時間仍可能過長。</p><p>Transcribe 1 專為短錄音設計。開發商建議超過幾分鐘的音訊使用 Pro；基礎模型的長請求若超過處理時間限制，可能失敗。將較長來源切成短片段轉錄時，保留每段的起始偏移量，並確認回傳逐字稿涵蓋整個片段後再合併。在片段的局部時間加上原始偏移量，才能讓導覽對應完整錄音。基礎模型的指引不應解讀為 Pro 另有的 60 分鐘額度。</p><p>開發商回應包含 text、duration 與 segments。時長以秒表示，而便於閱讀的完整逐字稿應作為片段的主要文字內容。時間戳記為選用功能：開發商 API 的 ignore_timestamps 預設為 true；設為 false 則要求逐字片段，包含文字，以及以秒表示的開始與結束時間。要求對齊會增加處理時間。空的 segments 陣列可能表示略過時間資訊、沒有語音，或對齊暫時無法取得，不應自動解讀為完整逐字稿也是空白。</p><p>片段通常以單字為單位；中文與日文則可能是一個或少數幾個字。片段文字不含標點，數值正規化方式也可能與完整逐字稿不同，因此並非可讀回應的逐字元複本。片段開始與結束時間可以相同。尋找錄音位置或準備定時顯示時使用片段；重視措辭與標點時使用完整文字。產出成果中應區分這兩種表示方式。</p><p>無論有無提供選用的語言提示，語言都會自動偵測。開發商文件以小寫 ISO 639-1 代碼表示提示，並在已知時回傳供應用程式邏輯使用的語言代碼，以及供畫面顯示的語言名稱。回應只報告一種語言，不會列出切換語言錄音中的每種語言。將來源措辭與可取得的語言中繼資料隨結果保留，不要把轉錄請求當作翻譯操作。</p><p>字幕流程應將連續的定時片段組成便於閱讀的字幕單元，而非每次只顯示一個字。實用成果是連結原始片段的 SRT 或 WebVTT 檔，字幕邊界配合停頓，且畫面文字量容易閱讀。檢查是否缺少時間資訊，並確保每個字幕單元的結束晚於開始。字幕分組與檔案格式處理，是根據回傳對齊資訊進行的應用程式步驟；顯示方式應符合播放器與觀眾需求。</p><p>Transcribe 1 文件記載的控制項為音訊、語言提示與時間戳記選擇。Pro 的說話者標記、結構化說話輪次、情緒事件控制與說話者人數提示是不同功能，並非此基礎模型文件所定義的回應契約。處理前先決定所需成果：筆記使用便於閱讀的純文字；播放導覽與字幕則使用文字加上對齊資訊。保留片段識別碼、逐字稿與可取得的時間資訊，能讓結果供後續應用程式階段使用。</p>",
  "aboutText": "Transcribe 1 是 Fish Audio 用於短錄音的通用語音轉文字模型。它接受音訊檔，將辨識到的內容以文字傳回，並附上錄音時長、選用的定時片段，以及已知的語言資訊。此模型適合短語音筆記、口述指令、錄音摘錄，或需要可讀文字版本的音訊片段。\n\n語音筆記流程可將錄音、完整逐字稿與原始片段識別碼一併保存。後續應用程式步驟可搜尋文字、整理筆記或產生摘要，同時保留口語來源。對指令而言，逐字稿提供應用程式辨識到的字詞；任何動作都屬於另一個解讀與執行步驟。處理訪談摘錄時，記錄片段在完整音訊中的位置，讓引文能回到正確位置核對。\n\n開發商接受 WAV、MP3、AAC（包含 M4A/MP4）、FLAC，以及內含 Opus 或 Vorbis 的 Ogg。瀏覽器產生的 WebM 錄音，應先轉為 Ogg/Opus、MP3 或 WAV 再交給此模型；Pro 文件另載原生支援其他容器。每次請求提供一個音訊檔。基礎模型文件中的請求額度最高為 50 MiB，其中 MP3 與 Opus 檔須低於 25 MiB。檔案大小與錄音長度是不同考量：壓縮檔即使符合上傳額度，處理時間仍可能過長。\n\nTranscribe 1 專為短錄音設計。開發商建議超過幾分鐘的音訊使用 Pro；基礎模型的長請求若超過處理時間限制，可能失敗。將較長來源切成短片段轉錄時，保留每段的起始偏移量，並確認回傳逐字稿涵蓋整個片段後再合併。在片段的局部時間加上原始偏移量，才能讓導覽對應完整錄音。基礎模型的指引不應解讀為 Pro 另有的 60 分鐘額度。\n\n開發商回應包含 text、duration 與 segments。時長以秒表示，而便於閱讀的完整逐字稿應作為片段的主要文字內容。時間戳記為選用功能：開發商 API 的 ignore_timestamps 預設為 true；設為 false 則要求逐字片段，包含文字，以及以秒表示的開始與結束時間。要求對齊會增加處理時間。空的 segments 陣列可能表示略過時間資訊、沒有語音，或對齊暫時無法取得，不應自動解讀為完整逐字稿也是空白。\n\n片段通常以單字為單位；中文與日文則可能是一個或少數幾個字。片段文字不含標點，數值正規化方式也可能與完整逐字稿不同，因此並非可讀回應的逐字元複本。片段開始與結束時間可以相同。尋找錄音位置或準備定時顯示時使用片段；重視措辭與標點時使用完整文字。產出成果中應區分這兩種表示方式。\n\n無論有無提供選用的語言提示，語言都會自動偵測。開發商文件以小寫 ISO 639-1 代碼表示提示，並在已知時回傳供應用程式邏輯使用的語言代碼，以及供畫面顯示的語言名稱。回應只報告一種語言，不會列出切換語言錄音中的每種語言。將來源措辭與可取得的語言中繼資料隨結果保留，不要把轉錄請求當作翻譯操作。\n\n字幕流程應將連續的定時片段組成便於閱讀的字幕單元，而非每次只顯示一個字。實用成果是連結原始片段的 SRT 或 WebVTT 檔，字幕邊界配合停頓，且畫面文字量容易閱讀。檢查是否缺少時間資訊，並確保每個字幕單元的結束晚於開始。字幕分組與檔案格式處理，是根據回傳對齊資訊進行的應用程式步驟；顯示方式應符合播放器與觀眾需求。\n\nTranscribe 1 文件記載的控制項為音訊、語言提示與時間戳記選擇。Pro 的說話者標記、結構化說話輪次、情緒事件控制與說話者人數提示是不同功能，並非此基礎模型文件所定義的回應契約。處理前先決定所需成果：筆記使用便於閱讀的純文字；播放導覽與字幕則使用文字加上對齊資訊。保留片段識別碼、逐字稿與可取得的時間資訊，能讓結果供後續應用程式階段使用。",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0b6b843204e5852bb87c69aaad6644697b4b4b2983863dff09b1b3b314387182",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "zh-hant-tw",
  "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、AAC（包含 M4A/MP4）、FLAC，以及內含 Opus 或 Vorbis 的 Ogg。瀏覽器產生的 WebM 錄音，應先轉為 Ogg/Opus、MP3 或 WAV 再交給此模型；Pro 文件另載原生支援其他容器。每次請求提供一個音訊檔。基礎模型文件中的請求額度最高為 50 MiB，其中 MP3 與 Opus 檔須低於 25 MiB。檔案大小與錄音長度是不同考量：壓縮檔即使符合上傳額度，處理時間仍可能過長。</p><p>Transcribe 1 專為短錄音設計。開發商建議超過幾分鐘的音訊使用 Pro；基礎模型的長請求若超過處理時間限制，可能失敗。將較長來源切成短片段轉錄時，保留每段的起始偏移量，並確認回傳逐字稿涵蓋整個片段後再合併。在片段的局部時間加上原始偏移量，才能讓導覽對應完整錄音。基礎模型的指引不應解讀為 Pro 另有的 60 分鐘額度。</p><p>開發商回應包含 text、duration 與 segments。時長以秒表示，而便於閱讀的完整逐字稿應作為片段的主要文字內容。時間戳記為選用功能：開發商 API 的 ignore_timestamps 預設為 true；設為 false 則要求逐字片段，包含文字，以及以秒表示的開始與結束時間。要求對齊會增加處理時間。空的 segments 陣列可能表示略過時間資訊、沒有語音，或對齊暫時無法取得，不應自動解讀為完整逐字稿也是空白。</p><p>片段通常以單字為單位；中文與日文則可能是一個或少數幾個字。片段文字不含標點，數值正規化方式也可能與完整逐字稿不同，因此並非可讀回應的逐字元複本。片段開始與結束時間可以相同。尋找錄音位置或準備定時顯示時使用片段；重視措辭與標點時使用完整文字。產出成果中應區分這兩種表示方式。</p><p>無論有無提供選用的語言提示，語言都會自動偵測。開發商文件以小寫 ISO 639-1 代碼表示提示，並在已知時回傳供應用程式邏輯使用的語言代碼，以及供畫面顯示的語言名稱。回應只報告一種語言，不會列出切換語言錄音中的每種語言。將來源措辭與可取得的語言中繼資料隨結果保留，不要把轉錄請求當作翻譯操作。</p><p>字幕流程應將連續的定時片段組成便於閱讀的字幕單元，而非每次只顯示一個字。實用成果是連結原始片段的 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\">請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。</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>基礎 token 費率</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>輸入 · 輸入 Token</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸出 · 輸出 Token</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 讀取快取</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取，1 小時</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</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>每秒輸入音訊</td><td data-cell-label=\"費用\"><span class=\"card-cell-label\">費用</span><div><span>輸入 · 輸入音訊秒數</span> <b>$0.0002</b> <span class=\"price-unit\">每秒輸入音訊</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot 會在請求前預留估算金額。取得結果後，依實測用量結算最終費用。串流結算採用最終用量紀錄。<a href=\"/docs/zh-hant-tw/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\">請使用上方列出的 API 方法路徑。</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": "567980ce3ca8391edcd10ed8b3cc18f7b77b9aa83316fc7a799e7a47bb93d23d",
    "input_html_sha256": "8769eabd8c2ebddb366e3c6aaa3f4f507c07bf9929d0969e25e5956a605a1dde",
    "private_audit_sha256": "d1c0e4f1136dd852804714331635caed909416544e95b5ea7b1dd15ab626eaa7",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/zh-hant-tw/fish-audio-transcribe-1/",
    "description": "Transcribe 1 可將短錄音轉成文字，支援自動語言偵測與選用的逐字時間戳記。逐字稿可用於語音筆記、可搜尋片段或字幕製作；帶時間的片段應與便於閱讀的完整文字分開保存。",
    "locale": "zh-hant-tw",
    "md_url": "https://ailoot.ai/models/zh-hant-tw/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/zh-hant-tw/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1 是 Fish Audio 用於短錄音的通用語音轉文字模型。它接受音訊檔，將辨識到的內容以文字傳回，並附上錄音時長、選用的定時片段，以及已知的語言資訊。此模型適合短語音筆記、口述指令、錄音摘錄，或需要可讀文字版本的音訊片段。\n\n語音筆記流程可將錄音、完整逐字稿與原始片段識別碼一併保存。後續應用程式步驟可搜尋文字、整理筆記或產生摘要，同時保留口語來源。對指令而言，逐字稿提供應用程式辨識到的字詞；任何動作都屬於另一個解讀與執行步驟。處理訪談摘錄時，記錄片段在完整音訊中的位置，讓引文能回到正確位置核對。\n\n開發商接受 WAV、MP3、AAC（包含 M4A/MP4）、FLAC，以及內含 Opus 或 Vorbis 的 Ogg。瀏覽器產生的 WebM 錄音，應先轉為 Ogg/Opus、MP3 或 WAV 再交給此模型；Pro 文件另載原生支援其他容器。每次請求提供一個音訊檔。基礎模型文件中的請求額度最高為 50 MiB，其中 MP3 與 Opus 檔須低於 25 MiB。檔案大小與錄音長度是不同考量：壓縮檔即使符合上傳額度，處理時間仍可能過長。\n\nTranscribe 1 專為短錄音設計。開發商建議超過幾分鐘的音訊使用 Pro；基礎模型的長請求若超過處理時間限制，可能失敗。將較長來源切成短片段轉錄時，保留每段的起始偏移量，並確認回傳逐字稿涵蓋整個片段後再合併。在片段的局部時間加上原始偏移量，才能讓導覽對應完整錄音。基礎模型的指引不應解讀為 Pro 另有的 60 分鐘額度。\n\n開發商回應包含 text、duration 與 segments。時長以秒表示，而便於閱讀的完整逐字稿應作為片段的主要文字內容。時間戳記為選用功能：開發商 API 的 ignore_timestamps 預設為 true；設為 false 則要求逐字片段，包含文字，以及以秒表示的開始與結束時間。要求對齊會增加處理時間。空的 segments 陣列可能表示略過時間資訊、沒有語音，或對齊暫時無法取得，不應自動解讀為完整逐字稿也是空白。\n\n片段通常以單字為單位；中文與日文則可能是一個或少數幾個字。片段文字不含標點，數值正規化方式也可能與完整逐字稿不同，因此並非可讀回應的逐字元複本。片段開始與結束時間可以相同。尋找錄音位置或準備定時顯示時使用片段；重視措辭與標點時使用完整文字。產出成果中應區分這兩種表示方式。\n\n無論有無提供選用的語言提示，語言都會自動偵測。開發商文件以小寫 ISO 639-1 代碼表示提示，並在已知時回傳供應用程式邏輯使用的語言代碼，以及供畫面顯示的語言名稱。回應只報告一種語言，不會列出切換語言錄音中的每種語言。將來源措辭與可取得的語言中繼資料隨結果保留，不要把轉錄請求當作翻譯操作。\n\n字幕流程應將連續的定時片段組成便於閱讀的字幕單元，而非每次只顯示一個字。實用成果是連結原始片段的 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": "d53d5e7b3b9ce51fb038d7f18420f1d0abc28cac18347151fa40d13ced22cdd1",
    "renderer_sha256": "13a3fc1b22d07359278e2249d630bfc9bb9e6416c71ba53def933fb5a903660b"
  },
  "sourceRevision": "fadbe999b672f0405f5b15b13c9f4b75853a1f7ba56e7b0cd05d45f7a15e9841"
}
