{
  "aboutHtml": "<p>Universal-3.5 Pro 是 AssemblyAI 的語音辨識模型，可將錄製的語音轉成文字。在 Sync 規格下，短音訊片段會在單次回應中產生完整逐字稿。這適合語音訊息、按住說話輸入，以及應用程式已知錄音何時應結束的獨立對話輪次。</p><p>將音訊準備成範圍明確的片段。AssemblyAI 的 Sync 要求接受 80 毫秒至 120 秒的音訊，檔案大小上限為 40 MB。支援格式為 WAV，或有號 16 位元、小端序的原始 PCM。音訊可為單聲道或立體聲；立體聲會在內部混音為單聲道。支援的取樣率為 8、16、22.05、24、32、44.1 及 48 kHz。WAV 標頭會提供取樣率與聲道數；原始 PCM 則需要在轉錄設定中另外提供這些數值。</p><p>錄下完整語句，並保留語音的開頭與結尾。一個實用的原創任務例子，是包含產品名稱、訂單識別碼及請求的簡短產品支援語音訊息。保留來源片段，讓逐字稿能與這些重要細節核對。較長的錄音應使用適合長篇轉錄的工作流程，不要將短片段的時長限制視為整個模型的音訊容量規格。</p><p>結果包含完整逐字稿、附有逐詞信心分數的詞語清單，以及介於零與一之間的整體信心分數。結果也會提供提交音訊的時長及請求識別碼，讓文字能與原始片段保持關聯。可依詞語信心分數找出值得重新聆聽檢查的段落，尤其是對應用程式重要的名稱、數字及領域詞彙。</p><p>詞語時間戳記為選用功能，預設關閉。要求此功能時，每個完成對齊的詞語都可附有相對於片段起點、以毫秒表示的開始與結束時間。開發商的規格在詞語無法對齊時會省略這些數值，而不會編造近似時間。時間戳記在英語音訊上的準確度最佳。準備詞語反白、可搜尋的波形或字幕對齊時，明確保留缺漏的時間資訊，並在將文字作為完成的字幕軌使用前，先與錄音核對。</p><p>上下文提示用來描述錄音的主題。它可以指定領域、情境，或應用程式已知的特定細節，長度上限為 6000 個字元。先使用符合音訊的簡短描述，例如針對特定裝置的技術支援對話。提示提供辨識上下文，並不是要求將說話者的訊息改寫成另一種文件。</p><p>獨立的關鍵詞清單可讓辨識偏向特定詞彙。Sync 規格最多接受 100 個詞語，整份清單合計上限為 8000 個字元。對於少見名稱、縮寫或產品術語，使用精確拼寫；一般容易辨識的詞語則不必加入。過長或不必要的詞語清單可能導致過度更正，因此應聚焦於錄音中重要的詞語。上下文描述與詞彙清單可以一起使用。</p><p>先前的對話也有助於解讀簡短回覆。依時間順序由舊到新提供先前語句，而目前音訊仍是本次要轉錄的輪次。文件所列的上下文額度為 500 個輪次，或總計 16,000 個字元。若超過這些上限或模型可用上下文，會先移除最舊的項目。當簡短回答包含識別碼，或其指涉意義來自前一個問題時，這項功能特別有用。</p><p>語言選擇會將辨識導向一種或多種預期語言。目前 Sync 介面接受 32 種語言代碼；未指定時預設使用英語。對於語碼轉換音訊，列出預期出現的語言。自訂上下文提示會取代系統管理的預設提示，並覆寫獨立的語言代碼引導，因此同時需要語言與情境上下文時，請在該提示中寫明預期語言。逐字稿應保留實際說出的語言，不要將轉錄視為翻譯指令。</p><p>此模型也用於其他 AssemblyAI 轉錄工作流程，但 Sync 規格的短片段要求與結果欄位屬於此特定介面。開發商的 Dictation 工作流程另外加入文字清理階段；逐字稿與改寫後的訊息是不同產出。若後續編輯或摘要步驟產生整理後的版本，應保留辨識出的語音文字，讓原始措辭仍可供比較。</p><p>實用產出包括轉錄後的語音訊息、助理的一個完整對話輪次、可供搜尋的短音訊文字，或供審閱介面使用的詞語時間清單。依錄音核對關鍵詞語、保留任何缺漏的對齊資訊，並維持片段與傳回文字的關聯。辨識結果為應用程式的下一步提供有來源依據的轉錄；回答請求或編輯訊息，則屬於外圍工作流程。</p>",
  "aboutText": "Universal-3.5 Pro 是 AssemblyAI 的語音辨識模型，可將錄製的語音轉成文字。在 Sync 規格下，短音訊片段會在單次回應中產生完整逐字稿。這適合語音訊息、按住說話輸入，以及應用程式已知錄音何時應結束的獨立對話輪次。\n\n將音訊準備成範圍明確的片段。AssemblyAI 的 Sync 要求接受 80 毫秒至 120 秒的音訊，檔案大小上限為 40 MB。支援格式為 WAV，或有號 16 位元、小端序的原始 PCM。音訊可為單聲道或立體聲；立體聲會在內部混音為單聲道。支援的取樣率為 8、16、22.05、24、32、44.1 及 48 kHz。WAV 標頭會提供取樣率與聲道數；原始 PCM 則需要在轉錄設定中另外提供這些數值。\n\n錄下完整語句，並保留語音的開頭與結尾。一個實用的原創任務例子，是包含產品名稱、訂單識別碼及請求的簡短產品支援語音訊息。保留來源片段，讓逐字稿能與這些重要細節核對。較長的錄音應使用適合長篇轉錄的工作流程，不要將短片段的時長限制視為整個模型的音訊容量規格。\n\n結果包含完整逐字稿、附有逐詞信心分數的詞語清單，以及介於零與一之間的整體信心分數。結果也會提供提交音訊的時長及請求識別碼，讓文字能與原始片段保持關聯。可依詞語信心分數找出值得重新聆聽檢查的段落，尤其是對應用程式重要的名稱、數字及領域詞彙。\n\n詞語時間戳記為選用功能，預設關閉。要求此功能時，每個完成對齊的詞語都可附有相對於片段起點、以毫秒表示的開始與結束時間。開發商的規格在詞語無法對齊時會省略這些數值，而不會編造近似時間。時間戳記在英語音訊上的準確度最佳。準備詞語反白、可搜尋的波形或字幕對齊時，明確保留缺漏的時間資訊，並在將文字作為完成的字幕軌使用前，先與錄音核對。\n\n上下文提示用來描述錄音的主題。它可以指定領域、情境，或應用程式已知的特定細節，長度上限為 6000 個字元。先使用符合音訊的簡短描述，例如針對特定裝置的技術支援對話。提示提供辨識上下文，並不是要求將說話者的訊息改寫成另一種文件。\n\n獨立的關鍵詞清單可讓辨識偏向特定詞彙。Sync 規格最多接受 100 個詞語，整份清單合計上限為 8000 個字元。對於少見名稱、縮寫或產品術語，使用精確拼寫；一般容易辨識的詞語則不必加入。過長或不必要的詞語清單可能導致過度更正，因此應聚焦於錄音中重要的詞語。上下文描述與詞彙清單可以一起使用。\n\n先前的對話也有助於解讀簡短回覆。依時間順序由舊到新提供先前語句，而目前音訊仍是本次要轉錄的輪次。文件所列的上下文額度為 500 個輪次，或總計 16,000 個字元。若超過這些上限或模型可用上下文，會先移除最舊的項目。當簡短回答包含識別碼，或其指涉意義來自前一個問題時，這項功能特別有用。\n\n語言選擇會將辨識導向一種或多種預期語言。目前 Sync 介面接受 32 種語言代碼；未指定時預設使用英語。對於語碼轉換音訊，列出預期出現的語言。自訂上下文提示會取代系統管理的預設提示，並覆寫獨立的語言代碼引導，因此同時需要語言與情境上下文時，請在該提示中寫明預期語言。逐字稿應保留實際說出的語言，不要將轉錄視為翻譯指令。\n\n此模型也用於其他 AssemblyAI 轉錄工作流程，但 Sync 規格的短片段要求與結果欄位屬於此特定介面。開發商的 Dictation 工作流程另外加入文字清理階段；逐字稿與改寫後的訊息是不同產出。若後續編輯或摘要步驟產生整理後的版本，應保留辨識出的語音文字，讓原始措辭仍可供比較。\n\n實用產出包括轉錄後的語音訊息、助理的一個完整對話輪次、可供搜尋的短音訊文字，或供審閱介面使用的詞語時間清單。依錄音核對關鍵詞語、保留任何缺漏的對齊資訊，並維持片段與傳回文字的關聯。辨識結果為應用程式的下一步提供有來源依據的轉錄；回答請求或編輯訊息，則屬於外圍工作流程。",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "7fca4ded2a34250fbeb2e753e21134b8fb66595fe1c579d282039e864634458d",
    "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\">AssemblyAI: Universal-3.5 Pro</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"關閉\">×</button></div><div class=\"idline\"><span>AssemblyAI /</span><code>assemblyai/universal-3-5-pro</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|assemblyai%2Funiversal-3-5-pro\">辨識</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\">Universal-3.5 Pro 是 AssemblyAI 的語音轉文字模型，可在單次回應中將短音訊片段轉為完整逐字稿。其 Sync 規格加入詞語信心分數、選用的詞語時間戳記、詞彙提示及先前對話上下文，適用於語音輸入與按住說話工作流程。</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>Universal-3.5 Pro 是 AssemblyAI 的語音辨識模型，可將錄製的語音轉成文字。在 Sync 規格下，短音訊片段會在單次回應中產生完整逐字稿。這適合語音訊息、按住說話輸入，以及應用程式已知錄音何時應結束的獨立對話輪次。</p><p>將音訊準備成範圍明確的片段。AssemblyAI 的 Sync 要求接受 80 毫秒至 120 秒的音訊，檔案大小上限為 40 MB。支援格式為 WAV，或有號 16 位元、小端序的原始 PCM。音訊可為單聲道或立體聲；立體聲會在內部混音為單聲道。支援的取樣率為 8、16、22.05、24、32、44.1 及 48 kHz。WAV 標頭會提供取樣率與聲道數；原始 PCM 則需要在轉錄設定中另外提供這些數值。</p><p>錄下完整語句，並保留語音的開頭與結尾。一個實用的原創任務例子，是包含產品名稱、訂單識別碼及請求的簡短產品支援語音訊息。保留來源片段，讓逐字稿能與這些重要細節核對。較長的錄音應使用適合長篇轉錄的工作流程，不要將短片段的時長限制視為整個模型的音訊容量規格。</p><p>結果包含完整逐字稿、附有逐詞信心分數的詞語清單，以及介於零與一之間的整體信心分數。結果也會提供提交音訊的時長及請求識別碼，讓文字能與原始片段保持關聯。可依詞語信心分數找出值得重新聆聽檢查的段落，尤其是對應用程式重要的名稱、數字及領域詞彙。</p><p>詞語時間戳記為選用功能，預設關閉。要求此功能時，每個完成對齊的詞語都可附有相對於片段起點、以毫秒表示的開始與結束時間。開發商的規格在詞語無法對齊時會省略這些數值，而不會編造近似時間。時間戳記在英語音訊上的準確度最佳。準備詞語反白、可搜尋的波形或字幕對齊時，明確保留缺漏的時間資訊，並在將文字作為完成的字幕軌使用前，先與錄音核對。</p><p>上下文提示用來描述錄音的主題。它可以指定領域、情境，或應用程式已知的特定細節，長度上限為 6000 個字元。先使用符合音訊的簡短描述，例如針對特定裝置的技術支援對話。提示提供辨識上下文，並不是要求將說話者的訊息改寫成另一種文件。</p><p>獨立的關鍵詞清單可讓辨識偏向特定詞彙。Sync 規格最多接受 100 個詞語，整份清單合計上限為 8000 個字元。對於少見名稱、縮寫或產品術語，使用精確拼寫；一般容易辨識的詞語則不必加入。過長或不必要的詞語清單可能導致過度更正，因此應聚焦於錄音中重要的詞語。上下文描述與詞彙清單可以一起使用。</p><p>先前的對話也有助於解讀簡短回覆。依時間順序由舊到新提供先前語句，而目前音訊仍是本次要轉錄的輪次。文件所列的上下文額度為 500 個輪次，或總計 16,000 個字元。若超過這些上限或模型可用上下文，會先移除最舊的項目。當簡短回答包含識別碼，或其指涉意義來自前一個問題時，這項功能特別有用。</p><p>語言選擇會將辨識導向一種或多種預期語言。目前 Sync 介面接受 32 種語言代碼；未指定時預設使用英語。對於語碼轉換音訊，列出預期出現的語言。自訂上下文提示會取代系統管理的預設提示，並覆寫獨立的語言代碼引導，因此同時需要語言與情境上下文時，請在該提示中寫明預期語言。逐字稿應保留實際說出的語言，不要將轉錄視為翻譯指令。</p><p>此模型也用於其他 AssemblyAI 轉錄工作流程，但 Sync 規格的短片段要求與結果欄位屬於此特定介面。開發商的 Dictation 工作流程另外加入文字清理階段；逐字稿與改寫後的訊息是不同產出。若後續編輯或摘要步驟產生整理後的版本，應保留辨識出的語音文字，讓原始措辭仍可供比較。</p><p>實用產出包括轉錄後的語音訊息、助理的一個完整對話輪次、可供搜尋的短音訊文字，或供審閱介面使用的詞語時間清單。依錄音核對關鍵詞語、保留任何缺漏的對齊資訊，並維持片段與傳回文字的關聯。辨識結果為應用程式的下一步提供有來源依據的轉錄；回答請求或編輯訊息，則屬於外圍工作流程。</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>assemblyai/universal-3-5-pro</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.00025</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-1073-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1073-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-1073-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1073-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;assemblyai/universal-3-5-pro&#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=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></span></p><h4>方法路徑別名</h4><p class=\"note-s\">請使用上方列出的 API 方法路徑。</p><h4>相關呼叫用 ID</h4><p class=\"note-s\"><a href=\"#m=assemblyai%2Funiversal-3-5-pro&amp;route=Ultra&amp;caller=assemblyai%2Funiversal-3-5-pro&amp;fmt=transcriptions\"><code>assemblyai/universal-3-5-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "assemblyai/universal-3-5-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|assemblyai%2Funiversal-3-5-pro",
      "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "4adec5d05c9f41e7b1361aacb358c3732e5062d09f27040413873ed2ee47f514",
    "input_html_sha256": "33032a79652d804630e0ce4dafd195639c6ef46525dc1173a677f4f5942d7bd7",
    "private_audit_sha256": "da4ddf0a1ddbe32e2ad050746f50e77201cc499352ef2ff03f8ae3edca3fbf41",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/zh-hant-tw/assemblyai-universal-3-5-pro/",
    "description": "Universal-3.5 Pro 是 AssemblyAI 的語音轉文字模型，可在單次回應中將短音訊片段轉為完整逐字稿。其 Sync 規格加入詞語信心分數、選用的詞語時間戳記、詞彙提示及先前對話上下文，適用於語音輸入與按住說話工作流程。",
    "locale": "zh-hant-tw",
    "md_url": "https://ailoot.ai/models/zh-hant-tw/assemblyai-universal-3-5-pro/index.md",
    "title": "AssemblyAI: Universal-3.5 Pro — Ailoot",
    "url": "https://ailoot.ai/models/zh-hant-tw/assemblyai-universal-3-5-pro/"
  },
  "rawModel": {
    "about": "Universal-3.5 Pro 是 AssemblyAI 的語音辨識模型，可將錄製的語音轉成文字。在 Sync 規格下，短音訊片段會在單次回應中產生完整逐字稿。這適合語音訊息、按住說話輸入，以及應用程式已知錄音何時應結束的獨立對話輪次。\n\n將音訊準備成範圍明確的片段。AssemblyAI 的 Sync 要求接受 80 毫秒至 120 秒的音訊，檔案大小上限為 40 MB。支援格式為 WAV，或有號 16 位元、小端序的原始 PCM。音訊可為單聲道或立體聲；立體聲會在內部混音為單聲道。支援的取樣率為 8、16、22.05、24、32、44.1 及 48 kHz。WAV 標頭會提供取樣率與聲道數；原始 PCM 則需要在轉錄設定中另外提供這些數值。\n\n錄下完整語句，並保留語音的開頭與結尾。一個實用的原創任務例子，是包含產品名稱、訂單識別碼及請求的簡短產品支援語音訊息。保留來源片段，讓逐字稿能與這些重要細節核對。較長的錄音應使用適合長篇轉錄的工作流程，不要將短片段的時長限制視為整個模型的音訊容量規格。\n\n結果包含完整逐字稿、附有逐詞信心分數的詞語清單，以及介於零與一之間的整體信心分數。結果也會提供提交音訊的時長及請求識別碼，讓文字能與原始片段保持關聯。可依詞語信心分數找出值得重新聆聽檢查的段落，尤其是對應用程式重要的名稱、數字及領域詞彙。\n\n詞語時間戳記為選用功能，預設關閉。要求此功能時，每個完成對齊的詞語都可附有相對於片段起點、以毫秒表示的開始與結束時間。開發商的規格在詞語無法對齊時會省略這些數值，而不會編造近似時間。時間戳記在英語音訊上的準確度最佳。準備詞語反白、可搜尋的波形或字幕對齊時，明確保留缺漏的時間資訊，並在將文字作為完成的字幕軌使用前，先與錄音核對。\n\n上下文提示用來描述錄音的主題。它可以指定領域、情境，或應用程式已知的特定細節，長度上限為 6000 個字元。先使用符合音訊的簡短描述，例如針對特定裝置的技術支援對話。提示提供辨識上下文，並不是要求將說話者的訊息改寫成另一種文件。\n\n獨立的關鍵詞清單可讓辨識偏向特定詞彙。Sync 規格最多接受 100 個詞語，整份清單合計上限為 8000 個字元。對於少見名稱、縮寫或產品術語，使用精確拼寫；一般容易辨識的詞語則不必加入。過長或不必要的詞語清單可能導致過度更正，因此應聚焦於錄音中重要的詞語。上下文描述與詞彙清單可以一起使用。\n\n先前的對話也有助於解讀簡短回覆。依時間順序由舊到新提供先前語句，而目前音訊仍是本次要轉錄的輪次。文件所列的上下文額度為 500 個輪次，或總計 16,000 個字元。若超過這些上限或模型可用上下文，會先移除最舊的項目。當簡短回答包含識別碼，或其指涉意義來自前一個問題時，這項功能特別有用。\n\n語言選擇會將辨識導向一種或多種預期語言。目前 Sync 介面接受 32 種語言代碼；未指定時預設使用英語。對於語碼轉換音訊，列出預期出現的語言。自訂上下文提示會取代系統管理的預設提示，並覆寫獨立的語言代碼引導，因此同時需要語言與情境上下文時，請在該提示中寫明預期語言。逐字稿應保留實際說出的語言，不要將轉錄視為翻譯指令。\n\n此模型也用於其他 AssemblyAI 轉錄工作流程，但 Sync 規格的短片段要求與結果欄位屬於此特定介面。開發商的 Dictation 工作流程另外加入文字清理階段；逐字稿與改寫後的訊息是不同產出。若後續編輯或摘要步驟產生整理後的版本，應保留辨識出的語音文字，讓原始措辭仍可供比較。\n\n實用產出包括轉錄後的語音訊息、助理的一個完整對話輪次、可供搜尋的短音訊文字，或供審閱介面使用的詞語時間清單。依錄音核對關鍵詞語、保留任何缺漏的對齊資訊，並維持片段與傳回文字的關聯。辨識結果為應用程式的下一步提供有來源依據的轉錄；回答請求或編輯訊息，則屬於外圍工作流程。",
    "alias_of": null,
    "aliases": [],
    "author": "AssemblyAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
    "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": [
                  "assemblyai/universal-3-5-pro"
                ],
                "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": [
                    "assemblyai/universal-3-5-pro"
                  ],
                  "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": "assemblyai/universal-3-5-pro"
              },
              "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.00025",
                "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.00025",
                "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': 'assemblyai/universal-3-5-pro', '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.00025
          }
        },
        "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.00025",
                "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.00025",
                "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": "assemblyai/universal-3-5-pro",
        "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.00025",
            "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.00025",
            "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": "assemblyai/universal-3-5-pro",
        "request_model_id": "assemblyai/universal-3-5-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "AssemblyAI: Universal-3.5 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Universal-3.5 Pro 是 AssemblyAI 的語音轉文字模型，可在單次回應中將短音訊片段轉為完整逐字稿。其 Sync 規格加入詞語信心分數、選用的詞語時間戳記、詞彙提示及先前對話上下文，適用於語音輸入與按住說話工作流程。"
  },
  "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": "Universal-3.5 Pro 是 AssemblyAI 的語音轉文字模型，可在單次回應中將短音訊片段轉為完整逐字稿。其 Sync 規格加入詞語信心分數、選用的詞語時間戳記、詞彙提示及先前對話上下文，適用於語音輸入與按住說話工作流程。",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "57821a88cbd7127d88cd35618a9005dcb2cdab5c5295177deb42179b7e42e86b",
    "renderer_sha256": "13a3fc1b22d07359278e2249d630bfc9bb9e6416c71ba53def933fb5a903660b"
  },
  "sourceRevision": "b645c1d531aae9b85f47d47f7f66e0c3bd33b67f6d43f5e28eb76dcfedb15ecc"
}
