{
  "aboutHtml": "<p>Transcribe 1 เป็นโมเดลแปลงเสียงพูดเป็นข้อความทั่วไปของ Fish Audio สำหรับเสียงบันทึกสั้น รับไฟล์เสียงและคืนคำที่รู้จำเป็นข้อความ พร้อมระยะเวลาการบันทึก ช่วงข้อความพร้อมเวลาที่เลือกขอได้ และข้อมูลภาษาเมื่อทราบ เหมาะกับโน้ตเสียงสั้น คำสั่งพูด ข้อความตัดตอนจากเสียงบันทึก หรือคลิปเสียงที่ต้องการแปลงเป็นข้อความให้อ่านได้</p><p>ตัวอย่างเวิร์กโฟลว์โน้ตเสียงเก็บเสียงบันทึกคู่กับบทถอดเสียงเต็มและรหัสคลิปต้นฉบับ ขั้นถัดไปของแอปพลิเคชันสามารถค้นข้อความ จัดระเบียบโน้ต หรือสร้างบทสรุปโดยเก็บแหล่งคำพูดไว้ สำหรับคำสั่ง บทถอดเสียงส่งคำที่รู้จำให้แอปพลิเคชัน การดำเนินการใด ๆ เป็นขั้นตีความและปฏิบัติที่แยกต่างหาก สำหรับข้อความตัดตอนสัมภาษณ์ ให้บันทึกตำแหน่งคลิปในเสียงเต็มเพื่อให้ตรวจคำอ้างได้ตรงจุด</p><p>ผู้ผลิตรับ WAV, MP3, AAC รวม M4A/MP4, FLAC และ Ogg ที่บรรจุ Opus หรือ Vorbis เสียงบันทึกจากเบราว์เซอร์ใน WebM ควรแปลงเป็น Ogg/Opus, MP3 หรือ WAV สำหรับโมเดลนี้ ส่วน Pro มีเอกสารระบุการรองรับคอนเทนเนอร์เพิ่มเติมโดยตรง ส่งไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ขีดจำกัดคำขอของโมเดลพื้นฐานตามเอกสารคือสูงสุด 50 MiB โดยไฟล์ MP3 และ Opus ต้องต่ำกว่า 25 MiB ขนาดไฟล์กับระยะเวลาเสียงเป็นคนละเรื่อง ไฟล์บีบอัดอาจอยู่ในขีดจำกัดอัปโหลดแต่ยังใช้เวลาประมวลผลนานเกินไป</p><p>Transcribe 1 ออกแบบสำหรับเสียงบันทึกสั้น ผู้ผลิตแนะนำ Pro สำหรับเสียงยาวกว่าสองสามนาที คำขอยาวของโมเดลพื้นฐานอาจล้มเหลวเมื่อเกินเวลาประมวลผลที่จำกัด เมื่อแบ่งต้นฉบับยาวเป็นคลิปสั้นเพื่อถอดเสียง ให้เก็บเวลาเริ่มต้นของแต่ละคลิปและยืนยันว่าบทถอดเสียงครอบคลุมคลิปทั้งหมดก่อนรวมผล บวกเวลาเริ่มต้นต้นฉบับเข้ากับเวลาในช่วงข้อความของคลิปเพื่อให้การนำทางยังเชื่อมกับเสียงเต็ม คำแนะนำของโมเดลพื้นฐานไม่ควรตีความเป็นงบ 60 นาทีที่แยกต่างหากของ Pro</p><p>คำตอบจากผู้ผลิตมี text, duration และ segments ระยะเวลาแสดงเป็นวินาที และควรเก็บบทถอดเสียงเต็มที่อ่านสะดวกเป็นถ้อยคำหลักของคลิป การระบุเวลาเป็นตัวเลือก โดย ignore_timestamps ใน API ของผู้ผลิตมีค่าเริ่มต้น true ส่วน false ขอช่วงระดับคำพร้อมข้อความ เวลาเริ่ม และเวลาสิ้นสุดเป็นวินาที การขอจัดแนวเพิ่มเวลาประมวลผล อาร์เรย์ segments ที่ว่างอาจหมายถึงข้ามการระบุเวลา ไม่มีคำพูด หรือการจัดแนวไม่พร้อมชั่วคราว จึงไม่ควรสรุปอัตโนมัติว่าบทถอดเสียงเต็มว่าง</p><p>โดยทั่วไปช่วงข้อความเป็นคำ หรือหนึ่งถึงไม่กี่ตัวอักษรในภาษาจีนและญี่ปุ่น ข้อความของช่วงละเครื่องหมายวรรคตอนและอาจปรับค่าต่างจากบทถอดเสียงเต็ม จึงไม่ใช่สำเนาตัวอักษรต่อตัวอักษรของคำตอบที่อ่านสะดวก ช่วงหนึ่งอาจมีเวลาเริ่มและเวลาสิ้นสุดเท่ากัน ใช้ช่วงข้อความเพื่อหาตำแหน่งในเสียงหรือเตรียมการแสดงตามเวลา และใช้ข้อความเต็มเมื่อถ้อยคำกับวรรคตอนมีความสำคัญ เก็บสองรูปแบบนี้แยกกันในชิ้นงานผลลัพธ์</p><p>ระบบตรวจจับภาษาอัตโนมัติ ไม่ว่าจะส่งคำใบ้ภาษาหรือไม่ ผู้ผลิตระบุรหัส ISO 639-1 ตัวพิมพ์เล็กสำหรับคำใบ้ และคืนรหัสภาษาสำหรับตรรกะแอปพลิเคชันพร้อมชื่อภาษาสำหรับแสดงเมื่อทราบ คำตอบรายงานภาษาเดียว ไม่ใช่ทุกภาษาในเสียงที่สลับภาษา เก็บถ้อยคำต้นฉบับและข้อมูลภาษาที่มีไว้กับผลลัพธ์ แทนการถือว่าคำขอถอดเสียงเป็นการแปล</p><p>สำหรับเวิร์กโฟลว์คำบรรยาย ให้รวมช่วงเวลาที่ต่อเนื่องเป็นข้อความคำบรรยายที่อ่านสะดวกแทนการแสดงทีละคำ ผลลัพธ์ที่มีประโยชน์คือไฟล์ SRT หรือ WebVTT ที่เชื่อมกับคลิปต้นฉบับ โดยกำหนดขอบเขตให้เหมาะกับจังหวะหยุดและมีข้อความบนจอในปริมาณพอดี ตรวจเวลาที่ขาดหายและให้เวลาสิ้นสุดแต่ละช่วงอยู่หลังเวลาเริ่ม การจัดกลุ่มคำบรรยายและรูปแบบไฟล์เป็นขั้นของแอปพลิเคชันที่สร้างจากการจัดแนวที่ได้รับ รูปแบบแสดงควรเหมาะกับเครื่องเล่นและผู้ชม</p><p>ตัวควบคุมของ Transcribe 1 ตามเอกสารคือเสียง คำใบ้ภาษา และตัวเลือกการระบุเวลา เครื่องหมายผู้พูด รอบผู้พูดแบบมีโครงสร้าง ตัวควบคุมเหตุการณ์อารมณ์ และคำใบ้จำนวนผู้พูดของ Pro เป็นคุณสมบัติแยกต่างหาก ไม่อยู่ในข้อกำหนดคำตอบของโมเดลพื้นฐานนี้ เลือกชิ้นงานที่ต้องการก่อนประมวลผล จะเป็นข้อความอ่านสะดวกสำหรับโน้ต หรือข้อความพร้อมการจัดแนวเพื่อการนำทางและคำบรรยาย การเก็บรหัสคลิป บทถอดเสียง และเวลาที่มี ทำให้ใช้ผลลัพธ์ในขั้นถัดไปของแอปพลิเคชันได้</p>",
  "aboutText": "Transcribe 1 เป็นโมเดลแปลงเสียงพูดเป็นข้อความทั่วไปของ Fish Audio สำหรับเสียงบันทึกสั้น รับไฟล์เสียงและคืนคำที่รู้จำเป็นข้อความ พร้อมระยะเวลาการบันทึก ช่วงข้อความพร้อมเวลาที่เลือกขอได้ และข้อมูลภาษาเมื่อทราบ เหมาะกับโน้ตเสียงสั้น คำสั่งพูด ข้อความตัดตอนจากเสียงบันทึก หรือคลิปเสียงที่ต้องการแปลงเป็นข้อความให้อ่านได้\n\nตัวอย่างเวิร์กโฟลว์โน้ตเสียงเก็บเสียงบันทึกคู่กับบทถอดเสียงเต็มและรหัสคลิปต้นฉบับ ขั้นถัดไปของแอปพลิเคชันสามารถค้นข้อความ จัดระเบียบโน้ต หรือสร้างบทสรุปโดยเก็บแหล่งคำพูดไว้ สำหรับคำสั่ง บทถอดเสียงส่งคำที่รู้จำให้แอปพลิเคชัน การดำเนินการใด ๆ เป็นขั้นตีความและปฏิบัติที่แยกต่างหาก สำหรับข้อความตัดตอนสัมภาษณ์ ให้บันทึกตำแหน่งคลิปในเสียงเต็มเพื่อให้ตรวจคำอ้างได้ตรงจุด\n\nผู้ผลิตรับ WAV, MP3, AAC รวม M4A/MP4, FLAC และ Ogg ที่บรรจุ Opus หรือ Vorbis เสียงบันทึกจากเบราว์เซอร์ใน WebM ควรแปลงเป็น Ogg/Opus, MP3 หรือ WAV สำหรับโมเดลนี้ ส่วน Pro มีเอกสารระบุการรองรับคอนเทนเนอร์เพิ่มเติมโดยตรง ส่งไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ขีดจำกัดคำขอของโมเดลพื้นฐานตามเอกสารคือสูงสุด 50 MiB โดยไฟล์ MP3 และ Opus ต้องต่ำกว่า 25 MiB ขนาดไฟล์กับระยะเวลาเสียงเป็นคนละเรื่อง ไฟล์บีบอัดอาจอยู่ในขีดจำกัดอัปโหลดแต่ยังใช้เวลาประมวลผลนานเกินไป\n\nTranscribe 1 ออกแบบสำหรับเสียงบันทึกสั้น ผู้ผลิตแนะนำ Pro สำหรับเสียงยาวกว่าสองสามนาที คำขอยาวของโมเดลพื้นฐานอาจล้มเหลวเมื่อเกินเวลาประมวลผลที่จำกัด เมื่อแบ่งต้นฉบับยาวเป็นคลิปสั้นเพื่อถอดเสียง ให้เก็บเวลาเริ่มต้นของแต่ละคลิปและยืนยันว่าบทถอดเสียงครอบคลุมคลิปทั้งหมดก่อนรวมผล บวกเวลาเริ่มต้นต้นฉบับเข้ากับเวลาในช่วงข้อความของคลิปเพื่อให้การนำทางยังเชื่อมกับเสียงเต็ม คำแนะนำของโมเดลพื้นฐานไม่ควรตีความเป็นงบ 60 นาทีที่แยกต่างหากของ Pro\n\nคำตอบจากผู้ผลิตมี text, duration และ segments ระยะเวลาแสดงเป็นวินาที และควรเก็บบทถอดเสียงเต็มที่อ่านสะดวกเป็นถ้อยคำหลักของคลิป การระบุเวลาเป็นตัวเลือก โดย ignore_timestamps ใน API ของผู้ผลิตมีค่าเริ่มต้น true ส่วน false ขอช่วงระดับคำพร้อมข้อความ เวลาเริ่ม และเวลาสิ้นสุดเป็นวินาที การขอจัดแนวเพิ่มเวลาประมวลผล อาร์เรย์ segments ที่ว่างอาจหมายถึงข้ามการระบุเวลา ไม่มีคำพูด หรือการจัดแนวไม่พร้อมชั่วคราว จึงไม่ควรสรุปอัตโนมัติว่าบทถอดเสียงเต็มว่าง\n\nโดยทั่วไปช่วงข้อความเป็นคำ หรือหนึ่งถึงไม่กี่ตัวอักษรในภาษาจีนและญี่ปุ่น ข้อความของช่วงละเครื่องหมายวรรคตอนและอาจปรับค่าต่างจากบทถอดเสียงเต็ม จึงไม่ใช่สำเนาตัวอักษรต่อตัวอักษรของคำตอบที่อ่านสะดวก ช่วงหนึ่งอาจมีเวลาเริ่มและเวลาสิ้นสุดเท่ากัน ใช้ช่วงข้อความเพื่อหาตำแหน่งในเสียงหรือเตรียมการแสดงตามเวลา และใช้ข้อความเต็มเมื่อถ้อยคำกับวรรคตอนมีความสำคัญ เก็บสองรูปแบบนี้แยกกันในชิ้นงานผลลัพธ์\n\nระบบตรวจจับภาษาอัตโนมัติ ไม่ว่าจะส่งคำใบ้ภาษาหรือไม่ ผู้ผลิตระบุรหัส ISO 639-1 ตัวพิมพ์เล็กสำหรับคำใบ้ และคืนรหัสภาษาสำหรับตรรกะแอปพลิเคชันพร้อมชื่อภาษาสำหรับแสดงเมื่อทราบ คำตอบรายงานภาษาเดียว ไม่ใช่ทุกภาษาในเสียงที่สลับภาษา เก็บถ้อยคำต้นฉบับและข้อมูลภาษาที่มีไว้กับผลลัพธ์ แทนการถือว่าคำขอถอดเสียงเป็นการแปล\n\nสำหรับเวิร์กโฟลว์คำบรรยาย ให้รวมช่วงเวลาที่ต่อเนื่องเป็นข้อความคำบรรยายที่อ่านสะดวกแทนการแสดงทีละคำ ผลลัพธ์ที่มีประโยชน์คือไฟล์ SRT หรือ WebVTT ที่เชื่อมกับคลิปต้นฉบับ โดยกำหนดขอบเขตให้เหมาะกับจังหวะหยุดและมีข้อความบนจอในปริมาณพอดี ตรวจเวลาที่ขาดหายและให้เวลาสิ้นสุดแต่ละช่วงอยู่หลังเวลาเริ่ม การจัดกลุ่มคำบรรยายและรูปแบบไฟล์เป็นขั้นของแอปพลิเคชันที่สร้างจากการจัดแนวที่ได้รับ รูปแบบแสดงควรเหมาะกับเครื่องเล่นและผู้ชม\n\nตัวควบคุมของ Transcribe 1 ตามเอกสารคือเสียง คำใบ้ภาษา และตัวเลือกการระบุเวลา เครื่องหมายผู้พูด รอบผู้พูดแบบมีโครงสร้าง ตัวควบคุมเหตุการณ์อารมณ์ และคำใบ้จำนวนผู้พูดของ Pro เป็นคุณสมบัติแยกต่างหาก ไม่อยู่ในข้อกำหนดคำตอบของโมเดลพื้นฐานนี้ เลือกชิ้นงานที่ต้องการก่อนประมวลผล จะเป็นข้อความอ่านสะดวกสำหรับโน้ต หรือข้อความพร้อมการจัดแนวเพื่อการนำทางและคำบรรยาย การเก็บรหัสคลิป บทถอดเสียง และเวลาที่มี ทำให้ใช้ผลลัพธ์ในขั้นถัดไปของแอปพลิเคชันได้",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "10d5c8ef503c385ceec24e4efe4be0a17d8fa19063afe91f80d6b4a420579a51",
    "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</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/transcribe-1</code><button type=\"button\" id=\"copy-id\">คัดลอก ID</button></div><nav class=\"card-jump-nav\" aria-label=\"ส่วนต่าง ๆ ของการ์ดโมเดล\"><button type=\"button\" data-card-jump=\"overview\">เริ่มต้น</button><button type=\"button\" data-card-jump=\"methods\">อินพุตและเมธอด</button><button type=\"button\" data-card-jump=\"pricing\">ราคา</button><button type=\"button\" data-card-jump=\"examples\">ตัวอย่าง</button><button type=\"button\" data-card-jump=\"results\">ผลลัพธ์</button><button type=\"button\" data-card-jump=\"aliases\">ชื่ออื่น</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"เมธอด API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1\">การรู้จำ</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">เริ่มต้น</h3><p class=\"mdesc-full\">Transcribe 1 แปลงเสียงบันทึกสั้นเป็นข้อความ พร้อมตรวจจับภาษาอัตโนมัติและตัวเลือกเวลาประทับระดับคำ ใช้บทถอดเสียงสำหรับโน้ตเสียง คลิปที่ค้นหาได้ หรือการเตรียมคำบรรยาย โดยแยกช่วงข้อความพร้อมเวลาออกจากข้อความฉบับเต็มที่อ่านสะดวก</p><dl class=\"card-io\" data-card-io><div><dt>อินพุตที่รองรับ</dt><dd>เสียง</dd></div><div><dt>ผลลัพธ์</dt><dd>ข้อความ</dd></div></dl><details class=\"card-about\"><summary>เกี่ยวกับโมเดล</summary><p class=\"note-s\" data-model-method-boundary>คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก</p><div class=\"mabout\" id=\"m-about\"><p>Transcribe 1 เป็นโมเดลแปลงเสียงพูดเป็นข้อความทั่วไปของ Fish Audio สำหรับเสียงบันทึกสั้น รับไฟล์เสียงและคืนคำที่รู้จำเป็นข้อความ พร้อมระยะเวลาการบันทึก ช่วงข้อความพร้อมเวลาที่เลือกขอได้ และข้อมูลภาษาเมื่อทราบ เหมาะกับโน้ตเสียงสั้น คำสั่งพูด ข้อความตัดตอนจากเสียงบันทึก หรือคลิปเสียงที่ต้องการแปลงเป็นข้อความให้อ่านได้</p><p>ตัวอย่างเวิร์กโฟลว์โน้ตเสียงเก็บเสียงบันทึกคู่กับบทถอดเสียงเต็มและรหัสคลิปต้นฉบับ ขั้นถัดไปของแอปพลิเคชันสามารถค้นข้อความ จัดระเบียบโน้ต หรือสร้างบทสรุปโดยเก็บแหล่งคำพูดไว้ สำหรับคำสั่ง บทถอดเสียงส่งคำที่รู้จำให้แอปพลิเคชัน การดำเนินการใด ๆ เป็นขั้นตีความและปฏิบัติที่แยกต่างหาก สำหรับข้อความตัดตอนสัมภาษณ์ ให้บันทึกตำแหน่งคลิปในเสียงเต็มเพื่อให้ตรวจคำอ้างได้ตรงจุด</p><p>ผู้ผลิตรับ WAV, MP3, AAC รวม M4A/MP4, FLAC และ Ogg ที่บรรจุ Opus หรือ Vorbis เสียงบันทึกจากเบราว์เซอร์ใน WebM ควรแปลงเป็น Ogg/Opus, MP3 หรือ WAV สำหรับโมเดลนี้ ส่วน Pro มีเอกสารระบุการรองรับคอนเทนเนอร์เพิ่มเติมโดยตรง ส่งไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ขีดจำกัดคำขอของโมเดลพื้นฐานตามเอกสารคือสูงสุด 50 MiB โดยไฟล์ MP3 และ Opus ต้องต่ำกว่า 25 MiB ขนาดไฟล์กับระยะเวลาเสียงเป็นคนละเรื่อง ไฟล์บีบอัดอาจอยู่ในขีดจำกัดอัปโหลดแต่ยังใช้เวลาประมวลผลนานเกินไป</p><p>Transcribe 1 ออกแบบสำหรับเสียงบันทึกสั้น ผู้ผลิตแนะนำ Pro สำหรับเสียงยาวกว่าสองสามนาที คำขอยาวของโมเดลพื้นฐานอาจล้มเหลวเมื่อเกินเวลาประมวลผลที่จำกัด เมื่อแบ่งต้นฉบับยาวเป็นคลิปสั้นเพื่อถอดเสียง ให้เก็บเวลาเริ่มต้นของแต่ละคลิปและยืนยันว่าบทถอดเสียงครอบคลุมคลิปทั้งหมดก่อนรวมผล บวกเวลาเริ่มต้นต้นฉบับเข้ากับเวลาในช่วงข้อความของคลิปเพื่อให้การนำทางยังเชื่อมกับเสียงเต็ม คำแนะนำของโมเดลพื้นฐานไม่ควรตีความเป็นงบ 60 นาทีที่แยกต่างหากของ Pro</p><p>คำตอบจากผู้ผลิตมี text, duration และ segments ระยะเวลาแสดงเป็นวินาที และควรเก็บบทถอดเสียงเต็มที่อ่านสะดวกเป็นถ้อยคำหลักของคลิป การระบุเวลาเป็นตัวเลือก โดย ignore_timestamps ใน API ของผู้ผลิตมีค่าเริ่มต้น true ส่วน false ขอช่วงระดับคำพร้อมข้อความ เวลาเริ่ม และเวลาสิ้นสุดเป็นวินาที การขอจัดแนวเพิ่มเวลาประมวลผล อาร์เรย์ segments ที่ว่างอาจหมายถึงข้ามการระบุเวลา ไม่มีคำพูด หรือการจัดแนวไม่พร้อมชั่วคราว จึงไม่ควรสรุปอัตโนมัติว่าบทถอดเสียงเต็มว่าง</p><p>โดยทั่วไปช่วงข้อความเป็นคำ หรือหนึ่งถึงไม่กี่ตัวอักษรในภาษาจีนและญี่ปุ่น ข้อความของช่วงละเครื่องหมายวรรคตอนและอาจปรับค่าต่างจากบทถอดเสียงเต็ม จึงไม่ใช่สำเนาตัวอักษรต่อตัวอักษรของคำตอบที่อ่านสะดวก ช่วงหนึ่งอาจมีเวลาเริ่มและเวลาสิ้นสุดเท่ากัน ใช้ช่วงข้อความเพื่อหาตำแหน่งในเสียงหรือเตรียมการแสดงตามเวลา และใช้ข้อความเต็มเมื่อถ้อยคำกับวรรคตอนมีความสำคัญ เก็บสองรูปแบบนี้แยกกันในชิ้นงานผลลัพธ์</p><p>ระบบตรวจจับภาษาอัตโนมัติ ไม่ว่าจะส่งคำใบ้ภาษาหรือไม่ ผู้ผลิตระบุรหัส ISO 639-1 ตัวพิมพ์เล็กสำหรับคำใบ้ และคืนรหัสภาษาสำหรับตรรกะแอปพลิเคชันพร้อมชื่อภาษาสำหรับแสดงเมื่อทราบ คำตอบรายงานภาษาเดียว ไม่ใช่ทุกภาษาในเสียงที่สลับภาษา เก็บถ้อยคำต้นฉบับและข้อมูลภาษาที่มีไว้กับผลลัพธ์ แทนการถือว่าคำขอถอดเสียงเป็นการแปล</p><p>สำหรับเวิร์กโฟลว์คำบรรยาย ให้รวมช่วงเวลาที่ต่อเนื่องเป็นข้อความคำบรรยายที่อ่านสะดวกแทนการแสดงทีละคำ ผลลัพธ์ที่มีประโยชน์คือไฟล์ SRT หรือ WebVTT ที่เชื่อมกับคลิปต้นฉบับ โดยกำหนดขอบเขตให้เหมาะกับจังหวะหยุดและมีข้อความบนจอในปริมาณพอดี ตรวจเวลาที่ขาดหายและให้เวลาสิ้นสุดแต่ละช่วงอยู่หลังเวลาเริ่ม การจัดกลุ่มคำบรรยายและรูปแบบไฟล์เป็นขั้นของแอปพลิเคชันที่สร้างจากการจัดแนวที่ได้รับ รูปแบบแสดงควรเหมาะกับเครื่องเล่นและผู้ชม</p><p>ตัวควบคุมของ Transcribe 1 ตามเอกสารคือเสียง คำใบ้ภาษา และตัวเลือกการระบุเวลา เครื่องหมายผู้พูด รอบผู้พูดแบบมีโครงสร้าง ตัวควบคุมเหตุการณ์อารมณ์ และคำใบ้จำนวนผู้พูดของ Pro เป็นคุณสมบัติแยกต่างหาก ไม่อยู่ในข้อกำหนดคำตอบของโมเดลพื้นฐานนี้ เลือกชิ้นงานที่ต้องการก่อนประมวลผล จะเป็นข้อความอ่านสะดวกสำหรับโน้ต หรือข้อความพร้อมการจัดแนวเพื่อการนำทางและคำบรรยาย การเก็บรหัสคลิป บทถอดเสียง และเวลาที่มี ทำให้ใช้ผลลัพธ์ในขั้นถัดไปของแอปพลิเคชันได้</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · การถอดเสียง</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>audio</code></dd></div><div><dt>ขาออก</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>fish-audio/transcribe-1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>object</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>พารามิเตอร์และวงจรการทำงานของเมธอด</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>พารามิเตอร์</th><th>ข้อกำหนด</th></tr></thead><tbody><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>content_type</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>application/json</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>required</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>model, input_audio</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_types</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>audio</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_conditions</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ตัวอย่างนี้อ่านไฟล์ PCM WAV จริงของคุณที่ไม่ว่าง เข้ารหัสไบต์ทั้งหมดของไฟล์เป็น base64 และส่ง input_audio.format เป็น wav</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id ที่ตรงตามบันทึกสื่อเดิมซึ่งเป็นของคุณ</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">ราคา</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก</p><dl data-price-conditions><dt>โหมดรวดเร็ว</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมดรวดเร็ว</span></dd><dt>โหมดยืดหยุ่น</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></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">ตัวอย่างคำขอ</h3><h4>Ailoot Ultra · การถอดเสียง</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1361-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1361-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · ไฟล์ WAV จริงและผลลัพธ์ต้นฉบับที่ครบถ้วน</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1361-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1361-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;fish-audio/transcribe-1&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · การถอดเสียง</h4><p class=\"note-s\">เนื้อหาการตอบกลับเดิมทั้งหมด สถานะ และส่วนหัวที่ส่งต่อ ตัวจัดการนี้ไม่เพิ่มโครงสร้าง JSON ฟิลด์ข้อความ หรือโครงสร้างห่อหุ้มงานแบบสากล</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด</h5><p class=\"note-s\">เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน</p><p class=\"note-s\">เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ X-Client-Request-ID จริงและการตอบกลับทั้งหมด อ่านแอสเซ็ตเดิมที่เป็นของคุณและ URL เนื้อหาที่ลงลายเซ็นตรงตามที่ส่งกลับ ห้ามส่งคำขอสร้างที่ยังไม่แน่ชัดซ้ำ</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>ข้อผิดพลาดและขั้นตอนถัดไป</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>การตอบกลับ</th><th>เงื่อนไข</th><th>ขั้นตอนถัดไป</th></tr></thead><tbody><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>เนื้อหา JSON หรือ ID โมเดลมาตรฐานที่ระบุชัดเจนไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บการตอบกลับและแก้ไขฟิลด์คำขอที่ระบุ</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>401 · <code>authentication_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>คีย์ API ของ Ailoot ไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>ใช้คีย์ API ของ Ailoot ที่คุณได้รับอนุญาต</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>403 · <code>permission_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>กลุ่มคีย์ไม่อนุญาตให้ใช้เมธอดนี้</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>404 · <code>not_found_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>เมธอดที่เลือกไม่มีเส้นทางที่ได้รับอนุญาต</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>อัตราค่าบริการที่ยอมรับไม่สามารถระบุปริมาณข้อมูลขาเข้าหรือขอบเขตที่จำเป็นได้</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บการตอบกลับไว้ ใช้รูปแบบข้อมูลขาเข้าที่อัตราค่าบริการที่ยอมรับกำหนดไว้</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>503 · <code></code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ที่เก็บข้อมูล เส้นทาง ราคาเมธอด หรือการกันวงเงินที่จำเป็นไม่พร้อมใช้งาน</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บการตอบกลับเดิมทั้งหมด การกันวงเงินที่ไม่แน่นอนไม่อนุญาตให้ส่งซ้ำ</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>502 · <code>server_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ต้องตรวจสอบผลลัพธ์ การใช้งาน หรือการชำระบัญชีเดิม</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บ ID คำขอจริงและการตอบกลับเดิม อ่านบันทึกเดิมที่เป็นของคุณ อย่าส่งคำขอสร้างซ้ำ</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Ftranscribe-1&amp;route=Ultra&amp;caller=fish-audio%2Ftranscribe-1&amp;fmt=transcriptions\"><code>fish-audio/transcribe-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/transcribe-1",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|fish-audio%2Ftranscribe-1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "เนื้อหา JSON หรือ ID โมเดลมาตรฐานที่ระบุชัดเจนไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "เก็บการตอบกลับและแก้ไขฟิลด์คำขอที่ระบุ",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "คีย์ API ของ Ailoot ไม่ถูกต้อง",
                "http_status": 401,
                "recovery": "ใช้คีย์ API ของ Ailoot ที่คุณได้รับอนุญาต",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "กลุ่มคีย์ไม่อนุญาตให้ใช้เมธอดนี้",
                "http_status": 403,
                "recovery": "เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "เมธอดที่เลือกไม่มีเส้นทางที่ได้รับอนุญาต",
                "http_status": 404,
                "recovery": "เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "อัตราค่าบริการที่ยอมรับไม่สามารถระบุปริมาณข้อมูลขาเข้าหรือขอบเขตที่จำเป็นได้",
                "http_status": 422,
                "recovery": "เก็บการตอบกลับไว้ ใช้รูปแบบข้อมูลขาเข้าที่อัตราค่าบริการที่ยอมรับกำหนดไว้",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "ที่เก็บข้อมูล เส้นทาง ราคาเมธอด หรือการกันวงเงินที่จำเป็นไม่พร้อมใช้งาน",
                "http_status": 503,
                "recovery": "เก็บการตอบกลับเดิมทั้งหมด การกันวงเงินที่ไม่แน่นอนไม่อนุญาตให้ส่งซ้ำ",
                "type": null
              },
              {
                "code": null,
                "condition": "ต้องตรวจสอบผลลัพธ์ การใช้งาน หรือการชำระบัญชีเดิม",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "เก็บ ID คำขอจริงและการตอบกลับเดิม อ่านบันทึกเดิมที่เป็นของคุณ อย่าส่งคำขอสร้างซ้ำ",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID จริงและการตอบกลับทั้งหมด อ่านแอสเซ็ตเดิมที่เป็นของคุณและ URL เนื้อหาที่ลงลายเซ็นตรงตามที่ส่งกลับ ห้ามส่งคำขอสร้างที่ยังไม่แน่ชัดซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "เนื้อหาการตอบกลับเดิมทั้งหมด สถานะ และส่วนหัวที่ส่งต่อ ตัวจัดการนี้ไม่เพิ่มโครงสร้าง JSON ฟิลด์ข้อความ หรือโครงสร้างห่อหุ้มงานแบบสากล"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ตัวอย่างนี้อ่านไฟล์ PCM WAV จริงของคุณที่ไม่ว่าง เข้ารหัสไบต์ทั้งหมดของไฟล์เป็น base64 และส่ง input_audio.format เป็น wav"
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id ที่ตรงตามบันทึกสื่อเดิมซึ่งเป็นของคุณ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "การถอดเสียง",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/transcribe-1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "da8b660f95b4277dc61b0236bf844d8b58fbd3e959c3ae17887f8462441df63b",
    "input_html_sha256": "08760aa4013ea2de0ed17db943363fcdeb121624144d86e77096f7d9b649c00c",
    "private_audit_sha256": "85f732c38a8fd91dec9d22948f4603c7be8b678504d2c171290bc0c780a974a0",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/fish-audio-transcribe-1/",
    "description": "Transcribe 1 แปลงเสียงบันทึกสั้นเป็นข้อความ พร้อมตรวจจับภาษาอัตโนมัติและตัวเลือกเวลาประทับระดับคำ ใช้บทถอดเสียงสำหรับโน้ตเสียง คลิปที่ค้นหาได้ หรือการเตรียมคำบรรยาย โดยแยกช่วงข้อความพร้อมเวลาออกจากข้อความฉบับเต็มที่อ่านสะดวก",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/fish-audio-transcribe-1/index.md",
    "title": "Fish Audio: Transcribe 1 — Ailoot",
    "url": "https://ailoot.ai/models/th/fish-audio-transcribe-1/"
  },
  "rawModel": {
    "about": "Transcribe 1 เป็นโมเดลแปลงเสียงพูดเป็นข้อความทั่วไปของ Fish Audio สำหรับเสียงบันทึกสั้น รับไฟล์เสียงและคืนคำที่รู้จำเป็นข้อความ พร้อมระยะเวลาการบันทึก ช่วงข้อความพร้อมเวลาที่เลือกขอได้ และข้อมูลภาษาเมื่อทราบ เหมาะกับโน้ตเสียงสั้น คำสั่งพูด ข้อความตัดตอนจากเสียงบันทึก หรือคลิปเสียงที่ต้องการแปลงเป็นข้อความให้อ่านได้\n\nตัวอย่างเวิร์กโฟลว์โน้ตเสียงเก็บเสียงบันทึกคู่กับบทถอดเสียงเต็มและรหัสคลิปต้นฉบับ ขั้นถัดไปของแอปพลิเคชันสามารถค้นข้อความ จัดระเบียบโน้ต หรือสร้างบทสรุปโดยเก็บแหล่งคำพูดไว้ สำหรับคำสั่ง บทถอดเสียงส่งคำที่รู้จำให้แอปพลิเคชัน การดำเนินการใด ๆ เป็นขั้นตีความและปฏิบัติที่แยกต่างหาก สำหรับข้อความตัดตอนสัมภาษณ์ ให้บันทึกตำแหน่งคลิปในเสียงเต็มเพื่อให้ตรวจคำอ้างได้ตรงจุด\n\nผู้ผลิตรับ WAV, MP3, AAC รวม M4A/MP4, FLAC และ Ogg ที่บรรจุ Opus หรือ Vorbis เสียงบันทึกจากเบราว์เซอร์ใน WebM ควรแปลงเป็น Ogg/Opus, MP3 หรือ WAV สำหรับโมเดลนี้ ส่วน Pro มีเอกสารระบุการรองรับคอนเทนเนอร์เพิ่มเติมโดยตรง ส่งไฟล์เสียงหนึ่งไฟล์ต่อคำขอ ขีดจำกัดคำขอของโมเดลพื้นฐานตามเอกสารคือสูงสุด 50 MiB โดยไฟล์ MP3 และ Opus ต้องต่ำกว่า 25 MiB ขนาดไฟล์กับระยะเวลาเสียงเป็นคนละเรื่อง ไฟล์บีบอัดอาจอยู่ในขีดจำกัดอัปโหลดแต่ยังใช้เวลาประมวลผลนานเกินไป\n\nTranscribe 1 ออกแบบสำหรับเสียงบันทึกสั้น ผู้ผลิตแนะนำ Pro สำหรับเสียงยาวกว่าสองสามนาที คำขอยาวของโมเดลพื้นฐานอาจล้มเหลวเมื่อเกินเวลาประมวลผลที่จำกัด เมื่อแบ่งต้นฉบับยาวเป็นคลิปสั้นเพื่อถอดเสียง ให้เก็บเวลาเริ่มต้นของแต่ละคลิปและยืนยันว่าบทถอดเสียงครอบคลุมคลิปทั้งหมดก่อนรวมผล บวกเวลาเริ่มต้นต้นฉบับเข้ากับเวลาในช่วงข้อความของคลิปเพื่อให้การนำทางยังเชื่อมกับเสียงเต็ม คำแนะนำของโมเดลพื้นฐานไม่ควรตีความเป็นงบ 60 นาทีที่แยกต่างหากของ Pro\n\nคำตอบจากผู้ผลิตมี text, duration และ segments ระยะเวลาแสดงเป็นวินาที และควรเก็บบทถอดเสียงเต็มที่อ่านสะดวกเป็นถ้อยคำหลักของคลิป การระบุเวลาเป็นตัวเลือก โดย ignore_timestamps ใน API ของผู้ผลิตมีค่าเริ่มต้น true ส่วน false ขอช่วงระดับคำพร้อมข้อความ เวลาเริ่ม และเวลาสิ้นสุดเป็นวินาที การขอจัดแนวเพิ่มเวลาประมวลผล อาร์เรย์ segments ที่ว่างอาจหมายถึงข้ามการระบุเวลา ไม่มีคำพูด หรือการจัดแนวไม่พร้อมชั่วคราว จึงไม่ควรสรุปอัตโนมัติว่าบทถอดเสียงเต็มว่าง\n\nโดยทั่วไปช่วงข้อความเป็นคำ หรือหนึ่งถึงไม่กี่ตัวอักษรในภาษาจีนและญี่ปุ่น ข้อความของช่วงละเครื่องหมายวรรคตอนและอาจปรับค่าต่างจากบทถอดเสียงเต็ม จึงไม่ใช่สำเนาตัวอักษรต่อตัวอักษรของคำตอบที่อ่านสะดวก ช่วงหนึ่งอาจมีเวลาเริ่มและเวลาสิ้นสุดเท่ากัน ใช้ช่วงข้อความเพื่อหาตำแหน่งในเสียงหรือเตรียมการแสดงตามเวลา และใช้ข้อความเต็มเมื่อถ้อยคำกับวรรคตอนมีความสำคัญ เก็บสองรูปแบบนี้แยกกันในชิ้นงานผลลัพธ์\n\nระบบตรวจจับภาษาอัตโนมัติ ไม่ว่าจะส่งคำใบ้ภาษาหรือไม่ ผู้ผลิตระบุรหัส ISO 639-1 ตัวพิมพ์เล็กสำหรับคำใบ้ และคืนรหัสภาษาสำหรับตรรกะแอปพลิเคชันพร้อมชื่อภาษาสำหรับแสดงเมื่อทราบ คำตอบรายงานภาษาเดียว ไม่ใช่ทุกภาษาในเสียงที่สลับภาษา เก็บถ้อยคำต้นฉบับและข้อมูลภาษาที่มีไว้กับผลลัพธ์ แทนการถือว่าคำขอถอดเสียงเป็นการแปล\n\nสำหรับเวิร์กโฟลว์คำบรรยาย ให้รวมช่วงเวลาที่ต่อเนื่องเป็นข้อความคำบรรยายที่อ่านสะดวกแทนการแสดงทีละคำ ผลลัพธ์ที่มีประโยชน์คือไฟล์ SRT หรือ WebVTT ที่เชื่อมกับคลิปต้นฉบับ โดยกำหนดขอบเขตให้เหมาะกับจังหวะหยุดและมีข้อความบนจอในปริมาณพอดี ตรวจเวลาที่ขาดหายและให้เวลาสิ้นสุดแต่ละช่วงอยู่หลังเวลาเริ่ม การจัดกลุ่มคำบรรยายและรูปแบบไฟล์เป็นขั้นของแอปพลิเคชันที่สร้างจากการจัดแนวที่ได้รับ รูปแบบแสดงควรเหมาะกับเครื่องเล่นและผู้ชม\n\nตัวควบคุมของ Transcribe 1 ตามเอกสารคือเสียง คำใบ้ภาษา และตัวเลือกการระบุเวลา เครื่องหมายผู้พูด รอบผู้พูดแบบมีโครงสร้าง ตัวควบคุมเหตุการณ์อารมณ์ และคำใบ้จำนวนผู้พูดของ Pro เป็นคุณสมบัติแยกต่างหาก ไม่อยู่ในข้อกำหนดคำตอบของโมเดลพื้นฐานนี้ เลือกชิ้นงานที่ต้องการก่อนประมวลผล จะเป็นข้อความอ่านสะดวกสำหรับโน้ต หรือข้อความพร้อมการจัดแนวเพื่อการนำทางและคำบรรยาย การเก็บรหัสคลิป บทถอดเสียง และเวลาที่มี ทำให้ใช้ผลลัพธ์ในขั้นถัดไปของแอปพลิเคชันได้",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "fish-audio/transcribe-1",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "เนื้อหา JSON หรือ ID โมเดลมาตรฐานที่ระบุชัดเจนไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "เก็บการตอบกลับและแก้ไขฟิลด์คำขอที่ระบุ",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "คีย์ API ของ Ailoot ไม่ถูกต้อง",
                "http_status": 401,
                "recovery": "ใช้คีย์ API ของ Ailoot ที่คุณได้รับอนุญาต",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "กลุ่มคีย์ไม่อนุญาตให้ใช้เมธอดนี้",
                "http_status": 403,
                "recovery": "เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "เมธอดที่เลือกไม่มีเส้นทางที่ได้รับอนุญาต",
                "http_status": 404,
                "recovery": "เก็บรายละเอียดข้อผิดพลาดที่ส่งกลับไว้",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "อัตราค่าบริการที่ยอมรับไม่สามารถระบุปริมาณข้อมูลขาเข้าหรือขอบเขตที่จำเป็นได้",
                "http_status": 422,
                "recovery": "เก็บการตอบกลับไว้ ใช้รูปแบบข้อมูลขาเข้าที่อัตราค่าบริการที่ยอมรับกำหนดไว้",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "ที่เก็บข้อมูล เส้นทาง ราคาเมธอด หรือการกันวงเงินที่จำเป็นไม่พร้อมใช้งาน",
                "http_status": 503,
                "recovery": "เก็บการตอบกลับเดิมทั้งหมด การกันวงเงินที่ไม่แน่นอนไม่อนุญาตให้ส่งซ้ำ",
                "type": null
              },
              {
                "code": null,
                "condition": "ต้องตรวจสอบผลลัพธ์ การใช้งาน หรือการชำระบัญชีเดิม",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "เก็บ ID คำขอจริงและการตอบกลับเดิม อ่านบันทึกเดิมที่เป็นของคุณ อย่าส่งคำขอสร้างซ้ำ",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID จริงและการตอบกลับทั้งหมด อ่านแอสเซ็ตเดิมที่เป็นของคุณและ URL เนื้อหาที่ลงลายเซ็นตรงตามที่ส่งกลับ ห้ามส่งคำขอสร้างที่ยังไม่แน่ชัดซ้ำ"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "เนื้อหาการตอบกลับเดิมทั้งหมด สถานะ และส่วนหัวที่ส่งต่อ ตัวจัดการนี้ไม่เพิ่มโครงสร้าง JSON ฟิลด์ข้อความ หรือโครงสร้างห่อหุ้มงานแบบสากล"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "fish-audio/transcribe-1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "fish-audio/transcribe-1"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "fish-audio/transcribe-1"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "ตัวอย่างนี้อ่านไฟล์ PCM WAV จริงของคุณที่ไม่ว่าง เข้ารหัสไบต์ทั้งหมดของไฟล์เป็น base64 และส่ง input_audio.format เป็น wav"
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id ที่ตรงตามบันทึกสื่อเดิมซึ่งเป็นของคุณ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'fish-audio/transcribe-1', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "การถอดเสียง",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0002
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0002",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0002",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/transcribe-1",
        "request_model_id": "fish-audio/transcribe-1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Transcribe 1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Transcribe 1 แปลงเสียงบันทึกสั้นเป็นข้อความ พร้อมตรวจจับภาษาอัตโนมัติและตัวเลือกเวลาประทับระดับคำ ใช้บทถอดเสียงสำหรับโน้ตเสียง คลิปที่ค้นหาได้ หรือการเตรียมคำบรรยาย โดยแยกช่วงข้อความพร้อมเวลาออกจากข้อความฉบับเต็มที่อ่านสะดวก"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Transcribe 1 แปลงเสียงบันทึกสั้นเป็นข้อความ พร้อมตรวจจับภาษาอัตโนมัติและตัวเลือกเวลาประทับระดับคำ ใช้บทถอดเสียงสำหรับโน้ตเสียง คลิปที่ค้นหาได้ หรือการเตรียมคำบรรยาย โดยแยกช่วงข้อความพร้อมเวลาออกจากข้อความฉบับเต็มที่อ่านสะดวก",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "cbf59b8441f0bc426661fbacc632fcded03764a51b8c43a10473041efdd2e9af",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "f25d9e9820e441ef81abddafbcd54d724ff0866f18ea7746bd484116092a33c1"
}
