{
  "aboutHtml": "<p>Muse Voice Transcribe 1.0 เป็นโมเดลรับรู้เสียงของ Meta สำหรับถอดเสียงพูด ตรวจจับขอบเขตของถ้อยคำที่พูด และระบุว่าช่วงการพูดแต่ละช่วงเป็นของผู้พูดคนใด โมเดลอยู่ในตระกูล Muse Spark และรวมการรู้จำเสียงพูด การแยกผู้พูด และการตรวจจับจุดสิ้นสุดการพูดไว้ภายในโมเดล ผลลัพธ์คือข้อความที่รู้จำได้ พร้อมข้อมูลเวลาและผู้พูดตามที่มีให้ในโหมดที่เลือก</p><p>โมเดลประมวลผลเสียงเป็นช่วงละ 80 มิลลิวินาที และตัดสินใจว่าจะฟังต่อหรือส่งข้อความออกมา การหน่วงเวลาแบบปรับได้ช่วยให้รอเสียงเพิ่มเติมเมื่อมีคำที่ตีความได้ยากกว่า จึงสร้างข้อความบางส่วนระหว่างที่เสียงพูดยังคงเข้ามา แล้วตามด้วยผลการถอดเสียงที่เสร็จสมบูรณ์ ควรมองข้อความคาดการณ์ชั่วคราวกับช่วงการพูดที่สมบูรณ์ว่าเป็นคนละขั้นตอนของประสบการณ์การฟัง</p><p>เลือกได้สามโหมด Push-to-talk เป็นค่าเริ่มต้นสำหรับถ้อยคำหนึ่งช่วงที่ควบคุมการเริ่มและจบได้ เช่น คำถามด้วยเสียงหรือข้อความสั้นที่ป้อนด้วยเสียง Endpointing ให้โมเดลตรวจจับขอบเขตของช่วงการพูด และส่งบทถอดเสียงที่สมบูรณ์หนึ่งรายการต่อส่วนที่ตรวจพบ Diarization ระบุข้อความที่รู้จำได้ด้วยป้ายกำกับผู้พูด และออกแบบมาสำหรับการบันทึกที่มีผู้พูดหลายคน มากกว่าการรับส่งคำสั่งเสียงสลับกันด้วยความเร็วสูงสุด</p><p>สำหรับคลิปที่บันทึกไว้ เวิร์กโฟลว์ถอดเสียงจากไฟล์จะคืนบทถอดเสียงฉบับสมบูรณ์ด้วยคำขอเดียว ผลลัพธ์เริ่มต้นเป็น JSON ที่มีบทถอดเสียงและระยะเวลาของเสียง พร้อมอาร์เรย์ turns ในโหมด endpointing และ diarization แต่ละช่วงการพูดสามารถมีตัวระบุ เวลาเริ่มและสิ้นสุดเป็นมิลลิวินาที และข้อความที่รู้จำได้ โหมด diarization มีป้ายกำกับผู้พูด ส่วน push-to-talk ให้บทถอดเสียงฉบับสมบูรณ์โดยไม่มีช่วงการพูดที่ตรวจพบอยู่ในอาร์เรย์ดังกล่าว อินเทอร์เฟซสำหรับไฟล์บันทึกเสียงของผู้ผลิตยังสามารถคืนข้อความธรรมดาหรือสตรีมเหตุการณ์การถอดเสียงได้ด้วย ข้อความธรรมดาแยกช่วงการพูดที่ตรวจพบไว้คนละบรรทัด และอาจมีป้ายกำกับผู้พูด ส่วนสตรีมเหตุการณ์จบลงหลังเหตุการณ์สุดท้ายโดยไม่มีสรุป JSON แยกต่างหาก โหมดข้อความบางส่วนแบบ delta จะคืนข้อความที่เพิ่มขึ้นทีละส่วน ขณะที่เหตุการณ์บทถอดเสียงสุดท้ายมีถ้อยคำครบทั้งหมด</p><p>เตรียมไฟล์ RIFF/WAVE ที่บรรจุเสียงโมโนแบบ PCM จำนวนเต็ม 16 บิต ที่ 16 หรือ 24 kHz อัตราดั้งเดิมของโมเดลคือ 24 kHz และอินเทอร์เฟซรับ 16 kHz ได้เช่นกัน ให้แปลงคอนเทนเนอร์หรือการเข้ารหัสรูปแบบอื่นเป็น WAV ที่รองรับนี้ก่อนส่งไฟล์บันทึกเสียง โปรไฟล์ถอดเสียงจากไฟล์รองรับเสียงยาวไม่เกิน 10 นาที และขนาดเนื้อหาคำขอรวมไม่เกิน 32 MB เก็บไฟล์บันทึกต้นฉบับและไฟล์ที่แปลงไว้โดยเชื่อมโยงกับบทถอดเสียงที่ได้รับ เพื่อให้ย้อนกลับมาฟังตรวจสอบได้ภายหลัง</p><p>เวิร์กโฟลว์เสียงสดใช้ PCM ดิบแบบโมโน จำนวนเต็มมีเครื่องหมาย 16 บิต และ little-endian โดยส่งเสียง 16 หรือ 24 kHz ในจังหวะใกล้เคียงเวลาจริง ช่วงเวลาของเซสชันตามเอกสารคือ 60 นาที Meta อธิบายว่าโมเดลรับเสียงโดยตรงได้นานกว่าหนึ่งชั่วโมง แต่ขีดจำกัดของไฟล์และเซสชันสดที่ระบุในเอกสารยังเป็นขอบเขตอินเทอร์เฟซคนละส่วน เลือกเวิร์กโฟลว์ไฟล์บันทึกหรือเวิร์กโฟลว์สดตามว่าเสียงนั้นบันทึกเสร็จแล้วหรือยังอยู่ระหว่างการรับเสียง และเก็บผลลัพธ์จากแต่ละเซสชันให้เชื่อมโยงกับส่วนข้อมูลนำเข้าของเซสชันนั้น</p><p>Muse Voice Transcribe ผ่านการฝึกด้วยมากกว่า 70 ภาษา ขณะที่อินเทอร์เฟซการรู้จำตามเอกสารแจกแจงภาษาที่รองรับไว้ 25 ภาษา ซึ่งรวมถึงอังกฤษ ฝรั่งเศส เยอรมัน สเปน อาหรับ จีนกลาง ฮินดี ญี่ปุ่น เกาหลี อิตาลี และโปรตุเกส โมเดลรู้จำการสลับภาษาได้ทั้งภายในประโยคและระหว่างประโยค คำใบ้ด้านภาษาสามารถระบุภาษาที่คาดว่าจะได้ยินในเสียง แต่มีหน้าที่ชี้นำการรู้จำ ไม่ได้บังคับให้บทถอดเสียงเป็นภาษาเดียว</p><p>คำใบ้ด้านคำศัพท์ช่วยในการรู้จำศัพท์ผลิตภัณฑ์ อักษรย่อ ชื่อบุคคล หรือสถานที่ที่สำคัญในไฟล์บันทึกเสียง ให้ระบุคำและตัวสะกดจริงที่คาดว่าจะได้ยิน รายการคำสำคัญช่วยโน้มเอียงการรู้จำ แต่ไม่รับประกันว่าจะสะกดตรงทุกครั้ง จึงควรฟังเสียงเพื่อตรวจสอบคำที่มีผลต่อสาระสำคัญ คำใบ้ด้านภาษาและคำสำคัญถูกเลือกเมื่อเริ่มการถอดเสียง ให้เลือกอย่างเหมาะสมกับไฟล์บันทึกนั้น แทนการเปลี่ยนความหมายของคำใบ้ระหว่างที่เซสชันกำลังทำงาน</p><p>โมเดลรองรับการแยกผู้พูดในการสนทนาที่มีผู้พูดมากกว่า 20 คน ป้ายกำกับ เช่น A และ B ใช้ระบุผู้พูดภายในงานถอดเสียงหนึ่งงาน ป้ายเหล่านี้ไม่ใช่ชื่อที่ยืนยันแล้ว และไม่ได้ยืนยันว่าป้ายเดียวกันหมายถึงบุคคลเดียวกันในอีกเซสชันหนึ่ง สำหรับงานวิเคราะห์การประชุมจากต้นฉบับ ให้ขอช่วงการพูดที่ระบุผู้พูด เก็บไฟล์บันทึกเสียง และใช้ป้ายกำกับจัดระเบียบการสนทนาก่อนผูกชื่อผู้เข้าร่วมจริงผ่านเวิร์กโฟลว์ของแอปพลิเคชัน</p><p>บทถอดเสียงบางส่วนจากเสียงสดอาจเปลี่ยนเมื่อมีเสียงพูดเพิ่มเติมเข้ามา ในโหมดสะสม ข้อความบางส่วนแต่ละรายการจะแทนที่ข้อความคาดการณ์ก่อนหน้า ไม่ใช่เพิ่มสำเนาของข้อความนั้นอีกครั้ง การตรวจพบจุดสิ้นสุดการพูดเป็นการทำเครื่องหมายขอบเขต ขณะที่ผลลัพธ์ของช่วงการพูดที่สมบูรณ์จะให้ข้อความสุดท้าย ซึ่งอาจต่างจากข้อความบางส่วนรายการล่าสุด เก็บช่วงการพูดที่ซ้อนทับกันให้ผูกกับตัวระบุช่วงการพูด และรับผลลัพธ์ที่สมบูรณ์ก่อนถือว่าบทถอดเสียงเสร็จแล้ว เมื่อเสียงสดที่ส่งเข้าไปสิ้นสุด ให้ส่งสัญญาณสิ้นสุดข้อมูลนำเข้าและรับผลลัพธ์ต่อไปจนกว่าฝั่งผู้สร้างผลลัพธ์จะระบายรายการที่ค้างอยู่เสร็จ การปิดการเชื่อมต่อทันทีอาจทำให้ผลลัพธ์เหล่านั้นสูญหาย ขอบเขตการพูดที่ตรวจพบหมายถึงจบช่วงการพูดหนึ่งช่วง ไม่ใช่จบทั้งเซสชัน</p><p>ข้อมูลเวลาอยู่ในระดับช่วงการพูด โปรไฟล์นี้ไม่ให้เวลาระดับคำหรือคะแนนความเชื่อมั่น และความคืบหน้าของการประมวลผลเสียงก็ไม่ใช่เวลาของคำใดคำหนึ่ง การตรวจจับเหตุการณ์เสียง การตรวจจับอารมณ์ และการจัดรูปแบบบทถอดเสียงใหม่ก็อยู่นอกโปรไฟล์ผลลัพธ์ตามเอกสารเช่นกัน ใช้ช่วงเวลาการพูดที่คืนมาสำหรับไทม์ไลน์ผู้พูดหรือการตรวจทานระดับส่วน และเก็บถ้อยคำที่รู้จำได้ไว้ หากขั้นตอนแก้ไขแยกต่างหากนำไปสร้างบันทึกที่อ่านลื่นขึ้นในภายหลัง</p><p>ชิ้นงานที่มีประโยชน์ ได้แก่ ข้อความที่ป้อนด้วยเสียงฉบับสมบูรณ์ บทถอดเสียงคำถามด้วยเสียง บทสนทนาที่ระบุผู้พูด หรือไทม์ไลน์ของถ้อยคำที่พูด เปรียบเทียบชื่อ ตัวเลข และศัพท์เทคนิคกับไฟล์บันทึกต้นฉบับ รักษาความเชื่อมโยงของโหมดและข้อมูลเวลา และเก็บช่วงการพูดที่สมบูรณ์ไว้ให้ตรวจทานได้ การถอดเสียงบอกว่าโมเดลรู้จำอะไรจากเสียง ส่วนการตอบคำถามที่พูด การแปล หรือการเปลี่ยนเนื้อหาเป็นบันทึกการประชุมเป็นหน้าที่ของขั้นตอนถัดไปในแอปพลิเคชัน</p>",
  "aboutText": "Muse Voice Transcribe 1.0 เป็นโมเดลรับรู้เสียงของ Meta สำหรับถอดเสียงพูด ตรวจจับขอบเขตของถ้อยคำที่พูด และระบุว่าช่วงการพูดแต่ละช่วงเป็นของผู้พูดคนใด โมเดลอยู่ในตระกูล Muse Spark และรวมการรู้จำเสียงพูด การแยกผู้พูด และการตรวจจับจุดสิ้นสุดการพูดไว้ภายในโมเดล ผลลัพธ์คือข้อความที่รู้จำได้ พร้อมข้อมูลเวลาและผู้พูดตามที่มีให้ในโหมดที่เลือก\n\nโมเดลประมวลผลเสียงเป็นช่วงละ 80 มิลลิวินาที และตัดสินใจว่าจะฟังต่อหรือส่งข้อความออกมา การหน่วงเวลาแบบปรับได้ช่วยให้รอเสียงเพิ่มเติมเมื่อมีคำที่ตีความได้ยากกว่า จึงสร้างข้อความบางส่วนระหว่างที่เสียงพูดยังคงเข้ามา แล้วตามด้วยผลการถอดเสียงที่เสร็จสมบูรณ์ ควรมองข้อความคาดการณ์ชั่วคราวกับช่วงการพูดที่สมบูรณ์ว่าเป็นคนละขั้นตอนของประสบการณ์การฟัง\n\nเลือกได้สามโหมด Push-to-talk เป็นค่าเริ่มต้นสำหรับถ้อยคำหนึ่งช่วงที่ควบคุมการเริ่มและจบได้ เช่น คำถามด้วยเสียงหรือข้อความสั้นที่ป้อนด้วยเสียง Endpointing ให้โมเดลตรวจจับขอบเขตของช่วงการพูด และส่งบทถอดเสียงที่สมบูรณ์หนึ่งรายการต่อส่วนที่ตรวจพบ Diarization ระบุข้อความที่รู้จำได้ด้วยป้ายกำกับผู้พูด และออกแบบมาสำหรับการบันทึกที่มีผู้พูดหลายคน มากกว่าการรับส่งคำสั่งเสียงสลับกันด้วยความเร็วสูงสุด\n\nสำหรับคลิปที่บันทึกไว้ เวิร์กโฟลว์ถอดเสียงจากไฟล์จะคืนบทถอดเสียงฉบับสมบูรณ์ด้วยคำขอเดียว ผลลัพธ์เริ่มต้นเป็น JSON ที่มีบทถอดเสียงและระยะเวลาของเสียง พร้อมอาร์เรย์ turns ในโหมด endpointing และ diarization แต่ละช่วงการพูดสามารถมีตัวระบุ เวลาเริ่มและสิ้นสุดเป็นมิลลิวินาที และข้อความที่รู้จำได้ โหมด diarization มีป้ายกำกับผู้พูด ส่วน push-to-talk ให้บทถอดเสียงฉบับสมบูรณ์โดยไม่มีช่วงการพูดที่ตรวจพบอยู่ในอาร์เรย์ดังกล่าว อินเทอร์เฟซสำหรับไฟล์บันทึกเสียงของผู้ผลิตยังสามารถคืนข้อความธรรมดาหรือสตรีมเหตุการณ์การถอดเสียงได้ด้วย ข้อความธรรมดาแยกช่วงการพูดที่ตรวจพบไว้คนละบรรทัด และอาจมีป้ายกำกับผู้พูด ส่วนสตรีมเหตุการณ์จบลงหลังเหตุการณ์สุดท้ายโดยไม่มีสรุป JSON แยกต่างหาก โหมดข้อความบางส่วนแบบ delta จะคืนข้อความที่เพิ่มขึ้นทีละส่วน ขณะที่เหตุการณ์บทถอดเสียงสุดท้ายมีถ้อยคำครบทั้งหมด\n\nเตรียมไฟล์ RIFF/WAVE ที่บรรจุเสียงโมโนแบบ PCM จำนวนเต็ม 16 บิต ที่ 16 หรือ 24 kHz อัตราดั้งเดิมของโมเดลคือ 24 kHz และอินเทอร์เฟซรับ 16 kHz ได้เช่นกัน ให้แปลงคอนเทนเนอร์หรือการเข้ารหัสรูปแบบอื่นเป็น WAV ที่รองรับนี้ก่อนส่งไฟล์บันทึกเสียง โปรไฟล์ถอดเสียงจากไฟล์รองรับเสียงยาวไม่เกิน 10 นาที และขนาดเนื้อหาคำขอรวมไม่เกิน 32 MB เก็บไฟล์บันทึกต้นฉบับและไฟล์ที่แปลงไว้โดยเชื่อมโยงกับบทถอดเสียงที่ได้รับ เพื่อให้ย้อนกลับมาฟังตรวจสอบได้ภายหลัง\n\nเวิร์กโฟลว์เสียงสดใช้ PCM ดิบแบบโมโน จำนวนเต็มมีเครื่องหมาย 16 บิต และ little-endian โดยส่งเสียง 16 หรือ 24 kHz ในจังหวะใกล้เคียงเวลาจริง ช่วงเวลาของเซสชันตามเอกสารคือ 60 นาที Meta อธิบายว่าโมเดลรับเสียงโดยตรงได้นานกว่าหนึ่งชั่วโมง แต่ขีดจำกัดของไฟล์และเซสชันสดที่ระบุในเอกสารยังเป็นขอบเขตอินเทอร์เฟซคนละส่วน เลือกเวิร์กโฟลว์ไฟล์บันทึกหรือเวิร์กโฟลว์สดตามว่าเสียงนั้นบันทึกเสร็จแล้วหรือยังอยู่ระหว่างการรับเสียง และเก็บผลลัพธ์จากแต่ละเซสชันให้เชื่อมโยงกับส่วนข้อมูลนำเข้าของเซสชันนั้น\n\nMuse Voice Transcribe ผ่านการฝึกด้วยมากกว่า 70 ภาษา ขณะที่อินเทอร์เฟซการรู้จำตามเอกสารแจกแจงภาษาที่รองรับไว้ 25 ภาษา ซึ่งรวมถึงอังกฤษ ฝรั่งเศส เยอรมัน สเปน อาหรับ จีนกลาง ฮินดี ญี่ปุ่น เกาหลี อิตาลี และโปรตุเกส โมเดลรู้จำการสลับภาษาได้ทั้งภายในประโยคและระหว่างประโยค คำใบ้ด้านภาษาสามารถระบุภาษาที่คาดว่าจะได้ยินในเสียง แต่มีหน้าที่ชี้นำการรู้จำ ไม่ได้บังคับให้บทถอดเสียงเป็นภาษาเดียว\n\nคำใบ้ด้านคำศัพท์ช่วยในการรู้จำศัพท์ผลิตภัณฑ์ อักษรย่อ ชื่อบุคคล หรือสถานที่ที่สำคัญในไฟล์บันทึกเสียง ให้ระบุคำและตัวสะกดจริงที่คาดว่าจะได้ยิน รายการคำสำคัญช่วยโน้มเอียงการรู้จำ แต่ไม่รับประกันว่าจะสะกดตรงทุกครั้ง จึงควรฟังเสียงเพื่อตรวจสอบคำที่มีผลต่อสาระสำคัญ คำใบ้ด้านภาษาและคำสำคัญถูกเลือกเมื่อเริ่มการถอดเสียง ให้เลือกอย่างเหมาะสมกับไฟล์บันทึกนั้น แทนการเปลี่ยนความหมายของคำใบ้ระหว่างที่เซสชันกำลังทำงาน\n\nโมเดลรองรับการแยกผู้พูดในการสนทนาที่มีผู้พูดมากกว่า 20 คน ป้ายกำกับ เช่น A และ B ใช้ระบุผู้พูดภายในงานถอดเสียงหนึ่งงาน ป้ายเหล่านี้ไม่ใช่ชื่อที่ยืนยันแล้ว และไม่ได้ยืนยันว่าป้ายเดียวกันหมายถึงบุคคลเดียวกันในอีกเซสชันหนึ่ง สำหรับงานวิเคราะห์การประชุมจากต้นฉบับ ให้ขอช่วงการพูดที่ระบุผู้พูด เก็บไฟล์บันทึกเสียง และใช้ป้ายกำกับจัดระเบียบการสนทนาก่อนผูกชื่อผู้เข้าร่วมจริงผ่านเวิร์กโฟลว์ของแอปพลิเคชัน\n\nบทถอดเสียงบางส่วนจากเสียงสดอาจเปลี่ยนเมื่อมีเสียงพูดเพิ่มเติมเข้ามา ในโหมดสะสม ข้อความบางส่วนแต่ละรายการจะแทนที่ข้อความคาดการณ์ก่อนหน้า ไม่ใช่เพิ่มสำเนาของข้อความนั้นอีกครั้ง การตรวจพบจุดสิ้นสุดการพูดเป็นการทำเครื่องหมายขอบเขต ขณะที่ผลลัพธ์ของช่วงการพูดที่สมบูรณ์จะให้ข้อความสุดท้าย ซึ่งอาจต่างจากข้อความบางส่วนรายการล่าสุด เก็บช่วงการพูดที่ซ้อนทับกันให้ผูกกับตัวระบุช่วงการพูด และรับผลลัพธ์ที่สมบูรณ์ก่อนถือว่าบทถอดเสียงเสร็จแล้ว เมื่อเสียงสดที่ส่งเข้าไปสิ้นสุด ให้ส่งสัญญาณสิ้นสุดข้อมูลนำเข้าและรับผลลัพธ์ต่อไปจนกว่าฝั่งผู้สร้างผลลัพธ์จะระบายรายการที่ค้างอยู่เสร็จ การปิดการเชื่อมต่อทันทีอาจทำให้ผลลัพธ์เหล่านั้นสูญหาย ขอบเขตการพูดที่ตรวจพบหมายถึงจบช่วงการพูดหนึ่งช่วง ไม่ใช่จบทั้งเซสชัน\n\nข้อมูลเวลาอยู่ในระดับช่วงการพูด โปรไฟล์นี้ไม่ให้เวลาระดับคำหรือคะแนนความเชื่อมั่น และความคืบหน้าของการประมวลผลเสียงก็ไม่ใช่เวลาของคำใดคำหนึ่ง การตรวจจับเหตุการณ์เสียง การตรวจจับอารมณ์ และการจัดรูปแบบบทถอดเสียงใหม่ก็อยู่นอกโปรไฟล์ผลลัพธ์ตามเอกสารเช่นกัน ใช้ช่วงเวลาการพูดที่คืนมาสำหรับไทม์ไลน์ผู้พูดหรือการตรวจทานระดับส่วน และเก็บถ้อยคำที่รู้จำได้ไว้ หากขั้นตอนแก้ไขแยกต่างหากนำไปสร้างบันทึกที่อ่านลื่นขึ้นในภายหลัง\n\nชิ้นงานที่มีประโยชน์ ได้แก่ ข้อความที่ป้อนด้วยเสียงฉบับสมบูรณ์ บทถอดเสียงคำถามด้วยเสียง บทสนทนาที่ระบุผู้พูด หรือไทม์ไลน์ของถ้อยคำที่พูด เปรียบเทียบชื่อ ตัวเลข และศัพท์เทคนิคกับไฟล์บันทึกต้นฉบับ รักษาความเชื่อมโยงของโหมดและข้อมูลเวลา และเก็บช่วงการพูดที่สมบูรณ์ไว้ให้ตรวจทานได้ การถอดเสียงบอกว่าโมเดลรู้จำอะไรจากเสียง ส่วนการตอบคำถามที่พูด การแปล หรือการเปลี่ยนเนื้อหาเป็นบันทึกการประชุมเป็นหน้าที่ของขั้นตอนถัดไปในแอปพลิเคชัน",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "77cd4ae75d6698d16a4a80f593b8136f780c4fd316b36fd8898cbd8483994a0f",
    "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\">M</span><h2 id=\"sheet-title\">Meta: Muse Voice Transcribe 1.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Meta /</span><code>meta/muse-voice-transcribe-1.0</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|meta%2Fmuse-voice-transcribe-1.0\">การรู้จำ</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\">Muse Voice Transcribe 1.0 เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Meta สำหรับการป้อนข้อความด้วยเสียง การตรวจจับช่วงการพูด และบทถอดเสียงที่ระบุผู้พูดได้ รองรับคำใบ้ด้านภาษาและคำศัพท์ การสลับภาษา และข้อมูลเวลาระดับช่วงการพูด โดยมีเวิร์กโฟลว์แยกสำหรับคลิปที่บันทึกไว้และเสียงสด</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>Muse Voice Transcribe 1.0 เป็นโมเดลรับรู้เสียงของ Meta สำหรับถอดเสียงพูด ตรวจจับขอบเขตของถ้อยคำที่พูด และระบุว่าช่วงการพูดแต่ละช่วงเป็นของผู้พูดคนใด โมเดลอยู่ในตระกูล Muse Spark และรวมการรู้จำเสียงพูด การแยกผู้พูด และการตรวจจับจุดสิ้นสุดการพูดไว้ภายในโมเดล ผลลัพธ์คือข้อความที่รู้จำได้ พร้อมข้อมูลเวลาและผู้พูดตามที่มีให้ในโหมดที่เลือก</p><p>โมเดลประมวลผลเสียงเป็นช่วงละ 80 มิลลิวินาที และตัดสินใจว่าจะฟังต่อหรือส่งข้อความออกมา การหน่วงเวลาแบบปรับได้ช่วยให้รอเสียงเพิ่มเติมเมื่อมีคำที่ตีความได้ยากกว่า จึงสร้างข้อความบางส่วนระหว่างที่เสียงพูดยังคงเข้ามา แล้วตามด้วยผลการถอดเสียงที่เสร็จสมบูรณ์ ควรมองข้อความคาดการณ์ชั่วคราวกับช่วงการพูดที่สมบูรณ์ว่าเป็นคนละขั้นตอนของประสบการณ์การฟัง</p><p>เลือกได้สามโหมด Push-to-talk เป็นค่าเริ่มต้นสำหรับถ้อยคำหนึ่งช่วงที่ควบคุมการเริ่มและจบได้ เช่น คำถามด้วยเสียงหรือข้อความสั้นที่ป้อนด้วยเสียง Endpointing ให้โมเดลตรวจจับขอบเขตของช่วงการพูด และส่งบทถอดเสียงที่สมบูรณ์หนึ่งรายการต่อส่วนที่ตรวจพบ Diarization ระบุข้อความที่รู้จำได้ด้วยป้ายกำกับผู้พูด และออกแบบมาสำหรับการบันทึกที่มีผู้พูดหลายคน มากกว่าการรับส่งคำสั่งเสียงสลับกันด้วยความเร็วสูงสุด</p><p>สำหรับคลิปที่บันทึกไว้ เวิร์กโฟลว์ถอดเสียงจากไฟล์จะคืนบทถอดเสียงฉบับสมบูรณ์ด้วยคำขอเดียว ผลลัพธ์เริ่มต้นเป็น JSON ที่มีบทถอดเสียงและระยะเวลาของเสียง พร้อมอาร์เรย์ turns ในโหมด endpointing และ diarization แต่ละช่วงการพูดสามารถมีตัวระบุ เวลาเริ่มและสิ้นสุดเป็นมิลลิวินาที และข้อความที่รู้จำได้ โหมด diarization มีป้ายกำกับผู้พูด ส่วน push-to-talk ให้บทถอดเสียงฉบับสมบูรณ์โดยไม่มีช่วงการพูดที่ตรวจพบอยู่ในอาร์เรย์ดังกล่าว อินเทอร์เฟซสำหรับไฟล์บันทึกเสียงของผู้ผลิตยังสามารถคืนข้อความธรรมดาหรือสตรีมเหตุการณ์การถอดเสียงได้ด้วย ข้อความธรรมดาแยกช่วงการพูดที่ตรวจพบไว้คนละบรรทัด และอาจมีป้ายกำกับผู้พูด ส่วนสตรีมเหตุการณ์จบลงหลังเหตุการณ์สุดท้ายโดยไม่มีสรุป JSON แยกต่างหาก โหมดข้อความบางส่วนแบบ delta จะคืนข้อความที่เพิ่มขึ้นทีละส่วน ขณะที่เหตุการณ์บทถอดเสียงสุดท้ายมีถ้อยคำครบทั้งหมด</p><p>เตรียมไฟล์ RIFF/WAVE ที่บรรจุเสียงโมโนแบบ PCM จำนวนเต็ม 16 บิต ที่ 16 หรือ 24 kHz อัตราดั้งเดิมของโมเดลคือ 24 kHz และอินเทอร์เฟซรับ 16 kHz ได้เช่นกัน ให้แปลงคอนเทนเนอร์หรือการเข้ารหัสรูปแบบอื่นเป็น WAV ที่รองรับนี้ก่อนส่งไฟล์บันทึกเสียง โปรไฟล์ถอดเสียงจากไฟล์รองรับเสียงยาวไม่เกิน 10 นาที และขนาดเนื้อหาคำขอรวมไม่เกิน 32 MB เก็บไฟล์บันทึกต้นฉบับและไฟล์ที่แปลงไว้โดยเชื่อมโยงกับบทถอดเสียงที่ได้รับ เพื่อให้ย้อนกลับมาฟังตรวจสอบได้ภายหลัง</p><p>เวิร์กโฟลว์เสียงสดใช้ PCM ดิบแบบโมโน จำนวนเต็มมีเครื่องหมาย 16 บิต และ little-endian โดยส่งเสียง 16 หรือ 24 kHz ในจังหวะใกล้เคียงเวลาจริง ช่วงเวลาของเซสชันตามเอกสารคือ 60 นาที Meta อธิบายว่าโมเดลรับเสียงโดยตรงได้นานกว่าหนึ่งชั่วโมง แต่ขีดจำกัดของไฟล์และเซสชันสดที่ระบุในเอกสารยังเป็นขอบเขตอินเทอร์เฟซคนละส่วน เลือกเวิร์กโฟลว์ไฟล์บันทึกหรือเวิร์กโฟลว์สดตามว่าเสียงนั้นบันทึกเสร็จแล้วหรือยังอยู่ระหว่างการรับเสียง และเก็บผลลัพธ์จากแต่ละเซสชันให้เชื่อมโยงกับส่วนข้อมูลนำเข้าของเซสชันนั้น</p><p>Muse Voice Transcribe ผ่านการฝึกด้วยมากกว่า 70 ภาษา ขณะที่อินเทอร์เฟซการรู้จำตามเอกสารแจกแจงภาษาที่รองรับไว้ 25 ภาษา ซึ่งรวมถึงอังกฤษ ฝรั่งเศส เยอรมัน สเปน อาหรับ จีนกลาง ฮินดี ญี่ปุ่น เกาหลี อิตาลี และโปรตุเกส โมเดลรู้จำการสลับภาษาได้ทั้งภายในประโยคและระหว่างประโยค คำใบ้ด้านภาษาสามารถระบุภาษาที่คาดว่าจะได้ยินในเสียง แต่มีหน้าที่ชี้นำการรู้จำ ไม่ได้บังคับให้บทถอดเสียงเป็นภาษาเดียว</p><p>คำใบ้ด้านคำศัพท์ช่วยในการรู้จำศัพท์ผลิตภัณฑ์ อักษรย่อ ชื่อบุคคล หรือสถานที่ที่สำคัญในไฟล์บันทึกเสียง ให้ระบุคำและตัวสะกดจริงที่คาดว่าจะได้ยิน รายการคำสำคัญช่วยโน้มเอียงการรู้จำ แต่ไม่รับประกันว่าจะสะกดตรงทุกครั้ง จึงควรฟังเสียงเพื่อตรวจสอบคำที่มีผลต่อสาระสำคัญ คำใบ้ด้านภาษาและคำสำคัญถูกเลือกเมื่อเริ่มการถอดเสียง ให้เลือกอย่างเหมาะสมกับไฟล์บันทึกนั้น แทนการเปลี่ยนความหมายของคำใบ้ระหว่างที่เซสชันกำลังทำงาน</p><p>โมเดลรองรับการแยกผู้พูดในการสนทนาที่มีผู้พูดมากกว่า 20 คน ป้ายกำกับ เช่น A และ B ใช้ระบุผู้พูดภายในงานถอดเสียงหนึ่งงาน ป้ายเหล่านี้ไม่ใช่ชื่อที่ยืนยันแล้ว และไม่ได้ยืนยันว่าป้ายเดียวกันหมายถึงบุคคลเดียวกันในอีกเซสชันหนึ่ง สำหรับงานวิเคราะห์การประชุมจากต้นฉบับ ให้ขอช่วงการพูดที่ระบุผู้พูด เก็บไฟล์บันทึกเสียง และใช้ป้ายกำกับจัดระเบียบการสนทนาก่อนผูกชื่อผู้เข้าร่วมจริงผ่านเวิร์กโฟลว์ของแอปพลิเคชัน</p><p>บทถอดเสียงบางส่วนจากเสียงสดอาจเปลี่ยนเมื่อมีเสียงพูดเพิ่มเติมเข้ามา ในโหมดสะสม ข้อความบางส่วนแต่ละรายการจะแทนที่ข้อความคาดการณ์ก่อนหน้า ไม่ใช่เพิ่มสำเนาของข้อความนั้นอีกครั้ง การตรวจพบจุดสิ้นสุดการพูดเป็นการทำเครื่องหมายขอบเขต ขณะที่ผลลัพธ์ของช่วงการพูดที่สมบูรณ์จะให้ข้อความสุดท้าย ซึ่งอาจต่างจากข้อความบางส่วนรายการล่าสุด เก็บช่วงการพูดที่ซ้อนทับกันให้ผูกกับตัวระบุช่วงการพูด และรับผลลัพธ์ที่สมบูรณ์ก่อนถือว่าบทถอดเสียงเสร็จแล้ว เมื่อเสียงสดที่ส่งเข้าไปสิ้นสุด ให้ส่งสัญญาณสิ้นสุดข้อมูลนำเข้าและรับผลลัพธ์ต่อไปจนกว่าฝั่งผู้สร้างผลลัพธ์จะระบายรายการที่ค้างอยู่เสร็จ การปิดการเชื่อมต่อทันทีอาจทำให้ผลลัพธ์เหล่านั้นสูญหาย ขอบเขตการพูดที่ตรวจพบหมายถึงจบช่วงการพูดหนึ่งช่วง ไม่ใช่จบทั้งเซสชัน</p><p>ข้อมูลเวลาอยู่ในระดับช่วงการพูด โปรไฟล์นี้ไม่ให้เวลาระดับคำหรือคะแนนความเชื่อมั่น และความคืบหน้าของการประมวลผลเสียงก็ไม่ใช่เวลาของคำใดคำหนึ่ง การตรวจจับเหตุการณ์เสียง การตรวจจับอารมณ์ และการจัดรูปแบบบทถอดเสียงใหม่ก็อยู่นอกโปรไฟล์ผลลัพธ์ตามเอกสารเช่นกัน ใช้ช่วงเวลาการพูดที่คืนมาสำหรับไทม์ไลน์ผู้พูดหรือการตรวจทานระดับส่วน และเก็บถ้อยคำที่รู้จำได้ไว้ หากขั้นตอนแก้ไขแยกต่างหากนำไปสร้างบันทึกที่อ่านลื่นขึ้นในภายหลัง</p><p>ชิ้นงานที่มีประโยชน์ ได้แก่ ข้อความที่ป้อนด้วยเสียงฉบับสมบูรณ์ บทถอดเสียงคำถามด้วยเสียง บทสนทนาที่ระบุผู้พูด หรือไทม์ไลน์ของถ้อยคำที่พูด เปรียบเทียบชื่อ ตัวเลข และศัพท์เทคนิคกับไฟล์บันทึกต้นฉบับ รักษาความเชื่อมโยงของโหมดและข้อมูลเวลา และเก็บช่วงการพูดที่สมบูรณ์ไว้ให้ตรวจทานได้ การถอดเสียงบอกว่าโมเดลรู้จำอะไรจากเสียง ส่วนการตอบคำถามที่พูด การแปล หรือการเปลี่ยนเนื้อหาเป็นบันทึกการประชุมเป็นหน้าที่ของขั้นตอนถัดไปในแอปพลิเคชัน</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · การถอดเสียง</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>audio</code></dd></div><div><dt>ขาออก</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>meta/muse-voice-transcribe-1.0</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.0001</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-1834-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1834-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-1834-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1834-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;meta/muse-voice-transcribe-1.0&#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=meta%2Fmuse-voice-transcribe-1.0&amp;route=Ultra&amp;caller=meta%2Fmuse-voice-transcribe-1.0&amp;fmt=transcriptions\"><code>meta/muse-voice-transcribe-1.0</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=meta%2Fmuse-voice-transcribe-1.0&amp;route=Ultra&amp;caller=meta%2Fmuse-voice-transcribe-1.0&amp;fmt=transcriptions\"><code>meta/muse-voice-transcribe-1.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "meta/muse-voice-transcribe-1.0",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|meta%2Fmuse-voice-transcribe-1.0",
      "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": [
                  "meta/muse-voice-transcribe-1.0"
                ],
                "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": [
                    "meta/muse-voice-transcribe-1.0"
                  ],
                  "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": "meta/muse-voice-transcribe-1.0"
              },
              "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.0001",
                "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.0001",
                "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': 'meta/muse-voice-transcribe-1.0', '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.0001
          }
        },
        "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.0001",
                "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.0001",
                "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": "meta/muse-voice-transcribe-1.0",
        "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.0001",
            "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.0001",
            "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": "meta/muse-voice-transcribe-1.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "38961408f28cbdee327c57555d63b785c6d72985d5f5643d5db331c039739355",
    "input_html_sha256": "ab2751f4d74cefcab8204bf0c1f7bfa4d92c2618f4252be414f0b2dce26c31d9",
    "private_audit_sha256": "13b181aae91258f2c60c4e5f889fabffc7bebc223501eb20751f9767821bca0a",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/meta-muse-voice-transcribe-1-0/",
    "description": "Muse Voice Transcribe 1.0 เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Meta สำหรับการป้อนข้อความด้วยเสียง การตรวจจับช่วงการพูด และบทถอดเสียงที่ระบุผู้พูดได้ รองรับคำใบ้ด้านภาษาและคำศัพท์ การสลับภาษา และข้อมูลเวลาระดับช่วงการพูด โดยมีเวิร์กโฟลว์แยกสำหรับคลิปที่บันทึกไว้และเสียงสด",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/meta-muse-voice-transcribe-1-0/index.md",
    "title": "Meta: Muse Voice Transcribe 1.0 — Ailoot",
    "url": "https://ailoot.ai/models/th/meta-muse-voice-transcribe-1-0/"
  },
  "rawModel": {
    "about": "Muse Voice Transcribe 1.0 เป็นโมเดลรับรู้เสียงของ Meta สำหรับถอดเสียงพูด ตรวจจับขอบเขตของถ้อยคำที่พูด และระบุว่าช่วงการพูดแต่ละช่วงเป็นของผู้พูดคนใด โมเดลอยู่ในตระกูล Muse Spark และรวมการรู้จำเสียงพูด การแยกผู้พูด และการตรวจจับจุดสิ้นสุดการพูดไว้ภายในโมเดล ผลลัพธ์คือข้อความที่รู้จำได้ พร้อมข้อมูลเวลาและผู้พูดตามที่มีให้ในโหมดที่เลือก\n\nโมเดลประมวลผลเสียงเป็นช่วงละ 80 มิลลิวินาที และตัดสินใจว่าจะฟังต่อหรือส่งข้อความออกมา การหน่วงเวลาแบบปรับได้ช่วยให้รอเสียงเพิ่มเติมเมื่อมีคำที่ตีความได้ยากกว่า จึงสร้างข้อความบางส่วนระหว่างที่เสียงพูดยังคงเข้ามา แล้วตามด้วยผลการถอดเสียงที่เสร็จสมบูรณ์ ควรมองข้อความคาดการณ์ชั่วคราวกับช่วงการพูดที่สมบูรณ์ว่าเป็นคนละขั้นตอนของประสบการณ์การฟัง\n\nเลือกได้สามโหมด Push-to-talk เป็นค่าเริ่มต้นสำหรับถ้อยคำหนึ่งช่วงที่ควบคุมการเริ่มและจบได้ เช่น คำถามด้วยเสียงหรือข้อความสั้นที่ป้อนด้วยเสียง Endpointing ให้โมเดลตรวจจับขอบเขตของช่วงการพูด และส่งบทถอดเสียงที่สมบูรณ์หนึ่งรายการต่อส่วนที่ตรวจพบ Diarization ระบุข้อความที่รู้จำได้ด้วยป้ายกำกับผู้พูด และออกแบบมาสำหรับการบันทึกที่มีผู้พูดหลายคน มากกว่าการรับส่งคำสั่งเสียงสลับกันด้วยความเร็วสูงสุด\n\nสำหรับคลิปที่บันทึกไว้ เวิร์กโฟลว์ถอดเสียงจากไฟล์จะคืนบทถอดเสียงฉบับสมบูรณ์ด้วยคำขอเดียว ผลลัพธ์เริ่มต้นเป็น JSON ที่มีบทถอดเสียงและระยะเวลาของเสียง พร้อมอาร์เรย์ turns ในโหมด endpointing และ diarization แต่ละช่วงการพูดสามารถมีตัวระบุ เวลาเริ่มและสิ้นสุดเป็นมิลลิวินาที และข้อความที่รู้จำได้ โหมด diarization มีป้ายกำกับผู้พูด ส่วน push-to-talk ให้บทถอดเสียงฉบับสมบูรณ์โดยไม่มีช่วงการพูดที่ตรวจพบอยู่ในอาร์เรย์ดังกล่าว อินเทอร์เฟซสำหรับไฟล์บันทึกเสียงของผู้ผลิตยังสามารถคืนข้อความธรรมดาหรือสตรีมเหตุการณ์การถอดเสียงได้ด้วย ข้อความธรรมดาแยกช่วงการพูดที่ตรวจพบไว้คนละบรรทัด และอาจมีป้ายกำกับผู้พูด ส่วนสตรีมเหตุการณ์จบลงหลังเหตุการณ์สุดท้ายโดยไม่มีสรุป JSON แยกต่างหาก โหมดข้อความบางส่วนแบบ delta จะคืนข้อความที่เพิ่มขึ้นทีละส่วน ขณะที่เหตุการณ์บทถอดเสียงสุดท้ายมีถ้อยคำครบทั้งหมด\n\nเตรียมไฟล์ RIFF/WAVE ที่บรรจุเสียงโมโนแบบ PCM จำนวนเต็ม 16 บิต ที่ 16 หรือ 24 kHz อัตราดั้งเดิมของโมเดลคือ 24 kHz และอินเทอร์เฟซรับ 16 kHz ได้เช่นกัน ให้แปลงคอนเทนเนอร์หรือการเข้ารหัสรูปแบบอื่นเป็น WAV ที่รองรับนี้ก่อนส่งไฟล์บันทึกเสียง โปรไฟล์ถอดเสียงจากไฟล์รองรับเสียงยาวไม่เกิน 10 นาที และขนาดเนื้อหาคำขอรวมไม่เกิน 32 MB เก็บไฟล์บันทึกต้นฉบับและไฟล์ที่แปลงไว้โดยเชื่อมโยงกับบทถอดเสียงที่ได้รับ เพื่อให้ย้อนกลับมาฟังตรวจสอบได้ภายหลัง\n\nเวิร์กโฟลว์เสียงสดใช้ PCM ดิบแบบโมโน จำนวนเต็มมีเครื่องหมาย 16 บิต และ little-endian โดยส่งเสียง 16 หรือ 24 kHz ในจังหวะใกล้เคียงเวลาจริง ช่วงเวลาของเซสชันตามเอกสารคือ 60 นาที Meta อธิบายว่าโมเดลรับเสียงโดยตรงได้นานกว่าหนึ่งชั่วโมง แต่ขีดจำกัดของไฟล์และเซสชันสดที่ระบุในเอกสารยังเป็นขอบเขตอินเทอร์เฟซคนละส่วน เลือกเวิร์กโฟลว์ไฟล์บันทึกหรือเวิร์กโฟลว์สดตามว่าเสียงนั้นบันทึกเสร็จแล้วหรือยังอยู่ระหว่างการรับเสียง และเก็บผลลัพธ์จากแต่ละเซสชันให้เชื่อมโยงกับส่วนข้อมูลนำเข้าของเซสชันนั้น\n\nMuse Voice Transcribe ผ่านการฝึกด้วยมากกว่า 70 ภาษา ขณะที่อินเทอร์เฟซการรู้จำตามเอกสารแจกแจงภาษาที่รองรับไว้ 25 ภาษา ซึ่งรวมถึงอังกฤษ ฝรั่งเศส เยอรมัน สเปน อาหรับ จีนกลาง ฮินดี ญี่ปุ่น เกาหลี อิตาลี และโปรตุเกส โมเดลรู้จำการสลับภาษาได้ทั้งภายในประโยคและระหว่างประโยค คำใบ้ด้านภาษาสามารถระบุภาษาที่คาดว่าจะได้ยินในเสียง แต่มีหน้าที่ชี้นำการรู้จำ ไม่ได้บังคับให้บทถอดเสียงเป็นภาษาเดียว\n\nคำใบ้ด้านคำศัพท์ช่วยในการรู้จำศัพท์ผลิตภัณฑ์ อักษรย่อ ชื่อบุคคล หรือสถานที่ที่สำคัญในไฟล์บันทึกเสียง ให้ระบุคำและตัวสะกดจริงที่คาดว่าจะได้ยิน รายการคำสำคัญช่วยโน้มเอียงการรู้จำ แต่ไม่รับประกันว่าจะสะกดตรงทุกครั้ง จึงควรฟังเสียงเพื่อตรวจสอบคำที่มีผลต่อสาระสำคัญ คำใบ้ด้านภาษาและคำสำคัญถูกเลือกเมื่อเริ่มการถอดเสียง ให้เลือกอย่างเหมาะสมกับไฟล์บันทึกนั้น แทนการเปลี่ยนความหมายของคำใบ้ระหว่างที่เซสชันกำลังทำงาน\n\nโมเดลรองรับการแยกผู้พูดในการสนทนาที่มีผู้พูดมากกว่า 20 คน ป้ายกำกับ เช่น A และ B ใช้ระบุผู้พูดภายในงานถอดเสียงหนึ่งงาน ป้ายเหล่านี้ไม่ใช่ชื่อที่ยืนยันแล้ว และไม่ได้ยืนยันว่าป้ายเดียวกันหมายถึงบุคคลเดียวกันในอีกเซสชันหนึ่ง สำหรับงานวิเคราะห์การประชุมจากต้นฉบับ ให้ขอช่วงการพูดที่ระบุผู้พูด เก็บไฟล์บันทึกเสียง และใช้ป้ายกำกับจัดระเบียบการสนทนาก่อนผูกชื่อผู้เข้าร่วมจริงผ่านเวิร์กโฟลว์ของแอปพลิเคชัน\n\nบทถอดเสียงบางส่วนจากเสียงสดอาจเปลี่ยนเมื่อมีเสียงพูดเพิ่มเติมเข้ามา ในโหมดสะสม ข้อความบางส่วนแต่ละรายการจะแทนที่ข้อความคาดการณ์ก่อนหน้า ไม่ใช่เพิ่มสำเนาของข้อความนั้นอีกครั้ง การตรวจพบจุดสิ้นสุดการพูดเป็นการทำเครื่องหมายขอบเขต ขณะที่ผลลัพธ์ของช่วงการพูดที่สมบูรณ์จะให้ข้อความสุดท้าย ซึ่งอาจต่างจากข้อความบางส่วนรายการล่าสุด เก็บช่วงการพูดที่ซ้อนทับกันให้ผูกกับตัวระบุช่วงการพูด และรับผลลัพธ์ที่สมบูรณ์ก่อนถือว่าบทถอดเสียงเสร็จแล้ว เมื่อเสียงสดที่ส่งเข้าไปสิ้นสุด ให้ส่งสัญญาณสิ้นสุดข้อมูลนำเข้าและรับผลลัพธ์ต่อไปจนกว่าฝั่งผู้สร้างผลลัพธ์จะระบายรายการที่ค้างอยู่เสร็จ การปิดการเชื่อมต่อทันทีอาจทำให้ผลลัพธ์เหล่านั้นสูญหาย ขอบเขตการพูดที่ตรวจพบหมายถึงจบช่วงการพูดหนึ่งช่วง ไม่ใช่จบทั้งเซสชัน\n\nข้อมูลเวลาอยู่ในระดับช่วงการพูด โปรไฟล์นี้ไม่ให้เวลาระดับคำหรือคะแนนความเชื่อมั่น และความคืบหน้าของการประมวลผลเสียงก็ไม่ใช่เวลาของคำใดคำหนึ่ง การตรวจจับเหตุการณ์เสียง การตรวจจับอารมณ์ และการจัดรูปแบบบทถอดเสียงใหม่ก็อยู่นอกโปรไฟล์ผลลัพธ์ตามเอกสารเช่นกัน ใช้ช่วงเวลาการพูดที่คืนมาสำหรับไทม์ไลน์ผู้พูดหรือการตรวจทานระดับส่วน และเก็บถ้อยคำที่รู้จำได้ไว้ หากขั้นตอนแก้ไขแยกต่างหากนำไปสร้างบันทึกที่อ่านลื่นขึ้นในภายหลัง\n\nชิ้นงานที่มีประโยชน์ ได้แก่ ข้อความที่ป้อนด้วยเสียงฉบับสมบูรณ์ บทถอดเสียงคำถามด้วยเสียง บทสนทนาที่ระบุผู้พูด หรือไทม์ไลน์ของถ้อยคำที่พูด เปรียบเทียบชื่อ ตัวเลข และศัพท์เทคนิคกับไฟล์บันทึกต้นฉบับ รักษาความเชื่อมโยงของโหมดและข้อมูลเวลา และเก็บช่วงการพูดที่สมบูรณ์ไว้ให้ตรวจทานได้ การถอดเสียงบอกว่าโมเดลรู้จำอะไรจากเสียง ส่วนการตอบคำถามที่พูด การแปล หรือการเปลี่ยนเนื้อหาเป็นบันทึกการประชุมเป็นหน้าที่ของขั้นตอนถัดไปในแอปพลิเคชัน",
    "alias_of": null,
    "aliases": [],
    "author": "Meta",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0001",
            "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.0001",
            "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": "meta/muse-voice-transcribe-1.0",
    "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": [
                  "meta/muse-voice-transcribe-1.0"
                ],
                "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": [
                    "meta/muse-voice-transcribe-1.0"
                  ],
                  "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": "meta/muse-voice-transcribe-1.0"
              },
              "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.0001",
                "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.0001",
                "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': 'meta/muse-voice-transcribe-1.0', '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.0001
          }
        },
        "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.0001",
                "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.0001",
                "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": "meta/muse-voice-transcribe-1.0",
        "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.0001",
            "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.0001",
            "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": "meta/muse-voice-transcribe-1.0",
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra"
      }
    ],
    "name": "Meta: Muse Voice Transcribe 1.0",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Muse Voice Transcribe 1.0 เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Meta สำหรับการป้อนข้อความด้วยเสียง การตรวจจับช่วงการพูด และบทถอดเสียงที่ระบุผู้พูดได้ รองรับคำใบ้ด้านภาษาและคำศัพท์ การสลับภาษา และข้อมูลเวลาระดับช่วงการพูด โดยมีเวิร์กโฟลว์แยกสำหรับคลิปที่บันทึกไว้และเสียงสด"
  },
  "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": "Muse Voice Transcribe 1.0 เป็นโมเดลแปลงเสียงพูดเป็นข้อความของ Meta สำหรับการป้อนข้อความด้วยเสียง การตรวจจับช่วงการพูด และบทถอดเสียงที่ระบุผู้พูดได้ รองรับคำใบ้ด้านภาษาและคำศัพท์ การสลับภาษา และข้อมูลเวลาระดับช่วงการพูด โดยมีเวิร์กโฟลว์แยกสำหรับคลิปที่บันทึกไว้และเสียงสด",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "a565ba6213ee3c0edeba2240fd1c6350229f046f1626e488b7e8802b7430c0dd",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "6f46b7b6def4a86d5e69228b19fb68bd882561896555829fc86c9a473ffe1e2f"
}
