{
  "aboutHtml": "<p>Transcribe 1 Pro เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Fish Audio สำหรับคลิปสั้น บทสนทนาหลายผู้พูด และบันทึกเสียงยาว รับเสียงที่บันทึกแล้วคืนบทถอดเสียง พร้อมข้อมูลเวลาที่เลือกขอได้และช่วงผลัดพูดที่มีโครงสร้าง จุดต่างคือเครื่องหมายเปลี่ยนผู้พูดในข้อความและสัญญาณอารมณ์หรือเหตุการณ์การใช้เสียง ซึ่งเก็บโครงสร้างบทสนทนาได้มากกว่าลำดับคำธรรมดา</p><p>สำหรับสัมภาษณ์ ประชุม หรือพอดแคสต์ ให้เก็บบทสนทนาครบในไฟล์เดียว เพื่อให้ผู้พูดที่กลับมาพูดอีกยังใช้ป้ายเดียวกันภายในคำตอบ สิ่งส่งมอบเพื่อตรวจที่มีประโยชน์คือบทถอดเสียงที่เชื่อมกับบันทึกต้นฉบับ แสดงผลัดพูดแยกกัน และมี timestamp ใช้ตรวจคำอ้าง สรุปหรือรายการสิ่งที่ต้องทำเป็นขั้นตอนแอปพลิเคชันภายหลัง ให้แยกจากบทถอดเสียงเพื่อให้ยังเปรียบเทียบกับแหล่งเสียงได้</p><p>ผู้ผลิตรับบันทึกเสียงสูงสุด 60 นาที และอธิบายการประมวลผลไฟล์ยาวด้วยเสียงบีบอัดอย่าง MP3, Opus หรือ AAC รูปแบบที่รองรับรวม WAV, MP3, AAC ใน M4A หรือ MP4, FLAC, Ogg ที่ใช้ Opus หรือ Vorbis, WebM/Matroska และ MOV สำหรับวิดีโอ ใช้แทร็กเสียงแรก ไม่รองรับ AIFF, CAF, WMA, AMR, AC-3 และ PCM ดิบที่ไม่มี header ให้ไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ผลมาหลังถอดเสียงทั้งบันทึกเสร็จ และบันทึกยาวอาจใช้เวลาหลายนาที คลิปสั้นกว่าประมาณ 0.08 วินาทีถูกปฏิเสธ</p><p>คำตอบผู้ผลิตมีข้อความเต็ม ความยาวบันทึกเป็นวินาที และอาร์เรย์ segments Pro ทำเครื่องหมายเปลี่ยนผู้พูดในข้อความด้วยป้ายอย่าง &lt;|speaker:0|&gt; และ &lt;|speaker:1|&gt; ป้ายใช้กับข้อความถัดไปจนถึงเครื่องหมายต่อไป นี่เป็นตัวระบุภายในคำตอบเดียว ไม่ใช่ชื่อหรือบุคคลที่ตรวจยืนยันแล้วและจับคู่ข้ามคำขอได้ หากไม่มีเครื่องหมายผู้พูด คู่มือถือว่าเป็นผลผู้พูดเดียว เก็บข้อความก่อนเครื่องหมายแรกไว้กับผลัดพูดแรก แทนการทิ้ง</p><p>Timestamp ระดับคำเป็นทางเลือก ในคำขอผู้ผลิต ignore_timestamps เริ่มต้นเป็น true ตั้ง false เพื่อขอ segments ที่มีข้อความ เวลาเริ่มและจบเป็นวินาที เซกเมนต์โดยทั่วไปคือหนึ่งคำ หรือหนึ่งอักขระหรือไม่กี่ตัวในภาษาจีนและญี่ปุ่น ข้อความเซกเมนต์ไม่รวมวรรคตอน เครื่องหมายผู้พูด และสัญญาณเหตุการณ์ และอาจปรับรูปค่าที่พูดต่างจากบทถอดเสียงเต็ม เวลาเริ่มและจบของคำอาจเท่ากันได้ อาร์เรย์ segments ว่างอาจหมายถึงไม่ได้ขอเวลา ไม่พบเสียงพูด หรือข้อมูลเวลายังใช้ไม่ได้ชั่วคราว ใช้บทถอดเสียงเต็มสำหรับถ้อยคำอ่านรู้เรื่อง และ segments สำหรับจัดแนว แทนการสมมติว่าสองสตริงตรงกันทุกอักขระ</p><p>diarize เริ่มต้นเป็น auto เมื่อขอ timestamp และ diarize ไม่ใช่ false Pro ยังคืน speaker_turns แต่ละผลัดพูดมีป้ายผู้พูด ข้อความ และเวลาเริ่ม/จบ โดยเก็บวรรคตอนและสัญญาณที่รักษาไว้ แต่ไม่มีเครื่องหมายผู้พูดในข้อความ หากไม่มีเวลารายคำ เวลาผลัดพูดอาจเป็นค่าประมาณและครอบคลุมทั้งบันทึก ผลัดพูดติดกันไม่จำเป็นต้องต่อเนื่องหรือไม่ทับกัน ปิด diarize จะเอารายการผลัดพูดมีโครงสร้างออก แต่ยังมีเครื่องหมายผู้พูดในข้อความเต็ม จำนวนผู้พูดที่ทราบ หรือจำนวนขั้นต่ำและสูงสุด ช่วยชี้นำการแยกผู้พูดในบันทึกยาวแบบทำเท่าที่ได้ จำนวนแน่นอนไม่ใช้ร่วมกับขอบจำนวน และไม่ใช้คำแนะนำจำนวนเมื่อปิด diarize</p><p>สัญญาณอารมณ์และเหตุการณ์การใช้เสียงปรากฏเป็นข้อความในวงเล็บเหลี่ยม เช่น [laughter] ข้างเสียงพูดที่รู้จำ เป็นการอนุมานจากเสียง ไม่ใช่คำที่ผู้ใช้ต้องเพิ่มก่อนถอดเสียง tag_audio_events ของ Pro เริ่มต้นเป็น true ปิดแล้วลบสัญญาณเหล่านี้จากบทถอดเสียงและข้อความผลัดพูดโดยไม่เปลี่ยนเวลา ไม่มีฟิลด์อารมณ์แยกหรือรายการอารมณ์ตายตัว เก็บบทถอดเสียงมีคำกำกับเมื่อเสียงของคำพูดสำคัญ และใช้รุ่นไม่มีสัญญาณเมื่อสิ่งส่งมอบขั้นถัดไปต้องการเฉพาะคำที่พูด</p><p>ตรวจภาษาโดยอัตโนมัติ คำแนะนำ ISO 639-1 ตัวพิมพ์เล็กที่เลือกใส่ได้ไม่ได้บังคับแปลหรือเปลี่ยนบทถอดเสียง Pro หากระบุภาษาไม่ได้ รหัสภาษาที่คืนมาอาจสะท้อนคำแนะนำโดยไม่ตรวจเทียบเสียง ผู้ผลิตรายงานหนึ่งภาษา แทนรายการทุกภาษาในบันทึกหลายภาษา เก็บถ้อยคำต้นฉบับกับเมทาดาทาภาษาไว้ด้วยกันเมื่อเตรียมคลังที่ค้นได้ โดยเฉพาะเมื่อส่วนต่าง ๆ ของบทสนทนาสลับภาษา</p><p>สำหรับคำบรรยาย ให้รวมคำต่อเนื่องที่มีเวลาเป็นช่วง SRT หรือ WebVTT ที่อ่านง่าย แทนหนึ่งคำต่อหนึ่งคำบรรยาย แยกช่วงตามจังหวะหยุด และเลือกความยาวกับเวลาแสดงให้เหมาะเครื่องเล่นและผู้ชม ขอบผลัดพูดช่วยให้ผู้พูดต่างกันอยู่คนละช่วงได้ ตรวจผลเวลาที่ว่างและช่วงคำบรรยายที่เวลาจบต้องหลังเวลาเริ่ม การจัดรูปคำบรรยาย การตั้งชื่อป้ายผู้พูดนิรนาม และสรุปภายหลังเป็นสิ่งส่งมอบแอปพลิเคชันที่สร้างจากผลถอดเสียง</p><p>สำหรับเวิร์กโฟลว์บันทึกเสียงจริง ให้ตัดสินก่อนถอดว่าจะต้องการบทถอดเสียงธรรมดาที่อ่านรู้เรื่อง ผลัดพูดที่มีคำกำกับ หรือคำบรรยายมีเวลา เก็บตัวระบุเสียงกับผล รักษาข้อความเต็มที่คืนมาเมื่อวรรคตอนและสัญญาณสำคัญ และใช้ฟิลด์เวลามีโครงสร้างเพื่อนำทาง ความสามารถบันทึกยาวและหลายผู้พูดของ Pro แยกจากโมเดล Transcribe 1 ทั่วไปสำหรับบันทึกสั้น ไม่ควรถือว่าขีดจำกัดและการควบคุมสลับใช้กันได้</p>",
  "aboutText": "Transcribe 1 Pro เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Fish Audio สำหรับคลิปสั้น บทสนทนาหลายผู้พูด และบันทึกเสียงยาว รับเสียงที่บันทึกแล้วคืนบทถอดเสียง พร้อมข้อมูลเวลาที่เลือกขอได้และช่วงผลัดพูดที่มีโครงสร้าง จุดต่างคือเครื่องหมายเปลี่ยนผู้พูดในข้อความและสัญญาณอารมณ์หรือเหตุการณ์การใช้เสียง ซึ่งเก็บโครงสร้างบทสนทนาได้มากกว่าลำดับคำธรรมดา\n\nสำหรับสัมภาษณ์ ประชุม หรือพอดแคสต์ ให้เก็บบทสนทนาครบในไฟล์เดียว เพื่อให้ผู้พูดที่กลับมาพูดอีกยังใช้ป้ายเดียวกันภายในคำตอบ สิ่งส่งมอบเพื่อตรวจที่มีประโยชน์คือบทถอดเสียงที่เชื่อมกับบันทึกต้นฉบับ แสดงผลัดพูดแยกกัน และมี timestamp ใช้ตรวจคำอ้าง สรุปหรือรายการสิ่งที่ต้องทำเป็นขั้นตอนแอปพลิเคชันภายหลัง ให้แยกจากบทถอดเสียงเพื่อให้ยังเปรียบเทียบกับแหล่งเสียงได้\n\nผู้ผลิตรับบันทึกเสียงสูงสุด 60 นาที และอธิบายการประมวลผลไฟล์ยาวด้วยเสียงบีบอัดอย่าง MP3, Opus หรือ AAC รูปแบบที่รองรับรวม WAV, MP3, AAC ใน M4A หรือ MP4, FLAC, Ogg ที่ใช้ Opus หรือ Vorbis, WebM/Matroska และ MOV สำหรับวิดีโอ ใช้แทร็กเสียงแรก ไม่รองรับ AIFF, CAF, WMA, AMR, AC-3 และ PCM ดิบที่ไม่มี header ให้ไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ผลมาหลังถอดเสียงทั้งบันทึกเสร็จ และบันทึกยาวอาจใช้เวลาหลายนาที คลิปสั้นกว่าประมาณ 0.08 วินาทีถูกปฏิเสธ\n\nคำตอบผู้ผลิตมีข้อความเต็ม ความยาวบันทึกเป็นวินาที และอาร์เรย์ segments Pro ทำเครื่องหมายเปลี่ยนผู้พูดในข้อความด้วยป้ายอย่าง <|speaker:0|> และ <|speaker:1|> ป้ายใช้กับข้อความถัดไปจนถึงเครื่องหมายต่อไป นี่เป็นตัวระบุภายในคำตอบเดียว ไม่ใช่ชื่อหรือบุคคลที่ตรวจยืนยันแล้วและจับคู่ข้ามคำขอได้ หากไม่มีเครื่องหมายผู้พูด คู่มือถือว่าเป็นผลผู้พูดเดียว เก็บข้อความก่อนเครื่องหมายแรกไว้กับผลัดพูดแรก แทนการทิ้ง\n\nTimestamp ระดับคำเป็นทางเลือก ในคำขอผู้ผลิต ignore_timestamps เริ่มต้นเป็น true ตั้ง false เพื่อขอ segments ที่มีข้อความ เวลาเริ่มและจบเป็นวินาที เซกเมนต์โดยทั่วไปคือหนึ่งคำ หรือหนึ่งอักขระหรือไม่กี่ตัวในภาษาจีนและญี่ปุ่น ข้อความเซกเมนต์ไม่รวมวรรคตอน เครื่องหมายผู้พูด และสัญญาณเหตุการณ์ และอาจปรับรูปค่าที่พูดต่างจากบทถอดเสียงเต็ม เวลาเริ่มและจบของคำอาจเท่ากันได้ อาร์เรย์ segments ว่างอาจหมายถึงไม่ได้ขอเวลา ไม่พบเสียงพูด หรือข้อมูลเวลายังใช้ไม่ได้ชั่วคราว ใช้บทถอดเสียงเต็มสำหรับถ้อยคำอ่านรู้เรื่อง และ segments สำหรับจัดแนว แทนการสมมติว่าสองสตริงตรงกันทุกอักขระ\n\ndiarize เริ่มต้นเป็น auto เมื่อขอ timestamp และ diarize ไม่ใช่ false Pro ยังคืน speaker_turns แต่ละผลัดพูดมีป้ายผู้พูด ข้อความ และเวลาเริ่ม/จบ โดยเก็บวรรคตอนและสัญญาณที่รักษาไว้ แต่ไม่มีเครื่องหมายผู้พูดในข้อความ หากไม่มีเวลารายคำ เวลาผลัดพูดอาจเป็นค่าประมาณและครอบคลุมทั้งบันทึก ผลัดพูดติดกันไม่จำเป็นต้องต่อเนื่องหรือไม่ทับกัน ปิด diarize จะเอารายการผลัดพูดมีโครงสร้างออก แต่ยังมีเครื่องหมายผู้พูดในข้อความเต็ม จำนวนผู้พูดที่ทราบ หรือจำนวนขั้นต่ำและสูงสุด ช่วยชี้นำการแยกผู้พูดในบันทึกยาวแบบทำเท่าที่ได้ จำนวนแน่นอนไม่ใช้ร่วมกับขอบจำนวน และไม่ใช้คำแนะนำจำนวนเมื่อปิด diarize\n\nสัญญาณอารมณ์และเหตุการณ์การใช้เสียงปรากฏเป็นข้อความในวงเล็บเหลี่ยม เช่น [laughter] ข้างเสียงพูดที่รู้จำ เป็นการอนุมานจากเสียง ไม่ใช่คำที่ผู้ใช้ต้องเพิ่มก่อนถอดเสียง tag_audio_events ของ Pro เริ่มต้นเป็น true ปิดแล้วลบสัญญาณเหล่านี้จากบทถอดเสียงและข้อความผลัดพูดโดยไม่เปลี่ยนเวลา ไม่มีฟิลด์อารมณ์แยกหรือรายการอารมณ์ตายตัว เก็บบทถอดเสียงมีคำกำกับเมื่อเสียงของคำพูดสำคัญ และใช้รุ่นไม่มีสัญญาณเมื่อสิ่งส่งมอบขั้นถัดไปต้องการเฉพาะคำที่พูด\n\nตรวจภาษาโดยอัตโนมัติ คำแนะนำ ISO 639-1 ตัวพิมพ์เล็กที่เลือกใส่ได้ไม่ได้บังคับแปลหรือเปลี่ยนบทถอดเสียง Pro หากระบุภาษาไม่ได้ รหัสภาษาที่คืนมาอาจสะท้อนคำแนะนำโดยไม่ตรวจเทียบเสียง ผู้ผลิตรายงานหนึ่งภาษา แทนรายการทุกภาษาในบันทึกหลายภาษา เก็บถ้อยคำต้นฉบับกับเมทาดาทาภาษาไว้ด้วยกันเมื่อเตรียมคลังที่ค้นได้ โดยเฉพาะเมื่อส่วนต่าง ๆ ของบทสนทนาสลับภาษา\n\nสำหรับคำบรรยาย ให้รวมคำต่อเนื่องที่มีเวลาเป็นช่วง SRT หรือ WebVTT ที่อ่านง่าย แทนหนึ่งคำต่อหนึ่งคำบรรยาย แยกช่วงตามจังหวะหยุด และเลือกความยาวกับเวลาแสดงให้เหมาะเครื่องเล่นและผู้ชม ขอบผลัดพูดช่วยให้ผู้พูดต่างกันอยู่คนละช่วงได้ ตรวจผลเวลาที่ว่างและช่วงคำบรรยายที่เวลาจบต้องหลังเวลาเริ่ม การจัดรูปคำบรรยาย การตั้งชื่อป้ายผู้พูดนิรนาม และสรุปภายหลังเป็นสิ่งส่งมอบแอปพลิเคชันที่สร้างจากผลถอดเสียง\n\nสำหรับเวิร์กโฟลว์บันทึกเสียงจริง ให้ตัดสินก่อนถอดว่าจะต้องการบทถอดเสียงธรรมดาที่อ่านรู้เรื่อง ผลัดพูดที่มีคำกำกับ หรือคำบรรยายมีเวลา เก็บตัวระบุเสียงกับผล รักษาข้อความเต็มที่คืนมาเมื่อวรรคตอนและสัญญาณสำคัญ และใช้ฟิลด์เวลามีโครงสร้างเพื่อนำทาง ความสามารถบันทึกยาวและหลายผู้พูดของ Pro แยกจากโมเดล Transcribe 1 ทั่วไปสำหรับบันทึกสั้น ไม่ควรถือว่าขีดจำกัดและการควบคุมสลับใช้กันได้",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6e304f2c84ce7928660185880b076ea4cc9db018eb800368cb3bca49e90222ee",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "th",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Fish Audio: Transcribe 1 Pro</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-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|fish-audio%2Ftranscribe-1-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\">Transcribe 1 Pro แปลงบันทึกเสียงยาวสูงสุด 60 นาทีเป็นข้อความที่มีเครื่องหมายผู้พูด และเลือกขอข้อมูลเวลารายคำได้ รักษาอารมณ์ที่อนุมานและสัญญาณเหตุการณ์การใช้เสียง ทำให้ตรวจ ค้นหา หรือเตรียมบทสัมภาษณ์ ประชุม และพอดแคสต์เป็นคำบรรยายได้ง่ายขึ้น</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 Pro เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Fish Audio สำหรับคลิปสั้น บทสนทนาหลายผู้พูด และบันทึกเสียงยาว รับเสียงที่บันทึกแล้วคืนบทถอดเสียง พร้อมข้อมูลเวลาที่เลือกขอได้และช่วงผลัดพูดที่มีโครงสร้าง จุดต่างคือเครื่องหมายเปลี่ยนผู้พูดในข้อความและสัญญาณอารมณ์หรือเหตุการณ์การใช้เสียง ซึ่งเก็บโครงสร้างบทสนทนาได้มากกว่าลำดับคำธรรมดา</p><p>สำหรับสัมภาษณ์ ประชุม หรือพอดแคสต์ ให้เก็บบทสนทนาครบในไฟล์เดียว เพื่อให้ผู้พูดที่กลับมาพูดอีกยังใช้ป้ายเดียวกันภายในคำตอบ สิ่งส่งมอบเพื่อตรวจที่มีประโยชน์คือบทถอดเสียงที่เชื่อมกับบันทึกต้นฉบับ แสดงผลัดพูดแยกกัน และมี timestamp ใช้ตรวจคำอ้าง สรุปหรือรายการสิ่งที่ต้องทำเป็นขั้นตอนแอปพลิเคชันภายหลัง ให้แยกจากบทถอดเสียงเพื่อให้ยังเปรียบเทียบกับแหล่งเสียงได้</p><p>ผู้ผลิตรับบันทึกเสียงสูงสุด 60 นาที และอธิบายการประมวลผลไฟล์ยาวด้วยเสียงบีบอัดอย่าง MP3, Opus หรือ AAC รูปแบบที่รองรับรวม WAV, MP3, AAC ใน M4A หรือ MP4, FLAC, Ogg ที่ใช้ Opus หรือ Vorbis, WebM/Matroska และ MOV สำหรับวิดีโอ ใช้แทร็กเสียงแรก ไม่รองรับ AIFF, CAF, WMA, AMR, AC-3 และ PCM ดิบที่ไม่มี header ให้ไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ผลมาหลังถอดเสียงทั้งบันทึกเสร็จ และบันทึกยาวอาจใช้เวลาหลายนาที คลิปสั้นกว่าประมาณ 0.08 วินาทีถูกปฏิเสธ</p><p>คำตอบผู้ผลิตมีข้อความเต็ม ความยาวบันทึกเป็นวินาที และอาร์เรย์ segments Pro ทำเครื่องหมายเปลี่ยนผู้พูดในข้อความด้วยป้ายอย่าง &lt;|speaker:0|&gt; และ &lt;|speaker:1|&gt; ป้ายใช้กับข้อความถัดไปจนถึงเครื่องหมายต่อไป นี่เป็นตัวระบุภายในคำตอบเดียว ไม่ใช่ชื่อหรือบุคคลที่ตรวจยืนยันแล้วและจับคู่ข้ามคำขอได้ หากไม่มีเครื่องหมายผู้พูด คู่มือถือว่าเป็นผลผู้พูดเดียว เก็บข้อความก่อนเครื่องหมายแรกไว้กับผลัดพูดแรก แทนการทิ้ง</p><p>Timestamp ระดับคำเป็นทางเลือก ในคำขอผู้ผลิต ignore_timestamps เริ่มต้นเป็น true ตั้ง false เพื่อขอ segments ที่มีข้อความ เวลาเริ่มและจบเป็นวินาที เซกเมนต์โดยทั่วไปคือหนึ่งคำ หรือหนึ่งอักขระหรือไม่กี่ตัวในภาษาจีนและญี่ปุ่น ข้อความเซกเมนต์ไม่รวมวรรคตอน เครื่องหมายผู้พูด และสัญญาณเหตุการณ์ และอาจปรับรูปค่าที่พูดต่างจากบทถอดเสียงเต็ม เวลาเริ่มและจบของคำอาจเท่ากันได้ อาร์เรย์ segments ว่างอาจหมายถึงไม่ได้ขอเวลา ไม่พบเสียงพูด หรือข้อมูลเวลายังใช้ไม่ได้ชั่วคราว ใช้บทถอดเสียงเต็มสำหรับถ้อยคำอ่านรู้เรื่อง และ segments สำหรับจัดแนว แทนการสมมติว่าสองสตริงตรงกันทุกอักขระ</p><p>diarize เริ่มต้นเป็น auto เมื่อขอ timestamp และ diarize ไม่ใช่ false Pro ยังคืน speaker_turns แต่ละผลัดพูดมีป้ายผู้พูด ข้อความ และเวลาเริ่ม/จบ โดยเก็บวรรคตอนและสัญญาณที่รักษาไว้ แต่ไม่มีเครื่องหมายผู้พูดในข้อความ หากไม่มีเวลารายคำ เวลาผลัดพูดอาจเป็นค่าประมาณและครอบคลุมทั้งบันทึก ผลัดพูดติดกันไม่จำเป็นต้องต่อเนื่องหรือไม่ทับกัน ปิด diarize จะเอารายการผลัดพูดมีโครงสร้างออก แต่ยังมีเครื่องหมายผู้พูดในข้อความเต็ม จำนวนผู้พูดที่ทราบ หรือจำนวนขั้นต่ำและสูงสุด ช่วยชี้นำการแยกผู้พูดในบันทึกยาวแบบทำเท่าที่ได้ จำนวนแน่นอนไม่ใช้ร่วมกับขอบจำนวน และไม่ใช้คำแนะนำจำนวนเมื่อปิด diarize</p><p>สัญญาณอารมณ์และเหตุการณ์การใช้เสียงปรากฏเป็นข้อความในวงเล็บเหลี่ยม เช่น [laughter] ข้างเสียงพูดที่รู้จำ เป็นการอนุมานจากเสียง ไม่ใช่คำที่ผู้ใช้ต้องเพิ่มก่อนถอดเสียง tag_audio_events ของ Pro เริ่มต้นเป็น true ปิดแล้วลบสัญญาณเหล่านี้จากบทถอดเสียงและข้อความผลัดพูดโดยไม่เปลี่ยนเวลา ไม่มีฟิลด์อารมณ์แยกหรือรายการอารมณ์ตายตัว เก็บบทถอดเสียงมีคำกำกับเมื่อเสียงของคำพูดสำคัญ และใช้รุ่นไม่มีสัญญาณเมื่อสิ่งส่งมอบขั้นถัดไปต้องการเฉพาะคำที่พูด</p><p>ตรวจภาษาโดยอัตโนมัติ คำแนะนำ ISO 639-1 ตัวพิมพ์เล็กที่เลือกใส่ได้ไม่ได้บังคับแปลหรือเปลี่ยนบทถอดเสียง Pro หากระบุภาษาไม่ได้ รหัสภาษาที่คืนมาอาจสะท้อนคำแนะนำโดยไม่ตรวจเทียบเสียง ผู้ผลิตรายงานหนึ่งภาษา แทนรายการทุกภาษาในบันทึกหลายภาษา เก็บถ้อยคำต้นฉบับกับเมทาดาทาภาษาไว้ด้วยกันเมื่อเตรียมคลังที่ค้นได้ โดยเฉพาะเมื่อส่วนต่าง ๆ ของบทสนทนาสลับภาษา</p><p>สำหรับคำบรรยาย ให้รวมคำต่อเนื่องที่มีเวลาเป็นช่วง SRT หรือ WebVTT ที่อ่านง่าย แทนหนึ่งคำต่อหนึ่งคำบรรยาย แยกช่วงตามจังหวะหยุด และเลือกความยาวกับเวลาแสดงให้เหมาะเครื่องเล่นและผู้ชม ขอบผลัดพูดช่วยให้ผู้พูดต่างกันอยู่คนละช่วงได้ ตรวจผลเวลาที่ว่างและช่วงคำบรรยายที่เวลาจบต้องหลังเวลาเริ่ม การจัดรูปคำบรรยาย การตั้งชื่อป้ายผู้พูดนิรนาม และสรุปภายหลังเป็นสิ่งส่งมอบแอปพลิเคชันที่สร้างจากผลถอดเสียง</p><p>สำหรับเวิร์กโฟลว์บันทึกเสียงจริง ให้ตัดสินก่อนถอดว่าจะต้องการบทถอดเสียงธรรมดาที่อ่านรู้เรื่อง ผลัดพูดที่มีคำกำกับ หรือคำบรรยายมีเวลา เก็บตัวระบุเสียงกับผล รักษาข้อความเต็มที่คืนมาเมื่อวรรคตอนและสัญญาณสำคัญ และใช้ฟิลด์เวลามีโครงสร้างเพื่อนำทาง ความสามารถบันทึกยาวและหลายผู้พูดของ Pro แยกจากโมเดล Transcribe 1 ทั่วไปสำหรับบันทึกสั้น ไม่ควรถือว่าขีดจำกัดและการควบคุมสลับใช้กันได้</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><div><dt>รูปแบบเอาต์พุต</dt><dd>json</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 data-parameter-availability=\"source_interface\"><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-pro</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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><div>ชื่อคีย์ที่แน่นอน: data, format</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_audio.data</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>base64_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>จำนวนไบต์สูงสุดหลังถอดรหัส: 26,214,400</div><div>Base64 แบบเคร่งครัด: ใช่</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_audio.format</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>เงื่อนไข: ต้องตรงกับรูปแบบที่ตรวจพบจากไฟล์จริง</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">response_format</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>json</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>ชุดผสมของสื่ออินพุต</summary><p class=\"note-s\"><b>speech_to_text</b> · จำเป็น: input_audio.data, input_audio.format</p></details><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>additional_properties</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>parameters</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;fish-audio/transcribe-1-pro&quot;]}, {&quot;name&quot;:&quot;input_audio&quot;,&quot;type&quot;:&quot;object&quot;,&quot;required&quot;:true,&quot;exact_keys&quot;:[&quot;data&quot;,&quot;format&quot;],&quot;data&quot;:&quot;base64 แบบเคร่งครัดของไบต์เสียงจริงที่รองรับ&quot;,&quot;format&quot;:&quot;รูปแบบไฟล์ที่ตรวจพบอย่างตรงตามจริง ต้องตรงกับไบต์จริง&quot;}, {&quot;name&quot;:&quot;response_format&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:false,&quot;enum&quot;:[&quot;json&quot;]}</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>max_audio_bytes</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>26214400</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>multipart_for_this_profile</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</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></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><p class=\"note-s\">เก็บการตอบกลับทั้งหมดและ ID เดิมที่ส่งกลับ</p><p class=\"note-s\">ห้ามส่งคำขอสร้างที่ยังไม่ทราบผลซ้ำ</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>โหมดยืดหยุ่น</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>อัตราค่าบริการโทเคนพื้นฐาน</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>อัตราพื้นฐาน</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · โทเค็นอินพุต</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาออก · โทเค็นเอาต์พุต</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การอ่านแคช</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช, 1 ชั่วโมง</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>วินาทีเสียงขาเข้า</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อวินาทีของเสียงอินพุต</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/th/billing/reserve/\">วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →</a></p><div data-declared-reference-pricing><h4>รายละเอียดอัตราอ้างอิง</h4><p class=\"note-s\">ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: Transcribe 1 Pro</summary><h4>ราคาตามการตั้งค่า</h4><div class=\"tw\" data-pricing-profiles><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>Fish Audio: Transcribe 1 Pro · การตั้งค่าเริ่มต้น</th><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>US$0.0002</b> <span class=\"price-unit\">ต่อวินาทีของเสียงอินพุต</span></div></td></tr></tbody></table></div></details></div></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-1362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · ไบต์เสียงจริงและรูปแบบที่ตรวจพบ</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-1362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1362-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 your actual audio file}&quot;\n: &quot;${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}&quot;\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;fish-audio/transcribe-1-pro&quot;, &quot;response_format&quot;: &quot;json&quot;}&#39;)\nimport base64\nf=Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;])\nraw=f.read_bytes()\nif not raw or len(raw)&gt;26214400:raise SystemExit(&#39;Use actual audio bytes within 25 MiB&#39;)\nfmt=os.environ[&#39;AILOOT_AUDIO_FORMAT&#39;].strip()\nif not fmt:raise SystemExit(&#39;Use the actual probed format; the server checks it against the bytes&#39;)\np[&#39;input_audio&#39;]={&#39;data&#39;:base64.b64encode(raw).decode(),&#39;format&#39;:fmt}\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\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 result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\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\">เก็บ JSON ทั้งหมด ส่วนหัวการตอบกลับ ข้อความ และฟิลด์การใช้งานจริงทุกฟิลด์ที่ส่งกลับ ใช้ตัวตนงาน/แอสเซ็ตจริงจากการตอบกลับหรือคลังที่เป็นของคุณ operation_id ไม่ใช่ task_id</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ</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><th>ความหมาย</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">text</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</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><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>object</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><code class=\"card-field-name\">usage.seconds</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>number</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><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>number</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><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>ID งานถอดเสียง ส่งกลับพร้อม asset_url เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</td><td data-cell-label=\"ความหมาย\"><span class=\"card-cell-label\">ความหมาย</span>URL เนื้อหาข้อความถอดเสียงที่ลงลายเซ็น ส่งกลับพร้อม task_id เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว</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>ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง</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><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-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1-pro&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1-pro&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1-pro</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1-pro",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1-pro",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "การตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์",
                "http_status": null,
                "recovery": "เก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ"
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "เก็บ JSON ทั้งหมด ส่วนหัวการตอบกลับ ข้อความ และฟิลด์การใช้งานจริงทุกฟิลด์ที่ส่งกลับ ใช้ตัวตนงาน/แอสเซ็ตจริงจากการตอบกลับหรือคลังที่เป็นของคุณ operation_id ไม่ใช่ task_id",
              "family": "transcription",
              "fields": [
                {
                  "description": "ข้อความที่ถอดเสียงแล้ว",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "การใช้งานเสียง",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "ระยะเวลาเสียงเป็นวินาที",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ระยะเวลาเสียงเป็นวินาที",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ID งานถอดเสียง ส่งกลับพร้อม asset_url เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "URL เนื้อหาข้อความถอดเสียงที่ลงลายเซ็น ส่งกลับพร้อม task_id เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "ต้องตรงกับรูปแบบที่ตรวจพบจากไฟล์จริง",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "เก็บการตอบกลับทั้งหมดและ ID เดิมที่ส่งกลับ",
            "ห้ามส่งคำขอสร้างที่ยังไม่ทราบผลซ้ำ"
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "base64 แบบเคร่งครัดของไบต์เสียงจริงที่รองรับ",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "รูปแบบไฟล์ที่ตรวจพบอย่างตรงตามจริง ต้องตรงกับไบต์จริง",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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 your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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-pro",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "20874deab2e8c77cdf610ad1f1d386864435ac27f64969a67a121e5045f3729e",
    "input_html_sha256": "3a9830e6229860d3161ca33e336eeee46fcb26cbcaa894b774352341fef04987",
    "private_audit_sha256": "a7b653756e3fa42aebb21f53171420db42e8d160b120cd96139b5f5a855367cd",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/fish-audio-transcribe-1-pro/",
    "description": "Transcribe 1 Pro แปลงบันทึกเสียงยาวสูงสุด 60 นาทีเป็นข้อความที่มีเครื่องหมายผู้พูด และเลือกขอข้อมูลเวลารายคำได้ รักษาอารมณ์ที่อนุมานและสัญญาณเหตุการณ์การใช้เสียง ทำให้ตรวจ ค้นหา หรือเตรียมบทสัมภาษณ์ ประชุม และพอดแคสต์เป็นคำบรรยายได้ง่ายขึ้น",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/fish-audio-transcribe-1-pro/index.md",
    "title": "Fish Audio: Transcribe 1 Pro — Ailoot",
    "url": "https://ailoot.ai/models/th/fish-audio-transcribe-1-pro/"
  },
  "rawModel": {
    "about": "Transcribe 1 Pro เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Fish Audio สำหรับคลิปสั้น บทสนทนาหลายผู้พูด และบันทึกเสียงยาว รับเสียงที่บันทึกแล้วคืนบทถอดเสียง พร้อมข้อมูลเวลาที่เลือกขอได้และช่วงผลัดพูดที่มีโครงสร้าง จุดต่างคือเครื่องหมายเปลี่ยนผู้พูดในข้อความและสัญญาณอารมณ์หรือเหตุการณ์การใช้เสียง ซึ่งเก็บโครงสร้างบทสนทนาได้มากกว่าลำดับคำธรรมดา\n\nสำหรับสัมภาษณ์ ประชุม หรือพอดแคสต์ ให้เก็บบทสนทนาครบในไฟล์เดียว เพื่อให้ผู้พูดที่กลับมาพูดอีกยังใช้ป้ายเดียวกันภายในคำตอบ สิ่งส่งมอบเพื่อตรวจที่มีประโยชน์คือบทถอดเสียงที่เชื่อมกับบันทึกต้นฉบับ แสดงผลัดพูดแยกกัน และมี timestamp ใช้ตรวจคำอ้าง สรุปหรือรายการสิ่งที่ต้องทำเป็นขั้นตอนแอปพลิเคชันภายหลัง ให้แยกจากบทถอดเสียงเพื่อให้ยังเปรียบเทียบกับแหล่งเสียงได้\n\nผู้ผลิตรับบันทึกเสียงสูงสุด 60 นาที และอธิบายการประมวลผลไฟล์ยาวด้วยเสียงบีบอัดอย่าง MP3, Opus หรือ AAC รูปแบบที่รองรับรวม WAV, MP3, AAC ใน M4A หรือ MP4, FLAC, Ogg ที่ใช้ Opus หรือ Vorbis, WebM/Matroska และ MOV สำหรับวิดีโอ ใช้แทร็กเสียงแรก ไม่รองรับ AIFF, CAF, WMA, AMR, AC-3 และ PCM ดิบที่ไม่มี header ให้ไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ผลมาหลังถอดเสียงทั้งบันทึกเสร็จ และบันทึกยาวอาจใช้เวลาหลายนาที คลิปสั้นกว่าประมาณ 0.08 วินาทีถูกปฏิเสธ\n\nคำตอบผู้ผลิตมีข้อความเต็ม ความยาวบันทึกเป็นวินาที และอาร์เรย์ segments Pro ทำเครื่องหมายเปลี่ยนผู้พูดในข้อความด้วยป้ายอย่าง <|speaker:0|> และ <|speaker:1|> ป้ายใช้กับข้อความถัดไปจนถึงเครื่องหมายต่อไป นี่เป็นตัวระบุภายในคำตอบเดียว ไม่ใช่ชื่อหรือบุคคลที่ตรวจยืนยันแล้วและจับคู่ข้ามคำขอได้ หากไม่มีเครื่องหมายผู้พูด คู่มือถือว่าเป็นผลผู้พูดเดียว เก็บข้อความก่อนเครื่องหมายแรกไว้กับผลัดพูดแรก แทนการทิ้ง\n\nTimestamp ระดับคำเป็นทางเลือก ในคำขอผู้ผลิต ignore_timestamps เริ่มต้นเป็น true ตั้ง false เพื่อขอ segments ที่มีข้อความ เวลาเริ่มและจบเป็นวินาที เซกเมนต์โดยทั่วไปคือหนึ่งคำ หรือหนึ่งอักขระหรือไม่กี่ตัวในภาษาจีนและญี่ปุ่น ข้อความเซกเมนต์ไม่รวมวรรคตอน เครื่องหมายผู้พูด และสัญญาณเหตุการณ์ และอาจปรับรูปค่าที่พูดต่างจากบทถอดเสียงเต็ม เวลาเริ่มและจบของคำอาจเท่ากันได้ อาร์เรย์ segments ว่างอาจหมายถึงไม่ได้ขอเวลา ไม่พบเสียงพูด หรือข้อมูลเวลายังใช้ไม่ได้ชั่วคราว ใช้บทถอดเสียงเต็มสำหรับถ้อยคำอ่านรู้เรื่อง และ segments สำหรับจัดแนว แทนการสมมติว่าสองสตริงตรงกันทุกอักขระ\n\ndiarize เริ่มต้นเป็น auto เมื่อขอ timestamp และ diarize ไม่ใช่ false Pro ยังคืน speaker_turns แต่ละผลัดพูดมีป้ายผู้พูด ข้อความ และเวลาเริ่ม/จบ โดยเก็บวรรคตอนและสัญญาณที่รักษาไว้ แต่ไม่มีเครื่องหมายผู้พูดในข้อความ หากไม่มีเวลารายคำ เวลาผลัดพูดอาจเป็นค่าประมาณและครอบคลุมทั้งบันทึก ผลัดพูดติดกันไม่จำเป็นต้องต่อเนื่องหรือไม่ทับกัน ปิด diarize จะเอารายการผลัดพูดมีโครงสร้างออก แต่ยังมีเครื่องหมายผู้พูดในข้อความเต็ม จำนวนผู้พูดที่ทราบ หรือจำนวนขั้นต่ำและสูงสุด ช่วยชี้นำการแยกผู้พูดในบันทึกยาวแบบทำเท่าที่ได้ จำนวนแน่นอนไม่ใช้ร่วมกับขอบจำนวน และไม่ใช้คำแนะนำจำนวนเมื่อปิด diarize\n\nสัญญาณอารมณ์และเหตุการณ์การใช้เสียงปรากฏเป็นข้อความในวงเล็บเหลี่ยม เช่น [laughter] ข้างเสียงพูดที่รู้จำ เป็นการอนุมานจากเสียง ไม่ใช่คำที่ผู้ใช้ต้องเพิ่มก่อนถอดเสียง tag_audio_events ของ Pro เริ่มต้นเป็น true ปิดแล้วลบสัญญาณเหล่านี้จากบทถอดเสียงและข้อความผลัดพูดโดยไม่เปลี่ยนเวลา ไม่มีฟิลด์อารมณ์แยกหรือรายการอารมณ์ตายตัว เก็บบทถอดเสียงมีคำกำกับเมื่อเสียงของคำพูดสำคัญ และใช้รุ่นไม่มีสัญญาณเมื่อสิ่งส่งมอบขั้นถัดไปต้องการเฉพาะคำที่พูด\n\nตรวจภาษาโดยอัตโนมัติ คำแนะนำ ISO 639-1 ตัวพิมพ์เล็กที่เลือกใส่ได้ไม่ได้บังคับแปลหรือเปลี่ยนบทถอดเสียง Pro หากระบุภาษาไม่ได้ รหัสภาษาที่คืนมาอาจสะท้อนคำแนะนำโดยไม่ตรวจเทียบเสียง ผู้ผลิตรายงานหนึ่งภาษา แทนรายการทุกภาษาในบันทึกหลายภาษา เก็บถ้อยคำต้นฉบับกับเมทาดาทาภาษาไว้ด้วยกันเมื่อเตรียมคลังที่ค้นได้ โดยเฉพาะเมื่อส่วนต่าง ๆ ของบทสนทนาสลับภาษา\n\nสำหรับคำบรรยาย ให้รวมคำต่อเนื่องที่มีเวลาเป็นช่วง SRT หรือ WebVTT ที่อ่านง่าย แทนหนึ่งคำต่อหนึ่งคำบรรยาย แยกช่วงตามจังหวะหยุด และเลือกความยาวกับเวลาแสดงให้เหมาะเครื่องเล่นและผู้ชม ขอบผลัดพูดช่วยให้ผู้พูดต่างกันอยู่คนละช่วงได้ ตรวจผลเวลาที่ว่างและช่วงคำบรรยายที่เวลาจบต้องหลังเวลาเริ่ม การจัดรูปคำบรรยาย การตั้งชื่อป้ายผู้พูดนิรนาม และสรุปภายหลังเป็นสิ่งส่งมอบแอปพลิเคชันที่สร้างจากผลถอดเสียง\n\nสำหรับเวิร์กโฟลว์บันทึกเสียงจริง ให้ตัดสินก่อนถอดว่าจะต้องการบทถอดเสียงธรรมดาที่อ่านรู้เรื่อง ผลัดพูดที่มีคำกำกับ หรือคำบรรยายมีเวลา เก็บตัวระบุเสียงกับผล รักษาข้อความเต็มที่คืนมาเมื่อวรรคตอนและสัญญาณสำคัญ และใช้ฟิลด์เวลามีโครงสร้างเพื่อนำทาง ความสามารถบันทึกยาวและหลายผู้พูดของ Pro แยกจากโมเดล Transcribe 1 ทั่วไปสำหรับบันทึกสั้น ไม่ควรถือว่าขีดจำกัดและการควบคุมสลับใช้กันได้",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/transcribe-1-pro",
    "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,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "aeebfac63d7ddd8619fb",
        "label": "Fish Audio: Transcribe 1 Pro",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "การตั้งค่าเริ่มต้น"
            },
            "label": "Fish Audio: Transcribe 1 Pro · การตั้งค่าเริ่มต้น",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "0949942d98ce2e4c35b418d6",
                "label": "Input audio seconds",
                "public_unit_label": "per input audio second",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_audio_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1-pro",
    "input": [
      "audio"
    ],
    "kind": "transcription",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete JSON, response headers, text and every actual returned usage field. Use actual task/asset identities from the response or owned library; operation_id is not task_id.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "การตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์",
                "http_status": null,
                "recovery": "เก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ"
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "speech_to_text",
                "required": [
                  "input_audio.data",
                  "input_audio.format"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "speech_to_text"
            ],
            "outputs": {
              "all_results": "เก็บ JSON ทั้งหมด ส่วนหัวการตอบกลับ ข้อความ และฟิลด์การใช้งานจริงทุกฟิลด์ที่ส่งกลับ ใช้ตัวตนงาน/แอสเซ็ตจริงจากการตอบกลับหรือคลังที่เป็นของคุณ operation_id ไม่ใช่ task_id",
              "family": "transcription",
              "fields": [
                {
                  "description": "ข้อความที่ถอดเสียงแล้ว",
                  "name": "text",
                  "required": true,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "การใช้งานเสียง",
                  "name": "usage",
                  "required": true,
                  "required_known": true,
                  "type": "object"
                },
                {
                  "description": "ระยะเวลาเสียงเป็นวินาที",
                  "name": "usage.seconds",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ระยะเวลาเสียงเป็นวินาที",
                  "name": "duration",
                  "required": true,
                  "required_known": true,
                  "type": "number"
                },
                {
                  "description": "ID งานถอดเสียง ส่งกลับพร้อม asset_url เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว",
                  "name": "task_id",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                },
                {
                  "description": "URL เนื้อหาข้อความถอดเสียงที่ลงลายเซ็น ส่งกลับพร้อม task_id เมื่อข้อความถอดเสียงที่ไม่ว่างถูกจัดเก็บ เผยแพร่ และกำหนด URL เนื้อหาที่ลงลายเซ็นแล้ว",
                  "name": "asset_url",
                  "required": false,
                  "required_known": true,
                  "type": "string"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "data",
                  "format"
                ],
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "decoded_maximum_bytes": 26214400,
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.data",
                "required": true,
                "strict_base64": true,
                "type": "base64_string"
              },
              {
                "availability": "source_interface",
                "conditions": "ต้องตรงกับรูปแบบที่ตรวจพบจากไฟล์จริง",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_audio.format",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "multipart input on this exact profile",
              "fields outside model/input_audio/response_format",
              "non-json response format"
            ]
          },
          "hints": [
            "เก็บการตอบกลับทั้งหมดและ ID เดิมที่ส่งกลับ",
            "ห้ามส่งคำขอสร้างที่ยังไม่ทราบผลซ้ำ"
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "audio"
            ],
            "max_audio_bytes": 26214400,
            "multipart_for_this_profile": false,
            "parameters": [
              {
                "enum": [
                  "fish-audio/transcribe-1-pro"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "data": "base64 แบบเคร่งครัดของไบต์เสียงจริงที่รองรับ",
                "exact_keys": [
                  "data",
                  "format"
                ],
                "format": "รูปแบบไฟล์ที่ตรวจพบอย่างตรงตามจริง ต้องตรงกับไบต์จริง",
                "name": "input_audio",
                "required": true,
                "type": "object"
              },
              {
                "enum": [
                  "json"
                ],
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "method_aliases": [],
          "operation_modes": [
            "speech_to_text"
          ],
          "output": {
            "family": "text",
            "type": "JSON transcript with text and usage; actual owned transcript flow"
          }
        },
        "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 your actual audio file}\"\n: \"${AILOOT_AUDIO_FORMAT:?Set its actual probed file format}\"\nexport AILOOT_AUDIO_FILE AILOOT_AUDIO_FORMAT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"fish-audio/transcribe-1-pro\", \"response_format\": \"json\"}')\nimport base64\nf=Path(os.environ['AILOOT_AUDIO_FILE'])\nraw=f.read_bytes()\nif not raw or len(raw)>26214400:raise SystemExit('Use actual audio bytes within 25 MiB')\nfmt=os.environ['AILOOT_AUDIO_FORMAT'].strip()\nif not fmt:raise SystemExit('Use the actual probed format; the server checks it against the bytes')\np['input_audio']={'data':base64.b64encode(raw).decode(),'format':fmt}\nPath('request.json').write_text(json.dumps(p,ensure_ascii=False))\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 result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · actual audio bytes and probed format",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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-pro",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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-pro",
        "request_model_id": "fish-audio/transcribe-1-pro",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1 Pro",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_declared_unit",
            "conditions": {},
            "key": "prompt",
            "label": "prompt",
            "quantity": "1",
            "rate_role": "typed_active_maker_rate",
            "side": "in",
            "unit": "input_audio_second"
          }
        ]
      }
    ],
    "public_id": "fish-audio/transcribe-1-pro",
    "short": "Transcribe 1 Pro แปลงบันทึกเสียงยาวสูงสุด 60 นาทีเป็นข้อความที่มีเครื่องหมายผู้พูด และเลือกขอข้อมูลเวลารายคำได้ รักษาอารมณ์ที่อนุมานและสัญญาณเหตุการณ์การใช้เสียง ทำให้ตรวจ ค้นหา หรือเตรียมบทสัมภาษณ์ ประชุม และพอดแคสต์เป็นคำบรรยายได้ง่ายขึ้น"
  },
  "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 Pro แปลงบันทึกเสียงยาวสูงสุด 60 นาทีเป็นข้อความที่มีเครื่องหมายผู้พูด และเลือกขอข้อมูลเวลารายคำได้ รักษาอารมณ์ที่อนุมานและสัญญาณเหตุการณ์การใช้เสียง ทำให้ตรวจ ค้นหา หรือเตรียมบทสัมภาษณ์ ประชุม และพอดแคสต์เป็นคำบรรยายได้ง่ายขึ้น",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "467f06996d63474f682c68697862725551cb1391fd821b9c6c493fa5a4dbd801",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "5701fef0648e884e1d0eae8f944f150ca24d3feb956ef35c8219b96fc14f389a"
}
