{
  "aboutHtml": "<p>GPT Transcribe เป็นโมเดลแปลงเสียงเป็นข้อความของ OpenAI สำหรับไฟล์เสียงที่บันทึกเสร็จแล้ว ผลการถอดเสียงไฟล์แบบสตรีม และเทิร์นเสียงที่คอมมิตในเซสชัน Realtime รับเสียงพร้อมบริบทข้อความที่เลือกส่งได้ แล้วคืนข้อความที่รู้จำ ผู้พัฒนาวางบทบาทให้ถอดเสียงพูดที่บันทึกไว้ในภาษาเดิมอย่างแม่นยำ รวมถึงคำศัพท์เฉพาะสาขา เสียงบันทึกหลายภาษา และการสลับภาษาระหว่างพูด ผลลัพธ์ที่มีประโยชน์คือข้อความถอดเสียงที่ยังเชื่อมกับเสียงบันทึก พร้อมข้อมูลกำกับภาษาที่ตรวจพบเมื่อโมเดลคาดการณ์ได้อย่างน่าเชื่อถือ</p><h4>เตรียมเสียงบันทึกที่เสร็จสมบูรณ์</h4><p>ขั้นตอนถอดเสียงไฟล์ของ OpenAI รับไฟล์อัปโหลดขนาดไม่เกิน 25 MB เอกสารอ้างอิงของเอนด์พอยต์ปัจจุบันระบุรูปแบบอินพุต FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV และ WebM และแนะนำให้มีข้อมูลกำกับไฟล์เพียงพอที่จะระบุรูปแบบ รวมถึงนามสกุลชื่อไฟล์และชนิดเนื้อหาที่เหมาะสม สำหรับเสียงบันทึกที่ใหญ่กว่า คู่มือแนะนำให้บีบอัดหรือแบ่งเป็นไฟล์ขนาด 25 MB หรือน้อยกว่า หลีกเลี่ยงการตัดกลางประโยค เพราะการตัดเสียงพูดรอบข้างออกอาจลดความแม่นยำในการรู้จำ รักษาลำดับส่วนต่าง ๆ และตำแหน่งของแต่ละส่วนในเสียงบันทึกต้นฉบับ</p><p>สำหรับการประชุม สัมภาษณ์ หรือการนำเสนอที่บันทึกไว้ ให้เสียงจริง พร้อมระบุหัวข้อและศัพท์ที่น่าจะพูด ผลลัพธ์ที่มีประโยชน์คือถ้อยคำที่รู้จำ ไม่ใช่บทสรุปการสนทนาที่อนุมานขึ้น เก็บรหัสเสียงบันทึกพร้อมข้อความที่คืนมา เพื่อให้ผู้ตรวจชื่อ ตัวเลข หรือวลีที่ไม่แน่ใจกลับไปยังต้นฉบับที่ถูกต้องได้ จากนั้นข้อความถอดเสียงอาจใช้เป็นข้อมูลสำหรับขั้นตอนสรุป แปล หรือแก้ไขเนื้อหาแยกต่างหาก</p><h4>บริบท คำใบ้คำสำคัญ และภาษาที่คาดว่าจะพูด</h4><p>ผู้พัฒนาแยกคำแนะนำสามชนิด พรอมต์ให้บริบทแบบอิสระเกี่ยวกับหัวข้อหรือสถานการณ์ของเสียงบันทึก คำสำคัญระบุคำหรือวลีจริงที่คาดว่าจะปรากฏในเสียงพูด ส่วนรายการภาษาระบุภาษาพูดที่คาดหมาย สำหรับการสนทนาเรื่องผลิตภัณฑ์สองภาษา ให้อธิบายสถานการณ์ในพรอมต์ ระบุชื่อผลิตภัณฑ์ที่เกี่ยวข้องเป็นคำสำคัญ และให้ภาษาที่คาดหมาย สิ่งเหล่านี้เป็นคำใบ้ช่วยรู้จำ ไม่ใช่คำสั่งให้เติมคำที่ไม่มีใครพูด</p><p>GPT Transcribe ใช้ฟิลด์ languages รูปพหูพจน์แทนฟิลด์ language รูปเอกพจน์แบบเดิม โดย OpenAI ระบุว่าอย่าส่งทั้งสองฟิลด์ คู่มือยอมรับรหัส ISO 639-1 ที่รองรับ รหัส ISO 639-3 บางรายการ และรหัสภาษาจีนตามภูมิภาค ส่วนค่าที่ไม่รองรับหรือมีรูปแบบไม่ถูกต้องจะถูกปฏิเสธ คำสำคัญแต่ละรายการต้องอยู่ในบรรทัดเดียว และต้องไม่มีวงเล็บมุม อักขระกลับต้นบรรทัด หรืออักขระขึ้นบรรทัดใหม่ คำสำคัญที่ไม่ถูกต้องหรือพรอมต์ที่ยาวเกินไปอาจทำให้คำขอทั้งหมดถูกปฏิเสธ ใช้บริบทที่เกี่ยวข้อง และตรวจว่าชื่อในคำใบ้ปรากฏในเสียงจริงหรือไม่ แทนการถือว่ารายการคำใบ้คือข้อความถอดเสียง</p><h4>เอาต์พุต JSON และการคาดการณ์ภาษาที่ตรวจพบ</h4><p>ผลจากไฟล์ที่เอกสารระบุเป็น JSON ซึ่งมีข้อความถอดเสียงและภาษาที่ตรวจพบ การคาดการณ์ภาษาเหล่านั้นเป็นเอาต์พุตของโมเดล ไม่ใช่สำเนาคำใบ้ภาษาที่ส่งให้ รายการภาษาว่างเป็นผลที่ใช้ได้เมื่อโมเดลไม่สามารถคาดการณ์อย่างน่าเชื่อถือ ไม่ได้ยืนยันว่าเสียงบันทึกเงียบหรือการถอดเสียงล้มเหลว แยกข้อความที่รู้จำออกจากข้อมูลกำกับภาษา เพื่อให้การประมวลผลขั้นต่อไปใช้แต่ละส่วนตามความหมาย</p><h4>สตรีมข้อความถอดเสียงจากไฟล์</h4><p>ไฟล์ที่บันทึกเสร็จแล้วอาจสร้างข้อความถอดเสียงทีละส่วนขณะประมวลผล OpenAI อธิบายเหตุการณ์ transcript.text.delta สำหรับข้อความบางส่วน และ transcript.text.done สำหรับข้อความถอดเสียงครบทั้งไฟล์ เหตุการณ์สุดท้ายยังมีภาษาที่ตรวจพบด้วย นี่คือการสตรีมเอาต์พุตของเสียงบันทึกที่ส่งให้แล้ว มีประโยชน์ในการแสดงความคืบหน้าของไฟล์อัปโหลดยาว โดยเหตุการณ์สุดท้ายยืนยันข้อความที่ควรเก็บเป็นผลที่เสร็จสมบูรณ์</p><h4>เทิร์นที่คอมมิตในเซสชัน Realtime</h4><p>GPT Transcribe ยังมีขั้นตอน Realtime เฉพาะทางผ่าน WebSocket เพิ่มเสียงลงในบัฟเฟอร์อินพุต แล้วแอปพลิเคชันคอมมิตเทิร์นเสียงอย่างชัดเจน การถอดเสียงเริ่มสำหรับส่วนที่คอมมิตนั้น และอาจส่งผลส่วนเพิ่มก่อนเหตุการณ์เสร็จสิ้น พร้อมข้อมูลภาษาที่ตรวจพบ ในขั้นตอนเซสชันของผู้พัฒนานี้ โมเดลใช้เทิร์นที่ถอดเสียงก่อนหน้าเป็นบริบทโดยอัตโนมัติ สิ่งนี้ต่างจากการส่งข้อความคำบรรยายสดต่อเนื่องเมื่อเสียงจากไมโครโฟนเข้ามา OpenAI ใช้ชื่อ GPT Live Transcribe สำหรับขั้นตอนต่อเนื่องนั้น</p><p>สำหรับหลายเทิร์น ให้เก็บรหัสรายการอินพุตพร้อมข้อความถอดเสียงที่ตรงกัน OpenAI เตือนว่าเหตุการณ์เสร็จสิ้นจากคนละเทิร์นอาจไม่มาตามลำดับการพูด จึงควรจับคู่ผลสุดท้ายแต่ละรายการกับอินพุตที่คอมมิต แทนการจัดลำดับการสนทนาด้วยเวลาเสร็จสิ้นเพียงอย่างเดียว ผลงานที่มีประโยชน์คือข้อความถอดเสียงเรียงลำดับจากรายการสุดท้ายที่ถูกต้อง โดยถือว่าข้อความระหว่างทางเป็นความคืบหน้า ไม่ใช่คำพูดที่เสร็จแล้วอีกหนึ่งรายการ</p><h4>ผลลัพธ์เฉพาะทางและข้อจำกัดสำคัญ</h4><p>โปรไฟล์นี้ไม่ได้ให้ข้อกำหนดร่วมที่ครอบคลุมคำบรรยาย เวลา การแปล หรือป้ายกำกับผู้พูดทุกแบบ คู่มือย้ายระบบของ OpenAI แยกความสามารถเฉพาะทางเหล่านั้น รูปแบบคำบรรยายโดยตรงและเวลาระดับคำต้องใช้โมเดลและรูปแบบที่เข้ากันได้ ส่วนป้ายกำกับผู้พูดใช้ GPT-4o Transcribe Diarize ผลจากไฟล์ของ GPT Transcribe เป็น JSON ไม่ใช่สิ่งที่ใช้แทนคำตอบ SRT, VTT หรือคำตอบที่มีรายละเอียดเวลาได้ทันที การ์ดของโมเดลรุ่นนี้ไม่ได้เผยแพร่ตัวเลขขนาดบริบทหรืองบเอาต์พุตสูงสุด จึงไม่ควรสมมติหน้าต่างโทเคนของโมเดลแชตให้กับงานถอดเสียง</p><p>ตรวจคำศัพท์ยาก ตัวเลข สำเนียง เสียงรบกวนเบื้องหลัง และการเปลี่ยนภาษากับเสียงบันทึก ตรวจว่าคำใบ้ที่เกี่ยวข้องช่วยรู้จำโดยไม่เพิ่มคำที่ไม่ได้พูด และข้อความถอดเสียงสุดท้ายครอบคลุมจนจบเสียง สำหรับผลหลายภาษา ให้เก็บถ้อยคำที่พูดไว้ก่อนเตรียมฉบับแปล การตรวจเหล่านี้ทำให้ข้อความถอดเสียงใช้เป็นข้อมูลต้นทางได้ พร้อมแยกคำใบ้บริบท ภาษาที่ตรวจพบ และเสียงพูดที่รู้จำอย่างชัดเจน</p>",
  "aboutText": "GPT Transcribe เป็นโมเดลแปลงเสียงเป็นข้อความของ OpenAI สำหรับไฟล์เสียงที่บันทึกเสร็จแล้ว ผลการถอดเสียงไฟล์แบบสตรีม และเทิร์นเสียงที่คอมมิตในเซสชัน Realtime รับเสียงพร้อมบริบทข้อความที่เลือกส่งได้ แล้วคืนข้อความที่รู้จำ ผู้พัฒนาวางบทบาทให้ถอดเสียงพูดที่บันทึกไว้ในภาษาเดิมอย่างแม่นยำ รวมถึงคำศัพท์เฉพาะสาขา เสียงบันทึกหลายภาษา และการสลับภาษาระหว่างพูด ผลลัพธ์ที่มีประโยชน์คือข้อความถอดเสียงที่ยังเชื่อมกับเสียงบันทึก พร้อมข้อมูลกำกับภาษาที่ตรวจพบเมื่อโมเดลคาดการณ์ได้อย่างน่าเชื่อถือ\n\n### เตรียมเสียงบันทึกที่เสร็จสมบูรณ์\n\nขั้นตอนถอดเสียงไฟล์ของ OpenAI รับไฟล์อัปโหลดขนาดไม่เกิน 25 MB เอกสารอ้างอิงของเอนด์พอยต์ปัจจุบันระบุรูปแบบอินพุต FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV และ WebM และแนะนำให้มีข้อมูลกำกับไฟล์เพียงพอที่จะระบุรูปแบบ รวมถึงนามสกุลชื่อไฟล์และชนิดเนื้อหาที่เหมาะสม สำหรับเสียงบันทึกที่ใหญ่กว่า คู่มือแนะนำให้บีบอัดหรือแบ่งเป็นไฟล์ขนาด 25 MB หรือน้อยกว่า หลีกเลี่ยงการตัดกลางประโยค เพราะการตัดเสียงพูดรอบข้างออกอาจลดความแม่นยำในการรู้จำ รักษาลำดับส่วนต่าง ๆ และตำแหน่งของแต่ละส่วนในเสียงบันทึกต้นฉบับ\n\nสำหรับการประชุม สัมภาษณ์ หรือการนำเสนอที่บันทึกไว้ ให้เสียงจริง พร้อมระบุหัวข้อและศัพท์ที่น่าจะพูด ผลลัพธ์ที่มีประโยชน์คือถ้อยคำที่รู้จำ ไม่ใช่บทสรุปการสนทนาที่อนุมานขึ้น เก็บรหัสเสียงบันทึกพร้อมข้อความที่คืนมา เพื่อให้ผู้ตรวจชื่อ ตัวเลข หรือวลีที่ไม่แน่ใจกลับไปยังต้นฉบับที่ถูกต้องได้ จากนั้นข้อความถอดเสียงอาจใช้เป็นข้อมูลสำหรับขั้นตอนสรุป แปล หรือแก้ไขเนื้อหาแยกต่างหาก\n\n### บริบท คำใบ้คำสำคัญ และภาษาที่คาดว่าจะพูด\n\nผู้พัฒนาแยกคำแนะนำสามชนิด พรอมต์ให้บริบทแบบอิสระเกี่ยวกับหัวข้อหรือสถานการณ์ของเสียงบันทึก คำสำคัญระบุคำหรือวลีจริงที่คาดว่าจะปรากฏในเสียงพูด ส่วนรายการภาษาระบุภาษาพูดที่คาดหมาย สำหรับการสนทนาเรื่องผลิตภัณฑ์สองภาษา ให้อธิบายสถานการณ์ในพรอมต์ ระบุชื่อผลิตภัณฑ์ที่เกี่ยวข้องเป็นคำสำคัญ และให้ภาษาที่คาดหมาย สิ่งเหล่านี้เป็นคำใบ้ช่วยรู้จำ ไม่ใช่คำสั่งให้เติมคำที่ไม่มีใครพูด\n\nGPT Transcribe ใช้ฟิลด์ languages รูปพหูพจน์แทนฟิลด์ language รูปเอกพจน์แบบเดิม โดย OpenAI ระบุว่าอย่าส่งทั้งสองฟิลด์ คู่มือยอมรับรหัส ISO 639-1 ที่รองรับ รหัส ISO 639-3 บางรายการ และรหัสภาษาจีนตามภูมิภาค ส่วนค่าที่ไม่รองรับหรือมีรูปแบบไม่ถูกต้องจะถูกปฏิเสธ คำสำคัญแต่ละรายการต้องอยู่ในบรรทัดเดียว และต้องไม่มีวงเล็บมุม อักขระกลับต้นบรรทัด หรืออักขระขึ้นบรรทัดใหม่ คำสำคัญที่ไม่ถูกต้องหรือพรอมต์ที่ยาวเกินไปอาจทำให้คำขอทั้งหมดถูกปฏิเสธ ใช้บริบทที่เกี่ยวข้อง และตรวจว่าชื่อในคำใบ้ปรากฏในเสียงจริงหรือไม่ แทนการถือว่ารายการคำใบ้คือข้อความถอดเสียง\n\n### เอาต์พุต JSON และการคาดการณ์ภาษาที่ตรวจพบ\n\nผลจากไฟล์ที่เอกสารระบุเป็น JSON ซึ่งมีข้อความถอดเสียงและภาษาที่ตรวจพบ การคาดการณ์ภาษาเหล่านั้นเป็นเอาต์พุตของโมเดล ไม่ใช่สำเนาคำใบ้ภาษาที่ส่งให้ รายการภาษาว่างเป็นผลที่ใช้ได้เมื่อโมเดลไม่สามารถคาดการณ์อย่างน่าเชื่อถือ ไม่ได้ยืนยันว่าเสียงบันทึกเงียบหรือการถอดเสียงล้มเหลว แยกข้อความที่รู้จำออกจากข้อมูลกำกับภาษา เพื่อให้การประมวลผลขั้นต่อไปใช้แต่ละส่วนตามความหมาย\n\n### สตรีมข้อความถอดเสียงจากไฟล์\n\nไฟล์ที่บันทึกเสร็จแล้วอาจสร้างข้อความถอดเสียงทีละส่วนขณะประมวลผล OpenAI อธิบายเหตุการณ์ transcript.text.delta สำหรับข้อความบางส่วน และ transcript.text.done สำหรับข้อความถอดเสียงครบทั้งไฟล์ เหตุการณ์สุดท้ายยังมีภาษาที่ตรวจพบด้วย นี่คือการสตรีมเอาต์พุตของเสียงบันทึกที่ส่งให้แล้ว มีประโยชน์ในการแสดงความคืบหน้าของไฟล์อัปโหลดยาว โดยเหตุการณ์สุดท้ายยืนยันข้อความที่ควรเก็บเป็นผลที่เสร็จสมบูรณ์\n\n### เทิร์นที่คอมมิตในเซสชัน Realtime\n\nGPT Transcribe ยังมีขั้นตอน Realtime เฉพาะทางผ่าน WebSocket เพิ่มเสียงลงในบัฟเฟอร์อินพุต แล้วแอปพลิเคชันคอมมิตเทิร์นเสียงอย่างชัดเจน การถอดเสียงเริ่มสำหรับส่วนที่คอมมิตนั้น และอาจส่งผลส่วนเพิ่มก่อนเหตุการณ์เสร็จสิ้น พร้อมข้อมูลภาษาที่ตรวจพบ ในขั้นตอนเซสชันของผู้พัฒนานี้ โมเดลใช้เทิร์นที่ถอดเสียงก่อนหน้าเป็นบริบทโดยอัตโนมัติ สิ่งนี้ต่างจากการส่งข้อความคำบรรยายสดต่อเนื่องเมื่อเสียงจากไมโครโฟนเข้ามา OpenAI ใช้ชื่อ GPT Live Transcribe สำหรับขั้นตอนต่อเนื่องนั้น\n\nสำหรับหลายเทิร์น ให้เก็บรหัสรายการอินพุตพร้อมข้อความถอดเสียงที่ตรงกัน OpenAI เตือนว่าเหตุการณ์เสร็จสิ้นจากคนละเทิร์นอาจไม่มาตามลำดับการพูด จึงควรจับคู่ผลสุดท้ายแต่ละรายการกับอินพุตที่คอมมิต แทนการจัดลำดับการสนทนาด้วยเวลาเสร็จสิ้นเพียงอย่างเดียว ผลงานที่มีประโยชน์คือข้อความถอดเสียงเรียงลำดับจากรายการสุดท้ายที่ถูกต้อง โดยถือว่าข้อความระหว่างทางเป็นความคืบหน้า ไม่ใช่คำพูดที่เสร็จแล้วอีกหนึ่งรายการ\n\n### ผลลัพธ์เฉพาะทางและข้อจำกัดสำคัญ\n\nโปรไฟล์นี้ไม่ได้ให้ข้อกำหนดร่วมที่ครอบคลุมคำบรรยาย เวลา การแปล หรือป้ายกำกับผู้พูดทุกแบบ คู่มือย้ายระบบของ OpenAI แยกความสามารถเฉพาะทางเหล่านั้น รูปแบบคำบรรยายโดยตรงและเวลาระดับคำต้องใช้โมเดลและรูปแบบที่เข้ากันได้ ส่วนป้ายกำกับผู้พูดใช้ GPT-4o Transcribe Diarize ผลจากไฟล์ของ GPT Transcribe เป็น JSON ไม่ใช่สิ่งที่ใช้แทนคำตอบ SRT, VTT หรือคำตอบที่มีรายละเอียดเวลาได้ทันที การ์ดของโมเดลรุ่นนี้ไม่ได้เผยแพร่ตัวเลขขนาดบริบทหรืองบเอาต์พุตสูงสุด จึงไม่ควรสมมติหน้าต่างโทเคนของโมเดลแชตให้กับงานถอดเสียง\n\nตรวจคำศัพท์ยาก ตัวเลข สำเนียง เสียงรบกวนเบื้องหลัง และการเปลี่ยนภาษากับเสียงบันทึก ตรวจว่าคำใบ้ที่เกี่ยวข้องช่วยรู้จำโดยไม่เพิ่มคำที่ไม่ได้พูด และข้อความถอดเสียงสุดท้ายครอบคลุมจนจบเสียง สำหรับผลหลายภาษา ให้เก็บถ้อยคำที่พูดไว้ก่อนเตรียมฉบับแปล การตรวจเหล่านี้ทำให้ข้อความถอดเสียงใช้เป็นข้อมูลต้นทางได้ พร้อมแยกคำใบ้บริบท ภาษาที่ตรวจพบ และเสียงพูดที่รู้จำอย่างชัดเจน",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "240e8505a0a9465bc8d015dada5ad8d7c47daf4e1719678fc734596cedf76bde",
    "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\">O</span><h2 id=\"sheet-title\">OpenAI: GPT Transcribe</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-transcribe</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|openai%2Fgpt-transcribe\">การรู้จำ</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\">GPT Transcribe เปลี่ยนเสียงพูดที่บันทึกไว้เป็นข้อความในภาษาเดิม โดยใช้พรอมต์บอกบริบท คำใบ้คำสำคัญตามถ้อยคำจริง และคำใบ้หลายภาษา OpenAI อธิบายการถอดเสียงไฟล์ที่บันทึกเสร็จแล้ว การสตรีมผลจากไฟล์ และการถอดเสียงหลังคอมมิตเทิร์นเสียงใน Realtime</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>GPT Transcribe เป็นโมเดลแปลงเสียงเป็นข้อความของ OpenAI สำหรับไฟล์เสียงที่บันทึกเสร็จแล้ว ผลการถอดเสียงไฟล์แบบสตรีม และเทิร์นเสียงที่คอมมิตในเซสชัน Realtime รับเสียงพร้อมบริบทข้อความที่เลือกส่งได้ แล้วคืนข้อความที่รู้จำ ผู้พัฒนาวางบทบาทให้ถอดเสียงพูดที่บันทึกไว้ในภาษาเดิมอย่างแม่นยำ รวมถึงคำศัพท์เฉพาะสาขา เสียงบันทึกหลายภาษา และการสลับภาษาระหว่างพูด ผลลัพธ์ที่มีประโยชน์คือข้อความถอดเสียงที่ยังเชื่อมกับเสียงบันทึก พร้อมข้อมูลกำกับภาษาที่ตรวจพบเมื่อโมเดลคาดการณ์ได้อย่างน่าเชื่อถือ</p><h4>เตรียมเสียงบันทึกที่เสร็จสมบูรณ์</h4><p>ขั้นตอนถอดเสียงไฟล์ของ OpenAI รับไฟล์อัปโหลดขนาดไม่เกิน 25 MB เอกสารอ้างอิงของเอนด์พอยต์ปัจจุบันระบุรูปแบบอินพุต FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV และ WebM และแนะนำให้มีข้อมูลกำกับไฟล์เพียงพอที่จะระบุรูปแบบ รวมถึงนามสกุลชื่อไฟล์และชนิดเนื้อหาที่เหมาะสม สำหรับเสียงบันทึกที่ใหญ่กว่า คู่มือแนะนำให้บีบอัดหรือแบ่งเป็นไฟล์ขนาด 25 MB หรือน้อยกว่า หลีกเลี่ยงการตัดกลางประโยค เพราะการตัดเสียงพูดรอบข้างออกอาจลดความแม่นยำในการรู้จำ รักษาลำดับส่วนต่าง ๆ และตำแหน่งของแต่ละส่วนในเสียงบันทึกต้นฉบับ</p><p>สำหรับการประชุม สัมภาษณ์ หรือการนำเสนอที่บันทึกไว้ ให้เสียงจริง พร้อมระบุหัวข้อและศัพท์ที่น่าจะพูด ผลลัพธ์ที่มีประโยชน์คือถ้อยคำที่รู้จำ ไม่ใช่บทสรุปการสนทนาที่อนุมานขึ้น เก็บรหัสเสียงบันทึกพร้อมข้อความที่คืนมา เพื่อให้ผู้ตรวจชื่อ ตัวเลข หรือวลีที่ไม่แน่ใจกลับไปยังต้นฉบับที่ถูกต้องได้ จากนั้นข้อความถอดเสียงอาจใช้เป็นข้อมูลสำหรับขั้นตอนสรุป แปล หรือแก้ไขเนื้อหาแยกต่างหาก</p><h4>บริบท คำใบ้คำสำคัญ และภาษาที่คาดว่าจะพูด</h4><p>ผู้พัฒนาแยกคำแนะนำสามชนิด พรอมต์ให้บริบทแบบอิสระเกี่ยวกับหัวข้อหรือสถานการณ์ของเสียงบันทึก คำสำคัญระบุคำหรือวลีจริงที่คาดว่าจะปรากฏในเสียงพูด ส่วนรายการภาษาระบุภาษาพูดที่คาดหมาย สำหรับการสนทนาเรื่องผลิตภัณฑ์สองภาษา ให้อธิบายสถานการณ์ในพรอมต์ ระบุชื่อผลิตภัณฑ์ที่เกี่ยวข้องเป็นคำสำคัญ และให้ภาษาที่คาดหมาย สิ่งเหล่านี้เป็นคำใบ้ช่วยรู้จำ ไม่ใช่คำสั่งให้เติมคำที่ไม่มีใครพูด</p><p>GPT Transcribe ใช้ฟิลด์ languages รูปพหูพจน์แทนฟิลด์ language รูปเอกพจน์แบบเดิม โดย OpenAI ระบุว่าอย่าส่งทั้งสองฟิลด์ คู่มือยอมรับรหัส ISO 639-1 ที่รองรับ รหัส ISO 639-3 บางรายการ และรหัสภาษาจีนตามภูมิภาค ส่วนค่าที่ไม่รองรับหรือมีรูปแบบไม่ถูกต้องจะถูกปฏิเสธ คำสำคัญแต่ละรายการต้องอยู่ในบรรทัดเดียว และต้องไม่มีวงเล็บมุม อักขระกลับต้นบรรทัด หรืออักขระขึ้นบรรทัดใหม่ คำสำคัญที่ไม่ถูกต้องหรือพรอมต์ที่ยาวเกินไปอาจทำให้คำขอทั้งหมดถูกปฏิเสธ ใช้บริบทที่เกี่ยวข้อง และตรวจว่าชื่อในคำใบ้ปรากฏในเสียงจริงหรือไม่ แทนการถือว่ารายการคำใบ้คือข้อความถอดเสียง</p><h4>เอาต์พุต JSON และการคาดการณ์ภาษาที่ตรวจพบ</h4><p>ผลจากไฟล์ที่เอกสารระบุเป็น JSON ซึ่งมีข้อความถอดเสียงและภาษาที่ตรวจพบ การคาดการณ์ภาษาเหล่านั้นเป็นเอาต์พุตของโมเดล ไม่ใช่สำเนาคำใบ้ภาษาที่ส่งให้ รายการภาษาว่างเป็นผลที่ใช้ได้เมื่อโมเดลไม่สามารถคาดการณ์อย่างน่าเชื่อถือ ไม่ได้ยืนยันว่าเสียงบันทึกเงียบหรือการถอดเสียงล้มเหลว แยกข้อความที่รู้จำออกจากข้อมูลกำกับภาษา เพื่อให้การประมวลผลขั้นต่อไปใช้แต่ละส่วนตามความหมาย</p><h4>สตรีมข้อความถอดเสียงจากไฟล์</h4><p>ไฟล์ที่บันทึกเสร็จแล้วอาจสร้างข้อความถอดเสียงทีละส่วนขณะประมวลผล OpenAI อธิบายเหตุการณ์ transcript.text.delta สำหรับข้อความบางส่วน และ transcript.text.done สำหรับข้อความถอดเสียงครบทั้งไฟล์ เหตุการณ์สุดท้ายยังมีภาษาที่ตรวจพบด้วย นี่คือการสตรีมเอาต์พุตของเสียงบันทึกที่ส่งให้แล้ว มีประโยชน์ในการแสดงความคืบหน้าของไฟล์อัปโหลดยาว โดยเหตุการณ์สุดท้ายยืนยันข้อความที่ควรเก็บเป็นผลที่เสร็จสมบูรณ์</p><h4>เทิร์นที่คอมมิตในเซสชัน Realtime</h4><p>GPT Transcribe ยังมีขั้นตอน Realtime เฉพาะทางผ่าน WebSocket เพิ่มเสียงลงในบัฟเฟอร์อินพุต แล้วแอปพลิเคชันคอมมิตเทิร์นเสียงอย่างชัดเจน การถอดเสียงเริ่มสำหรับส่วนที่คอมมิตนั้น และอาจส่งผลส่วนเพิ่มก่อนเหตุการณ์เสร็จสิ้น พร้อมข้อมูลภาษาที่ตรวจพบ ในขั้นตอนเซสชันของผู้พัฒนานี้ โมเดลใช้เทิร์นที่ถอดเสียงก่อนหน้าเป็นบริบทโดยอัตโนมัติ สิ่งนี้ต่างจากการส่งข้อความคำบรรยายสดต่อเนื่องเมื่อเสียงจากไมโครโฟนเข้ามา OpenAI ใช้ชื่อ GPT Live Transcribe สำหรับขั้นตอนต่อเนื่องนั้น</p><p>สำหรับหลายเทิร์น ให้เก็บรหัสรายการอินพุตพร้อมข้อความถอดเสียงที่ตรงกัน OpenAI เตือนว่าเหตุการณ์เสร็จสิ้นจากคนละเทิร์นอาจไม่มาตามลำดับการพูด จึงควรจับคู่ผลสุดท้ายแต่ละรายการกับอินพุตที่คอมมิต แทนการจัดลำดับการสนทนาด้วยเวลาเสร็จสิ้นเพียงอย่างเดียว ผลงานที่มีประโยชน์คือข้อความถอดเสียงเรียงลำดับจากรายการสุดท้ายที่ถูกต้อง โดยถือว่าข้อความระหว่างทางเป็นความคืบหน้า ไม่ใช่คำพูดที่เสร็จแล้วอีกหนึ่งรายการ</p><h4>ผลลัพธ์เฉพาะทางและข้อจำกัดสำคัญ</h4><p>โปรไฟล์นี้ไม่ได้ให้ข้อกำหนดร่วมที่ครอบคลุมคำบรรยาย เวลา การแปล หรือป้ายกำกับผู้พูดทุกแบบ คู่มือย้ายระบบของ OpenAI แยกความสามารถเฉพาะทางเหล่านั้น รูปแบบคำบรรยายโดยตรงและเวลาระดับคำต้องใช้โมเดลและรูปแบบที่เข้ากันได้ ส่วนป้ายกำกับผู้พูดใช้ GPT-4o Transcribe Diarize ผลจากไฟล์ของ GPT Transcribe เป็น JSON ไม่ใช่สิ่งที่ใช้แทนคำตอบ SRT, VTT หรือคำตอบที่มีรายละเอียดเวลาได้ทันที การ์ดของโมเดลรุ่นนี้ไม่ได้เผยแพร่ตัวเลขขนาดบริบทหรืองบเอาต์พุตสูงสุด จึงไม่ควรสมมติหน้าต่างโทเคนของโมเดลแชตให้กับงานถอดเสียง</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>openai/gpt-transcribe</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.00015</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-2158-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2158-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-2158-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2158-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;openai/gpt-transcribe&#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=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-transcribe&amp;route=Ultra&amp;caller=openai%2Fgpt-transcribe&amp;fmt=transcriptions\"><code>openai/gpt-transcribe</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-transcribe",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-transcribe",
      "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": [
                  "openai/gpt-transcribe"
                ],
                "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": [
                    "openai/gpt-transcribe"
                  ],
                  "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": "openai/gpt-transcribe"
              },
              "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.00015",
                "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.00015",
                "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': 'openai/gpt-transcribe', '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.00015
          }
        },
        "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.00015",
                "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.00015",
                "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": "openai/gpt-transcribe",
        "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.00015",
            "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.00015",
            "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": "openai/gpt-transcribe",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "13dcd3db3e013e56847835fab6280b8e5014d5345caf06e461a7d36d655ff7f1",
    "input_html_sha256": "35467730f1518f850d4e1f636c0e4590c5f365482a4d44c1d19dc47f51698884",
    "private_audit_sha256": "4ebbf6b8f5a06d867507eebcae9efff491029c79ed1a7204a441b53cf40e06ca",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/openai-gpt-transcribe/",
    "description": "GPT Transcribe เปลี่ยนเสียงพูดที่บันทึกไว้เป็นข้อความในภาษาเดิม โดยใช้พรอมต์บอกบริบท คำใบ้คำสำคัญตามถ้อยคำจริง และคำใบ้หลายภาษา OpenAI อธิบายการถอดเสียงไฟล์ที่บันทึกเสร็จแล้ว การสตรีมผลจากไฟล์ และการถอดเสียงหลังคอมมิตเทิร์นเสียงใน Realtime",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/openai-gpt-transcribe/index.md",
    "title": "OpenAI: GPT Transcribe — Ailoot",
    "url": "https://ailoot.ai/models/th/openai-gpt-transcribe/"
  },
  "rawModel": {
    "about": "GPT Transcribe เป็นโมเดลแปลงเสียงเป็นข้อความของ OpenAI สำหรับไฟล์เสียงที่บันทึกเสร็จแล้ว ผลการถอดเสียงไฟล์แบบสตรีม และเทิร์นเสียงที่คอมมิตในเซสชัน Realtime รับเสียงพร้อมบริบทข้อความที่เลือกส่งได้ แล้วคืนข้อความที่รู้จำ ผู้พัฒนาวางบทบาทให้ถอดเสียงพูดที่บันทึกไว้ในภาษาเดิมอย่างแม่นยำ รวมถึงคำศัพท์เฉพาะสาขา เสียงบันทึกหลายภาษา และการสลับภาษาระหว่างพูด ผลลัพธ์ที่มีประโยชน์คือข้อความถอดเสียงที่ยังเชื่อมกับเสียงบันทึก พร้อมข้อมูลกำกับภาษาที่ตรวจพบเมื่อโมเดลคาดการณ์ได้อย่างน่าเชื่อถือ\n\n### เตรียมเสียงบันทึกที่เสร็จสมบูรณ์\n\nขั้นตอนถอดเสียงไฟล์ของ OpenAI รับไฟล์อัปโหลดขนาดไม่เกิน 25 MB เอกสารอ้างอิงของเอนด์พอยต์ปัจจุบันระบุรูปแบบอินพุต FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV และ WebM และแนะนำให้มีข้อมูลกำกับไฟล์เพียงพอที่จะระบุรูปแบบ รวมถึงนามสกุลชื่อไฟล์และชนิดเนื้อหาที่เหมาะสม สำหรับเสียงบันทึกที่ใหญ่กว่า คู่มือแนะนำให้บีบอัดหรือแบ่งเป็นไฟล์ขนาด 25 MB หรือน้อยกว่า หลีกเลี่ยงการตัดกลางประโยค เพราะการตัดเสียงพูดรอบข้างออกอาจลดความแม่นยำในการรู้จำ รักษาลำดับส่วนต่าง ๆ และตำแหน่งของแต่ละส่วนในเสียงบันทึกต้นฉบับ\n\nสำหรับการประชุม สัมภาษณ์ หรือการนำเสนอที่บันทึกไว้ ให้เสียงจริง พร้อมระบุหัวข้อและศัพท์ที่น่าจะพูด ผลลัพธ์ที่มีประโยชน์คือถ้อยคำที่รู้จำ ไม่ใช่บทสรุปการสนทนาที่อนุมานขึ้น เก็บรหัสเสียงบันทึกพร้อมข้อความที่คืนมา เพื่อให้ผู้ตรวจชื่อ ตัวเลข หรือวลีที่ไม่แน่ใจกลับไปยังต้นฉบับที่ถูกต้องได้ จากนั้นข้อความถอดเสียงอาจใช้เป็นข้อมูลสำหรับขั้นตอนสรุป แปล หรือแก้ไขเนื้อหาแยกต่างหาก\n\n### บริบท คำใบ้คำสำคัญ และภาษาที่คาดว่าจะพูด\n\nผู้พัฒนาแยกคำแนะนำสามชนิด พรอมต์ให้บริบทแบบอิสระเกี่ยวกับหัวข้อหรือสถานการณ์ของเสียงบันทึก คำสำคัญระบุคำหรือวลีจริงที่คาดว่าจะปรากฏในเสียงพูด ส่วนรายการภาษาระบุภาษาพูดที่คาดหมาย สำหรับการสนทนาเรื่องผลิตภัณฑ์สองภาษา ให้อธิบายสถานการณ์ในพรอมต์ ระบุชื่อผลิตภัณฑ์ที่เกี่ยวข้องเป็นคำสำคัญ และให้ภาษาที่คาดหมาย สิ่งเหล่านี้เป็นคำใบ้ช่วยรู้จำ ไม่ใช่คำสั่งให้เติมคำที่ไม่มีใครพูด\n\nGPT Transcribe ใช้ฟิลด์ languages รูปพหูพจน์แทนฟิลด์ language รูปเอกพจน์แบบเดิม โดย OpenAI ระบุว่าอย่าส่งทั้งสองฟิลด์ คู่มือยอมรับรหัส ISO 639-1 ที่รองรับ รหัส ISO 639-3 บางรายการ และรหัสภาษาจีนตามภูมิภาค ส่วนค่าที่ไม่รองรับหรือมีรูปแบบไม่ถูกต้องจะถูกปฏิเสธ คำสำคัญแต่ละรายการต้องอยู่ในบรรทัดเดียว และต้องไม่มีวงเล็บมุม อักขระกลับต้นบรรทัด หรืออักขระขึ้นบรรทัดใหม่ คำสำคัญที่ไม่ถูกต้องหรือพรอมต์ที่ยาวเกินไปอาจทำให้คำขอทั้งหมดถูกปฏิเสธ ใช้บริบทที่เกี่ยวข้อง และตรวจว่าชื่อในคำใบ้ปรากฏในเสียงจริงหรือไม่ แทนการถือว่ารายการคำใบ้คือข้อความถอดเสียง\n\n### เอาต์พุต JSON และการคาดการณ์ภาษาที่ตรวจพบ\n\nผลจากไฟล์ที่เอกสารระบุเป็น JSON ซึ่งมีข้อความถอดเสียงและภาษาที่ตรวจพบ การคาดการณ์ภาษาเหล่านั้นเป็นเอาต์พุตของโมเดล ไม่ใช่สำเนาคำใบ้ภาษาที่ส่งให้ รายการภาษาว่างเป็นผลที่ใช้ได้เมื่อโมเดลไม่สามารถคาดการณ์อย่างน่าเชื่อถือ ไม่ได้ยืนยันว่าเสียงบันทึกเงียบหรือการถอดเสียงล้มเหลว แยกข้อความที่รู้จำออกจากข้อมูลกำกับภาษา เพื่อให้การประมวลผลขั้นต่อไปใช้แต่ละส่วนตามความหมาย\n\n### สตรีมข้อความถอดเสียงจากไฟล์\n\nไฟล์ที่บันทึกเสร็จแล้วอาจสร้างข้อความถอดเสียงทีละส่วนขณะประมวลผล OpenAI อธิบายเหตุการณ์ transcript.text.delta สำหรับข้อความบางส่วน และ transcript.text.done สำหรับข้อความถอดเสียงครบทั้งไฟล์ เหตุการณ์สุดท้ายยังมีภาษาที่ตรวจพบด้วย นี่คือการสตรีมเอาต์พุตของเสียงบันทึกที่ส่งให้แล้ว มีประโยชน์ในการแสดงความคืบหน้าของไฟล์อัปโหลดยาว โดยเหตุการณ์สุดท้ายยืนยันข้อความที่ควรเก็บเป็นผลที่เสร็จสมบูรณ์\n\n### เทิร์นที่คอมมิตในเซสชัน Realtime\n\nGPT Transcribe ยังมีขั้นตอน Realtime เฉพาะทางผ่าน WebSocket เพิ่มเสียงลงในบัฟเฟอร์อินพุต แล้วแอปพลิเคชันคอมมิตเทิร์นเสียงอย่างชัดเจน การถอดเสียงเริ่มสำหรับส่วนที่คอมมิตนั้น และอาจส่งผลส่วนเพิ่มก่อนเหตุการณ์เสร็จสิ้น พร้อมข้อมูลภาษาที่ตรวจพบ ในขั้นตอนเซสชันของผู้พัฒนานี้ โมเดลใช้เทิร์นที่ถอดเสียงก่อนหน้าเป็นบริบทโดยอัตโนมัติ สิ่งนี้ต่างจากการส่งข้อความคำบรรยายสดต่อเนื่องเมื่อเสียงจากไมโครโฟนเข้ามา OpenAI ใช้ชื่อ GPT Live Transcribe สำหรับขั้นตอนต่อเนื่องนั้น\n\nสำหรับหลายเทิร์น ให้เก็บรหัสรายการอินพุตพร้อมข้อความถอดเสียงที่ตรงกัน OpenAI เตือนว่าเหตุการณ์เสร็จสิ้นจากคนละเทิร์นอาจไม่มาตามลำดับการพูด จึงควรจับคู่ผลสุดท้ายแต่ละรายการกับอินพุตที่คอมมิต แทนการจัดลำดับการสนทนาด้วยเวลาเสร็จสิ้นเพียงอย่างเดียว ผลงานที่มีประโยชน์คือข้อความถอดเสียงเรียงลำดับจากรายการสุดท้ายที่ถูกต้อง โดยถือว่าข้อความระหว่างทางเป็นความคืบหน้า ไม่ใช่คำพูดที่เสร็จแล้วอีกหนึ่งรายการ\n\n### ผลลัพธ์เฉพาะทางและข้อจำกัดสำคัญ\n\nโปรไฟล์นี้ไม่ได้ให้ข้อกำหนดร่วมที่ครอบคลุมคำบรรยาย เวลา การแปล หรือป้ายกำกับผู้พูดทุกแบบ คู่มือย้ายระบบของ OpenAI แยกความสามารถเฉพาะทางเหล่านั้น รูปแบบคำบรรยายโดยตรงและเวลาระดับคำต้องใช้โมเดลและรูปแบบที่เข้ากันได้ ส่วนป้ายกำกับผู้พูดใช้ GPT-4o Transcribe Diarize ผลจากไฟล์ของ GPT Transcribe เป็น JSON ไม่ใช่สิ่งที่ใช้แทนคำตอบ SRT, VTT หรือคำตอบที่มีรายละเอียดเวลาได้ทันที การ์ดของโมเดลรุ่นนี้ไม่ได้เผยแพร่ตัวเลขขนาดบริบทหรืองบเอาต์พุตสูงสุด จึงไม่ควรสมมติหน้าต่างโทเคนของโมเดลแชตให้กับงานถอดเสียง\n\nตรวจคำศัพท์ยาก ตัวเลข สำเนียง เสียงรบกวนเบื้องหลัง และการเปลี่ยนภาษากับเสียงบันทึก ตรวจว่าคำใบ้ที่เกี่ยวข้องช่วยรู้จำโดยไม่เพิ่มคำที่ไม่ได้พูด และข้อความถอดเสียงสุดท้ายครอบคลุมจนจบเสียง สำหรับผลหลายภาษา ให้เก็บถ้อยคำที่พูดไว้ก่อนเตรียมฉบับแปล การตรวจเหล่านี้ทำให้ข้อความถอดเสียงใช้เป็นข้อมูลต้นทางได้ พร้อมแยกคำใบ้บริบท ภาษาที่ตรวจพบ และเสียงพูดที่รู้จำอย่างชัดเจน",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00015",
            "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.00015",
            "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": "openai/gpt-transcribe",
    "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": [
                  "openai/gpt-transcribe"
                ],
                "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": [
                    "openai/gpt-transcribe"
                  ],
                  "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": "openai/gpt-transcribe"
              },
              "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.00015",
                "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.00015",
                "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': 'openai/gpt-transcribe', '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.00015
          }
        },
        "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.00015",
                "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.00015",
                "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": "openai/gpt-transcribe",
        "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.00015",
            "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.00015",
            "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": "openai/gpt-transcribe",
        "request_model_id": "openai/gpt-transcribe",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT Transcribe",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "GPT Transcribe เปลี่ยนเสียงพูดที่บันทึกไว้เป็นข้อความในภาษาเดิม โดยใช้พรอมต์บอกบริบท คำใบ้คำสำคัญตามถ้อยคำจริง และคำใบ้หลายภาษา OpenAI อธิบายการถอดเสียงไฟล์ที่บันทึกเสร็จแล้ว การสตรีมผลจากไฟล์ และการถอดเสียงหลังคอมมิตเทิร์นเสียงใน Realtime"
  },
  "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": "GPT Transcribe เปลี่ยนเสียงพูดที่บันทึกไว้เป็นข้อความในภาษาเดิม โดยใช้พรอมต์บอกบริบท คำใบ้คำสำคัญตามถ้อยคำจริง และคำใบ้หลายภาษา OpenAI อธิบายการถอดเสียงไฟล์ที่บันทึกเสร็จแล้ว การสตรีมผลจากไฟล์ และการถอดเสียงหลังคอมมิตเทิร์นเสียงใน Realtime",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "30c1e53a52f098443f71b87638d7937e6958007a1ba296001032486b54f002bc",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "e655394add51645034f676fa59046278e1c95f7c46689cfbc5a7c7238ed1fd97"
}
