{
  "aboutHtml": "<p>Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดอัตโนมัติหลายภาษาที่แปลงเสียงพูดเป็นข้อความ Google ระบุไว้ในเอกสารว่าเป็นโมเดลถอดเสียง Chirp 3 ในตระกูล Speech-to-Text V2 โดยมีรหัสโมเดล chirp_3 จุดประสงค์คือการรู้จำเสียงพูดที่บันทึกไว้หรือส่งมาแบบสตรีม พร้อมการตรวจจับภาษาและคุณสมบัติเฉพาะสำหรับการถอดเสียง ชิ้นงานที่ได้คือบทถอดเสียงและเมทาดาทาที่วิธีรู้จำที่เลือกนั้นรองรับ ไม่ใช่เสียงพูดที่สร้างขึ้นหรือคำตอบปลายเปิดจากผู้ช่วย</p><p>ผู้ผลิตแยกการรู้จำเป็นการรู้จำแบบสตรีม การรู้จำแบบซิงโครนัสสำหรับคลิปสั้น และการรู้จำแบบแบตช์สำหรับไฟล์บันทึกเสียงที่ยาวกว่า เลือกโหมดตามเสียงต้นฉบับและผลลัพธ์ที่ต้องการ สำหรับข้อความเสียงสั้น คำตอบข้อความที่ประมวลผลเสร็จแล้วอาจเพียงพอ สำหรับการสัมภาษณ์หรือสายสนทนาที่บันทึกไว้ ผลลัพธ์แบบแบตช์ที่มีข้อมูลผู้พูดอาจมีประโยชน์มากกว่า สำหรับคำบรรยายสดหรืออินเทอร์เฟซรับคำสั่งด้วยเสียง ให้แยกข้อความระหว่างประมวลผลออกจากผลการรู้จำขั้นสุดท้าย และเก็บช่วงเวลาของเสียงที่ข้อความนั้นอธิบายไว้ด้วย</p><p>เตรียมเสียงด้วยการเข้ารหัสที่การใช้งานระบบรู้จำคาดหวัง ตัวอย่าง Chirp 3 ของ Google ใช้การตรวจจับวิธีถอดรหัสอัตโนมัติสำหรับไฟล์ที่บันทึกไว้ และกำหนดวิธีถอดรหัสอย่างชัดเจนสำหรับการตั้งค่าสตรีมเสียงดิบ เอกสารอ้างอิงตัวถอดรหัส V2 ที่เกี่ยวข้องระบุการเข้ารหัสที่รองรับ เช่น WAV PCM หรือเสียงแบบคอมแพนด์, FLAC, MP3, Ogg/WebM Opus และ AAC ในคอนเทนเนอร์ MP4, M4A หรือ MOV ชื่อคอนเทนเนอร์ไม่สามารถใช้แทนข้อมูลโคเดกและการตั้งค่าการสุ่มตัวอย่างจริงได้ ควรรักษาความชัดเจนของเสียงพูด และหลีกเลี่ยงเสียงแตกจากการตัดยอดสัญญาณอย่างรุนแรงหรือการแปลงที่ไม่จำเป็นจนทำให้รายละเอียดเสียงสูญหาย</p><p>Chirp 3 สามารถระบุและถอดเสียงภาษาหลักได้โดยอัตโนมัติ และการระบุชุดโลแคลที่คาดว่าจะพบสามารถจำกัดตัวเลือกในการรู้จำให้แคบลงได้ ภาษาที่ใช้ได้แตกต่างกันไปตามวิธีและคุณสมบัติ รายการภาษาที่ถอดเสียงได้มีขอบเขตกว้างกว่ารายการภาษาที่รองรับการแยกผู้พูด ดังนั้น การรู้จำภาษาหนึ่งได้จึงไม่ได้ยืนยันว่าคุณสมบัติเกี่ยวกับผู้พูดหรือเวลาทั้งหมดใช้กับภาษานั้นได้ เลือกโลแคลให้ตรงกับไฟล์บันทึกเสียง และเก็บชื่อหรือศัพท์เฉพาะที่มีการสลับภาษาไว้เพื่อตรวจทาน ป้ายกำกับภาษาที่ตรวจพบเป็นส่วนหนึ่งของผลลัพธ์ ไม่ใช่หลักฐานว่าคำที่พบไม่บ่อยทั้งหมดได้รับการรู้จำอย่างถูกต้อง</p><p>การแยกผู้พูดจัดกลุ่มเสียงพูดตามเสียงของแต่ละคนในไฟล์บันทึกเสียงช่องเดียว Google มีตัวอย่างการถอดเสียงแบบแบตช์ที่ให้ข้อมูลผู้พูดแยกเป็นรายคำ สำหรับการสัมภาษณ์ ให้เก็บป้ายกำกับเหล่านี้คู่กับข้อความที่รู้จำได้ และเทียบจังหวะเปลี่ยนผู้พูดกับเสียงบันทึกก่อนผูกกับชื่อจริงหรือบทบาท เสียงที่คล้ายกัน การพูดแทรก และการพูดทับกันอาจทำให้ระบุผู้พูดได้ยาก ควรระบุรูปแบบช่องเสียงของต้นฉบับและงานตรวจทานผู้พูดที่ต้องการให้ชัดเจน แทนการถือว่าป้ายกำกับเป็นข้อมูลยืนยันตัวตนที่ตรวจสอบแยกต่างหากแล้ว</p><p>ข้อมูลเวลาก็ขึ้นอยู่กับวิธีที่ใช้เช่นกัน การรู้จำแบบสตรีมให้ข้อมูลประทับเวลาระดับช่วงคำพูด ส่วนคำแนะนำของผู้ผลิตสำหรับการรู้จำจากไฟล์อธิบายตัวเลือกข้อมูลเวลารายคำ ซึ่งอาจต้องแลกกับคุณภาพการถอดเสียง เก็บเมทาดาทาที่วิธีที่เลือกส่งกลับมาจริง และตรวจทานความตรงกันของเวลากับเสียงควบคู่กับถ้อยคำ เวิร์กโฟลว์คำบรรยายต้องการทั้งสองส่วน คือข้อความที่รู้จำได้และอ่านเข้าใจง่าย กับหลักฐานว่าขอบเขตเวลาตรงกับเสียงที่ถูกต้อง Google ยังเตือนว่าค่าความมั่นใจระดับคำที่ส่งกลับมาไม่ใช่คะแนนความมั่นใจที่แท้จริง จึงไม่ควรใช้รับรองว่าคำนั้นถูกต้อง</p><p>การปรับการรู้จำเสียงพูดช่วยป้อนวลีและชื่อเฉพาะที่น่าจะปรากฏในเสียงบันทึก ผู้ผลิตระบุว่าพจนานุกรมรองรับได้สูงสุด 1,000 วลี และแนะนำให้ใช้รายการที่เกี่ยวข้องให้น้อยที่สุดเท่าที่จำเป็น เพื่อไม่ให้การรู้จำคำอื่นด้อยลง สำหรับการนำเสนอทางเทคนิค ให้เตรียมรายการสั้น ๆ ของชื่อผลิตภัณฑ์และคำย่อที่ใช้จริง แล้วตรวจสอบคำเหล่านั้นในบทถอดเสียง การเพิ่มน้ำหนักให้คำช่วยให้ระบบพิจารณาคำนั้นในการรู้จำ แต่ไม่ได้ยืนยันว่ามีการพูดคำนั้นจริง และใช้แทนการตรวจเทียบกับเสียงไม่ได้</p><p>โมเดลใส่เครื่องหมายวรรคตอนและอักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ ซึ่งสามารถปิดได้ผ่านอินเทอร์เฟซที่ระบุในเอกสาร Google ยังอธิบายคุณสมบัติแบบพรีวิวสำหรับคำสั่งกำหนดรูปแบบการถอดเสียงเอง เช่น ต้องการให้เขียนชื่อหรือวันที่ใดในรูปแบบใด ให้คำสั่งเหล่านี้เน้นเฉพาะการจัดรูปแบบเสียงพูดที่รู้จำได้ บทถอดเสียงที่ปรับวันที่ให้เป็นรูปแบบมาตรฐานหรือใช้ตัวพิมพ์ใหญ่กับแบรนด์ยังคงต้องรักษาความหมายของคำพูด การสรุป การแปล หรือการวิเคราะห์ข้อเท็จจริงเป็นการนำบทถอดเสียงไปใช้ในขั้นถัดไป ไม่ใช่สิ่งที่ผลการรู้จำเพียงอย่างเดียวยืนยันได้</p><p>ตัวลดเสียงรบกวนในตัวมีไว้เพื่อลดเสียงดนตรีพื้นหลังและเสียงแวดล้อม เช่น ฝนหรือเสียงบนถนน Google ระบุชัดเจนว่าไม่สามารถกำจัดเสียงมนุษย์ที่พูดอยู่เบื้องหลังได้ รักษาความแตกต่างนี้ไว้เมื่อเตรียมเสียงบันทึกที่มีบทสนทนาซ้อนกัน ตรวจสอบทั้งช่วงที่มีเสียงรบกวนและช่วงที่เงียบโดยเทียบกับต้นฉบับ แทนการสันนิษฐานว่าบทถอดเสียงที่ดูสะอาดขึ้นพิสูจน์แล้วว่าเสียงรบกวนถูกกำจัด ผลลัพธ์ที่มีประโยชน์ควรทำให้ระบุช่วงที่ไม่แน่ชัดเพื่อแก้ไขได้</p><p>สำหรับงานสตรีม ความไวในการตรวจจับจุดจบของคำพูดกำหนดว่าเมื่อใดจะถือว่าช่วงคำพูดสิ้นสุด ผู้ผลิตอธิบายการตั้งค่า standard, short และ supershort สำหรับคำพูดที่คาดว่าจะสั้นลงตามลำดับ การตั้งค่าที่เร็วกว่าสามารถตัดคำพูดของผู้พูดที่เว้นจังหวะทั้งที่ยังพูดไม่จบได้ เลือกการตั้งค่าให้เหมาะกับการบอกข้อความตามธรรมชาติ ประโยคสั้น หรือคำสั่งที่สั้นมาก และเก็บสถานะผลลัพธ์ขั้นสุดท้ายไว้กับบทถอดเสียง สำหรับไฟล์ที่บันทึกเสร็จแล้ว ให้ตรวจทานชื่อ ปริมาณ คำปฏิเสธ และขอบเขตการเปลี่ยนผู้พูด จากนั้นเก็บโหมดที่เลือกและเสียงต้นฉบับไว้เพื่อให้ตรวจสอบหรือนำผลลัพธ์กลับมาใช้ได้</p>",
  "aboutText": "Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดอัตโนมัติหลายภาษาที่แปลงเสียงพูดเป็นข้อความ Google ระบุไว้ในเอกสารว่าเป็นโมเดลถอดเสียง Chirp 3 ในตระกูล Speech-to-Text V2 โดยมีรหัสโมเดล chirp_3 จุดประสงค์คือการรู้จำเสียงพูดที่บันทึกไว้หรือส่งมาแบบสตรีม พร้อมการตรวจจับภาษาและคุณสมบัติเฉพาะสำหรับการถอดเสียง ชิ้นงานที่ได้คือบทถอดเสียงและเมทาดาทาที่วิธีรู้จำที่เลือกนั้นรองรับ ไม่ใช่เสียงพูดที่สร้างขึ้นหรือคำตอบปลายเปิดจากผู้ช่วย\n\nผู้ผลิตแยกการรู้จำเป็นการรู้จำแบบสตรีม การรู้จำแบบซิงโครนัสสำหรับคลิปสั้น และการรู้จำแบบแบตช์สำหรับไฟล์บันทึกเสียงที่ยาวกว่า เลือกโหมดตามเสียงต้นฉบับและผลลัพธ์ที่ต้องการ สำหรับข้อความเสียงสั้น คำตอบข้อความที่ประมวลผลเสร็จแล้วอาจเพียงพอ สำหรับการสัมภาษณ์หรือสายสนทนาที่บันทึกไว้ ผลลัพธ์แบบแบตช์ที่มีข้อมูลผู้พูดอาจมีประโยชน์มากกว่า สำหรับคำบรรยายสดหรืออินเทอร์เฟซรับคำสั่งด้วยเสียง ให้แยกข้อความระหว่างประมวลผลออกจากผลการรู้จำขั้นสุดท้าย และเก็บช่วงเวลาของเสียงที่ข้อความนั้นอธิบายไว้ด้วย\n\nเตรียมเสียงด้วยการเข้ารหัสที่การใช้งานระบบรู้จำคาดหวัง ตัวอย่าง Chirp 3 ของ Google ใช้การตรวจจับวิธีถอดรหัสอัตโนมัติสำหรับไฟล์ที่บันทึกไว้ และกำหนดวิธีถอดรหัสอย่างชัดเจนสำหรับการตั้งค่าสตรีมเสียงดิบ เอกสารอ้างอิงตัวถอดรหัส V2 ที่เกี่ยวข้องระบุการเข้ารหัสที่รองรับ เช่น WAV PCM หรือเสียงแบบคอมแพนด์, FLAC, MP3, Ogg/WebM Opus และ AAC ในคอนเทนเนอร์ MP4, M4A หรือ MOV ชื่อคอนเทนเนอร์ไม่สามารถใช้แทนข้อมูลโคเดกและการตั้งค่าการสุ่มตัวอย่างจริงได้ ควรรักษาความชัดเจนของเสียงพูด และหลีกเลี่ยงเสียงแตกจากการตัดยอดสัญญาณอย่างรุนแรงหรือการแปลงที่ไม่จำเป็นจนทำให้รายละเอียดเสียงสูญหาย\n\nChirp 3 สามารถระบุและถอดเสียงภาษาหลักได้โดยอัตโนมัติ และการระบุชุดโลแคลที่คาดว่าจะพบสามารถจำกัดตัวเลือกในการรู้จำให้แคบลงได้ ภาษาที่ใช้ได้แตกต่างกันไปตามวิธีและคุณสมบัติ รายการภาษาที่ถอดเสียงได้มีขอบเขตกว้างกว่ารายการภาษาที่รองรับการแยกผู้พูด ดังนั้น การรู้จำภาษาหนึ่งได้จึงไม่ได้ยืนยันว่าคุณสมบัติเกี่ยวกับผู้พูดหรือเวลาทั้งหมดใช้กับภาษานั้นได้ เลือกโลแคลให้ตรงกับไฟล์บันทึกเสียง และเก็บชื่อหรือศัพท์เฉพาะที่มีการสลับภาษาไว้เพื่อตรวจทาน ป้ายกำกับภาษาที่ตรวจพบเป็นส่วนหนึ่งของผลลัพธ์ ไม่ใช่หลักฐานว่าคำที่พบไม่บ่อยทั้งหมดได้รับการรู้จำอย่างถูกต้อง\n\nการแยกผู้พูดจัดกลุ่มเสียงพูดตามเสียงของแต่ละคนในไฟล์บันทึกเสียงช่องเดียว Google มีตัวอย่างการถอดเสียงแบบแบตช์ที่ให้ข้อมูลผู้พูดแยกเป็นรายคำ สำหรับการสัมภาษณ์ ให้เก็บป้ายกำกับเหล่านี้คู่กับข้อความที่รู้จำได้ และเทียบจังหวะเปลี่ยนผู้พูดกับเสียงบันทึกก่อนผูกกับชื่อจริงหรือบทบาท เสียงที่คล้ายกัน การพูดแทรก และการพูดทับกันอาจทำให้ระบุผู้พูดได้ยาก ควรระบุรูปแบบช่องเสียงของต้นฉบับและงานตรวจทานผู้พูดที่ต้องการให้ชัดเจน แทนการถือว่าป้ายกำกับเป็นข้อมูลยืนยันตัวตนที่ตรวจสอบแยกต่างหากแล้ว\n\nข้อมูลเวลาก็ขึ้นอยู่กับวิธีที่ใช้เช่นกัน การรู้จำแบบสตรีมให้ข้อมูลประทับเวลาระดับช่วงคำพูด ส่วนคำแนะนำของผู้ผลิตสำหรับการรู้จำจากไฟล์อธิบายตัวเลือกข้อมูลเวลารายคำ ซึ่งอาจต้องแลกกับคุณภาพการถอดเสียง เก็บเมทาดาทาที่วิธีที่เลือกส่งกลับมาจริง และตรวจทานความตรงกันของเวลากับเสียงควบคู่กับถ้อยคำ เวิร์กโฟลว์คำบรรยายต้องการทั้งสองส่วน คือข้อความที่รู้จำได้และอ่านเข้าใจง่าย กับหลักฐานว่าขอบเขตเวลาตรงกับเสียงที่ถูกต้อง Google ยังเตือนว่าค่าความมั่นใจระดับคำที่ส่งกลับมาไม่ใช่คะแนนความมั่นใจที่แท้จริง จึงไม่ควรใช้รับรองว่าคำนั้นถูกต้อง\n\nการปรับการรู้จำเสียงพูดช่วยป้อนวลีและชื่อเฉพาะที่น่าจะปรากฏในเสียงบันทึก ผู้ผลิตระบุว่าพจนานุกรมรองรับได้สูงสุด 1,000 วลี และแนะนำให้ใช้รายการที่เกี่ยวข้องให้น้อยที่สุดเท่าที่จำเป็น เพื่อไม่ให้การรู้จำคำอื่นด้อยลง สำหรับการนำเสนอทางเทคนิค ให้เตรียมรายการสั้น ๆ ของชื่อผลิตภัณฑ์และคำย่อที่ใช้จริง แล้วตรวจสอบคำเหล่านั้นในบทถอดเสียง การเพิ่มน้ำหนักให้คำช่วยให้ระบบพิจารณาคำนั้นในการรู้จำ แต่ไม่ได้ยืนยันว่ามีการพูดคำนั้นจริง และใช้แทนการตรวจเทียบกับเสียงไม่ได้\n\nโมเดลใส่เครื่องหมายวรรคตอนและอักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ ซึ่งสามารถปิดได้ผ่านอินเทอร์เฟซที่ระบุในเอกสาร Google ยังอธิบายคุณสมบัติแบบพรีวิวสำหรับคำสั่งกำหนดรูปแบบการถอดเสียงเอง เช่น ต้องการให้เขียนชื่อหรือวันที่ใดในรูปแบบใด ให้คำสั่งเหล่านี้เน้นเฉพาะการจัดรูปแบบเสียงพูดที่รู้จำได้ บทถอดเสียงที่ปรับวันที่ให้เป็นรูปแบบมาตรฐานหรือใช้ตัวพิมพ์ใหญ่กับแบรนด์ยังคงต้องรักษาความหมายของคำพูด การสรุป การแปล หรือการวิเคราะห์ข้อเท็จจริงเป็นการนำบทถอดเสียงไปใช้ในขั้นถัดไป ไม่ใช่สิ่งที่ผลการรู้จำเพียงอย่างเดียวยืนยันได้\n\nตัวลดเสียงรบกวนในตัวมีไว้เพื่อลดเสียงดนตรีพื้นหลังและเสียงแวดล้อม เช่น ฝนหรือเสียงบนถนน Google ระบุชัดเจนว่าไม่สามารถกำจัดเสียงมนุษย์ที่พูดอยู่เบื้องหลังได้ รักษาความแตกต่างนี้ไว้เมื่อเตรียมเสียงบันทึกที่มีบทสนทนาซ้อนกัน ตรวจสอบทั้งช่วงที่มีเสียงรบกวนและช่วงที่เงียบโดยเทียบกับต้นฉบับ แทนการสันนิษฐานว่าบทถอดเสียงที่ดูสะอาดขึ้นพิสูจน์แล้วว่าเสียงรบกวนถูกกำจัด ผลลัพธ์ที่มีประโยชน์ควรทำให้ระบุช่วงที่ไม่แน่ชัดเพื่อแก้ไขได้\n\nสำหรับงานสตรีม ความไวในการตรวจจับจุดจบของคำพูดกำหนดว่าเมื่อใดจะถือว่าช่วงคำพูดสิ้นสุด ผู้ผลิตอธิบายการตั้งค่า standard, short และ supershort สำหรับคำพูดที่คาดว่าจะสั้นลงตามลำดับ การตั้งค่าที่เร็วกว่าสามารถตัดคำพูดของผู้พูดที่เว้นจังหวะทั้งที่ยังพูดไม่จบได้ เลือกการตั้งค่าให้เหมาะกับการบอกข้อความตามธรรมชาติ ประโยคสั้น หรือคำสั่งที่สั้นมาก และเก็บสถานะผลลัพธ์ขั้นสุดท้ายไว้กับบทถอดเสียง สำหรับไฟล์ที่บันทึกเสร็จแล้ว ให้ตรวจทานชื่อ ปริมาณ คำปฏิเสธ และขอบเขตการเปลี่ยนผู้พูด จากนั้นเก็บโหมดที่เลือกและเสียงต้นฉบับไว้เพื่อให้ตรวจสอบหรือนำผลลัพธ์กลับมาใช้ได้",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "ca4d210a581aafb112ddc397269fbb88dad1d5ff2f3d518c19fbce4686d556f3",
    "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\">G</span><h2 id=\"sheet-title\">Google: Chirp 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/chirp-3</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|google%2Fchirp-3\">การรู้จำ</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\">Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดหลายภาษาสำหรับการสตรีม ไฟล์บันทึกเสียงสั้น และการถอดเสียงแบบแบตช์จากไฟล์ที่ยาวกว่า มีการตรวจจับภาษาอัตโนมัติ การใส่เครื่องหมายวรรคตอน การปรับการรู้จำให้เข้ากับคำศัพท์ และข้อมูลเวลาหรือข้อมูลผู้พูดที่ขึ้นอยู่กับโหมด ตัวลดเสียงรบกวนช่วยลดเสียงพื้นหลัง แต่ไม่สามารถกำจัดเสียงพูดของคนอื่นได้</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>Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดอัตโนมัติหลายภาษาที่แปลงเสียงพูดเป็นข้อความ Google ระบุไว้ในเอกสารว่าเป็นโมเดลถอดเสียง Chirp 3 ในตระกูล Speech-to-Text V2 โดยมีรหัสโมเดล chirp_3 จุดประสงค์คือการรู้จำเสียงพูดที่บันทึกไว้หรือส่งมาแบบสตรีม พร้อมการตรวจจับภาษาและคุณสมบัติเฉพาะสำหรับการถอดเสียง ชิ้นงานที่ได้คือบทถอดเสียงและเมทาดาทาที่วิธีรู้จำที่เลือกนั้นรองรับ ไม่ใช่เสียงพูดที่สร้างขึ้นหรือคำตอบปลายเปิดจากผู้ช่วย</p><p>ผู้ผลิตแยกการรู้จำเป็นการรู้จำแบบสตรีม การรู้จำแบบซิงโครนัสสำหรับคลิปสั้น และการรู้จำแบบแบตช์สำหรับไฟล์บันทึกเสียงที่ยาวกว่า เลือกโหมดตามเสียงต้นฉบับและผลลัพธ์ที่ต้องการ สำหรับข้อความเสียงสั้น คำตอบข้อความที่ประมวลผลเสร็จแล้วอาจเพียงพอ สำหรับการสัมภาษณ์หรือสายสนทนาที่บันทึกไว้ ผลลัพธ์แบบแบตช์ที่มีข้อมูลผู้พูดอาจมีประโยชน์มากกว่า สำหรับคำบรรยายสดหรืออินเทอร์เฟซรับคำสั่งด้วยเสียง ให้แยกข้อความระหว่างประมวลผลออกจากผลการรู้จำขั้นสุดท้าย และเก็บช่วงเวลาของเสียงที่ข้อความนั้นอธิบายไว้ด้วย</p><p>เตรียมเสียงด้วยการเข้ารหัสที่การใช้งานระบบรู้จำคาดหวัง ตัวอย่าง Chirp 3 ของ Google ใช้การตรวจจับวิธีถอดรหัสอัตโนมัติสำหรับไฟล์ที่บันทึกไว้ และกำหนดวิธีถอดรหัสอย่างชัดเจนสำหรับการตั้งค่าสตรีมเสียงดิบ เอกสารอ้างอิงตัวถอดรหัส V2 ที่เกี่ยวข้องระบุการเข้ารหัสที่รองรับ เช่น WAV PCM หรือเสียงแบบคอมแพนด์, FLAC, MP3, Ogg/WebM Opus และ AAC ในคอนเทนเนอร์ MP4, M4A หรือ MOV ชื่อคอนเทนเนอร์ไม่สามารถใช้แทนข้อมูลโคเดกและการตั้งค่าการสุ่มตัวอย่างจริงได้ ควรรักษาความชัดเจนของเสียงพูด และหลีกเลี่ยงเสียงแตกจากการตัดยอดสัญญาณอย่างรุนแรงหรือการแปลงที่ไม่จำเป็นจนทำให้รายละเอียดเสียงสูญหาย</p><p>Chirp 3 สามารถระบุและถอดเสียงภาษาหลักได้โดยอัตโนมัติ และการระบุชุดโลแคลที่คาดว่าจะพบสามารถจำกัดตัวเลือกในการรู้จำให้แคบลงได้ ภาษาที่ใช้ได้แตกต่างกันไปตามวิธีและคุณสมบัติ รายการภาษาที่ถอดเสียงได้มีขอบเขตกว้างกว่ารายการภาษาที่รองรับการแยกผู้พูด ดังนั้น การรู้จำภาษาหนึ่งได้จึงไม่ได้ยืนยันว่าคุณสมบัติเกี่ยวกับผู้พูดหรือเวลาทั้งหมดใช้กับภาษานั้นได้ เลือกโลแคลให้ตรงกับไฟล์บันทึกเสียง และเก็บชื่อหรือศัพท์เฉพาะที่มีการสลับภาษาไว้เพื่อตรวจทาน ป้ายกำกับภาษาที่ตรวจพบเป็นส่วนหนึ่งของผลลัพธ์ ไม่ใช่หลักฐานว่าคำที่พบไม่บ่อยทั้งหมดได้รับการรู้จำอย่างถูกต้อง</p><p>การแยกผู้พูดจัดกลุ่มเสียงพูดตามเสียงของแต่ละคนในไฟล์บันทึกเสียงช่องเดียว Google มีตัวอย่างการถอดเสียงแบบแบตช์ที่ให้ข้อมูลผู้พูดแยกเป็นรายคำ สำหรับการสัมภาษณ์ ให้เก็บป้ายกำกับเหล่านี้คู่กับข้อความที่รู้จำได้ และเทียบจังหวะเปลี่ยนผู้พูดกับเสียงบันทึกก่อนผูกกับชื่อจริงหรือบทบาท เสียงที่คล้ายกัน การพูดแทรก และการพูดทับกันอาจทำให้ระบุผู้พูดได้ยาก ควรระบุรูปแบบช่องเสียงของต้นฉบับและงานตรวจทานผู้พูดที่ต้องการให้ชัดเจน แทนการถือว่าป้ายกำกับเป็นข้อมูลยืนยันตัวตนที่ตรวจสอบแยกต่างหากแล้ว</p><p>ข้อมูลเวลาก็ขึ้นอยู่กับวิธีที่ใช้เช่นกัน การรู้จำแบบสตรีมให้ข้อมูลประทับเวลาระดับช่วงคำพูด ส่วนคำแนะนำของผู้ผลิตสำหรับการรู้จำจากไฟล์อธิบายตัวเลือกข้อมูลเวลารายคำ ซึ่งอาจต้องแลกกับคุณภาพการถอดเสียง เก็บเมทาดาทาที่วิธีที่เลือกส่งกลับมาจริง และตรวจทานความตรงกันของเวลากับเสียงควบคู่กับถ้อยคำ เวิร์กโฟลว์คำบรรยายต้องการทั้งสองส่วน คือข้อความที่รู้จำได้และอ่านเข้าใจง่าย กับหลักฐานว่าขอบเขตเวลาตรงกับเสียงที่ถูกต้อง Google ยังเตือนว่าค่าความมั่นใจระดับคำที่ส่งกลับมาไม่ใช่คะแนนความมั่นใจที่แท้จริง จึงไม่ควรใช้รับรองว่าคำนั้นถูกต้อง</p><p>การปรับการรู้จำเสียงพูดช่วยป้อนวลีและชื่อเฉพาะที่น่าจะปรากฏในเสียงบันทึก ผู้ผลิตระบุว่าพจนานุกรมรองรับได้สูงสุด 1,000 วลี และแนะนำให้ใช้รายการที่เกี่ยวข้องให้น้อยที่สุดเท่าที่จำเป็น เพื่อไม่ให้การรู้จำคำอื่นด้อยลง สำหรับการนำเสนอทางเทคนิค ให้เตรียมรายการสั้น ๆ ของชื่อผลิตภัณฑ์และคำย่อที่ใช้จริง แล้วตรวจสอบคำเหล่านั้นในบทถอดเสียง การเพิ่มน้ำหนักให้คำช่วยให้ระบบพิจารณาคำนั้นในการรู้จำ แต่ไม่ได้ยืนยันว่ามีการพูดคำนั้นจริง และใช้แทนการตรวจเทียบกับเสียงไม่ได้</p><p>โมเดลใส่เครื่องหมายวรรคตอนและอักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ ซึ่งสามารถปิดได้ผ่านอินเทอร์เฟซที่ระบุในเอกสาร Google ยังอธิบายคุณสมบัติแบบพรีวิวสำหรับคำสั่งกำหนดรูปแบบการถอดเสียงเอง เช่น ต้องการให้เขียนชื่อหรือวันที่ใดในรูปแบบใด ให้คำสั่งเหล่านี้เน้นเฉพาะการจัดรูปแบบเสียงพูดที่รู้จำได้ บทถอดเสียงที่ปรับวันที่ให้เป็นรูปแบบมาตรฐานหรือใช้ตัวพิมพ์ใหญ่กับแบรนด์ยังคงต้องรักษาความหมายของคำพูด การสรุป การแปล หรือการวิเคราะห์ข้อเท็จจริงเป็นการนำบทถอดเสียงไปใช้ในขั้นถัดไป ไม่ใช่สิ่งที่ผลการรู้จำเพียงอย่างเดียวยืนยันได้</p><p>ตัวลดเสียงรบกวนในตัวมีไว้เพื่อลดเสียงดนตรีพื้นหลังและเสียงแวดล้อม เช่น ฝนหรือเสียงบนถนน Google ระบุชัดเจนว่าไม่สามารถกำจัดเสียงมนุษย์ที่พูดอยู่เบื้องหลังได้ รักษาความแตกต่างนี้ไว้เมื่อเตรียมเสียงบันทึกที่มีบทสนทนาซ้อนกัน ตรวจสอบทั้งช่วงที่มีเสียงรบกวนและช่วงที่เงียบโดยเทียบกับต้นฉบับ แทนการสันนิษฐานว่าบทถอดเสียงที่ดูสะอาดขึ้นพิสูจน์แล้วว่าเสียงรบกวนถูกกำจัด ผลลัพธ์ที่มีประโยชน์ควรทำให้ระบุช่วงที่ไม่แน่ชัดเพื่อแก้ไขได้</p><p>สำหรับงานสตรีม ความไวในการตรวจจับจุดจบของคำพูดกำหนดว่าเมื่อใดจะถือว่าช่วงคำพูดสิ้นสุด ผู้ผลิตอธิบายการตั้งค่า standard, short และ supershort สำหรับคำพูดที่คาดว่าจะสั้นลงตามลำดับ การตั้งค่าที่เร็วกว่าสามารถตัดคำพูดของผู้พูดที่เว้นจังหวะทั้งที่ยังพูดไม่จบได้ เลือกการตั้งค่าให้เหมาะกับการบอกข้อความตามธรรมชาติ ประโยคสั้น หรือคำสั่งที่สั้นมาก และเก็บสถานะผลลัพธ์ขั้นสุดท้ายไว้กับบทถอดเสียง สำหรับไฟล์ที่บันทึกเสร็จแล้ว ให้ตรวจทานชื่อ ปริมาณ คำปฏิเสธ และขอบเขตการเปลี่ยนผู้พูด จากนั้นเก็บโหมดที่เลือกและเสียงต้นฉบับไว้เพื่อให้ตรวจสอบหรือนำผลลัพธ์กลับมาใช้ได้</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>google/chirp-3</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.000533333333334</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-1435-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1435-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-1435-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1435-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;google/chirp-3&#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=google%2Fchirp-3&amp;route=Ultra&amp;caller=google%2Fchirp-3&amp;fmt=transcriptions\"><code>google/chirp-3</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=google%2Fchirp-3&amp;route=Ultra&amp;caller=google%2Fchirp-3&amp;fmt=transcriptions\"><code>google/chirp-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/chirp-3",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "google/chirp-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|google%2Fchirp-3",
      "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": [
                  "google/chirp-3"
                ],
                "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": [
                    "google/chirp-3"
                  ],
                  "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": "google/chirp-3"
              },
              "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.000533333333334",
                "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.000533333333334",
                "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': 'google/chirp-3', '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.000533333333334
          }
        },
        "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.000533333333334",
                "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.000533333333334",
                "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": "google/chirp-3",
        "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.000533333333334",
            "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.000533333333334",
            "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": "google/chirp-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "219304c6eac9e2baa40443203f41877e464397bbd19a6ac507b75fcc4f482363",
    "input_html_sha256": "a44b75417573010a48c071b81a2c009f8ba3cfe5a0113eef235f2bc65a7183ac",
    "private_audit_sha256": "9a27b5bf0fbc5441634f7f2ae5c6b61616b13af2adbe9d10fb82880a19bee913",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/google-chirp-3/",
    "description": "Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดหลายภาษาสำหรับการสตรีม ไฟล์บันทึกเสียงสั้น และการถอดเสียงแบบแบตช์จากไฟล์ที่ยาวกว่า มีการตรวจจับภาษาอัตโนมัติ การใส่เครื่องหมายวรรคตอน การปรับการรู้จำให้เข้ากับคำศัพท์ และข้อมูลเวลาหรือข้อมูลผู้พูดที่ขึ้นอยู่กับโหมด ตัวลดเสียงรบกวนช่วยลดเสียงพื้นหลัง แต่ไม่สามารถกำจัดเสียงพูดของคนอื่นได้",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/google-chirp-3/index.md",
    "title": "Google: Chirp 3 — Ailoot",
    "url": "https://ailoot.ai/models/th/google-chirp-3/"
  },
  "rawModel": {
    "about": "Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดอัตโนมัติหลายภาษาที่แปลงเสียงพูดเป็นข้อความ Google ระบุไว้ในเอกสารว่าเป็นโมเดลถอดเสียง Chirp 3 ในตระกูล Speech-to-Text V2 โดยมีรหัสโมเดล chirp_3 จุดประสงค์คือการรู้จำเสียงพูดที่บันทึกไว้หรือส่งมาแบบสตรีม พร้อมการตรวจจับภาษาและคุณสมบัติเฉพาะสำหรับการถอดเสียง ชิ้นงานที่ได้คือบทถอดเสียงและเมทาดาทาที่วิธีรู้จำที่เลือกนั้นรองรับ ไม่ใช่เสียงพูดที่สร้างขึ้นหรือคำตอบปลายเปิดจากผู้ช่วย\n\nผู้ผลิตแยกการรู้จำเป็นการรู้จำแบบสตรีม การรู้จำแบบซิงโครนัสสำหรับคลิปสั้น และการรู้จำแบบแบตช์สำหรับไฟล์บันทึกเสียงที่ยาวกว่า เลือกโหมดตามเสียงต้นฉบับและผลลัพธ์ที่ต้องการ สำหรับข้อความเสียงสั้น คำตอบข้อความที่ประมวลผลเสร็จแล้วอาจเพียงพอ สำหรับการสัมภาษณ์หรือสายสนทนาที่บันทึกไว้ ผลลัพธ์แบบแบตช์ที่มีข้อมูลผู้พูดอาจมีประโยชน์มากกว่า สำหรับคำบรรยายสดหรืออินเทอร์เฟซรับคำสั่งด้วยเสียง ให้แยกข้อความระหว่างประมวลผลออกจากผลการรู้จำขั้นสุดท้าย และเก็บช่วงเวลาของเสียงที่ข้อความนั้นอธิบายไว้ด้วย\n\nเตรียมเสียงด้วยการเข้ารหัสที่การใช้งานระบบรู้จำคาดหวัง ตัวอย่าง Chirp 3 ของ Google ใช้การตรวจจับวิธีถอดรหัสอัตโนมัติสำหรับไฟล์ที่บันทึกไว้ และกำหนดวิธีถอดรหัสอย่างชัดเจนสำหรับการตั้งค่าสตรีมเสียงดิบ เอกสารอ้างอิงตัวถอดรหัส V2 ที่เกี่ยวข้องระบุการเข้ารหัสที่รองรับ เช่น WAV PCM หรือเสียงแบบคอมแพนด์, FLAC, MP3, Ogg/WebM Opus และ AAC ในคอนเทนเนอร์ MP4, M4A หรือ MOV ชื่อคอนเทนเนอร์ไม่สามารถใช้แทนข้อมูลโคเดกและการตั้งค่าการสุ่มตัวอย่างจริงได้ ควรรักษาความชัดเจนของเสียงพูด และหลีกเลี่ยงเสียงแตกจากการตัดยอดสัญญาณอย่างรุนแรงหรือการแปลงที่ไม่จำเป็นจนทำให้รายละเอียดเสียงสูญหาย\n\nChirp 3 สามารถระบุและถอดเสียงภาษาหลักได้โดยอัตโนมัติ และการระบุชุดโลแคลที่คาดว่าจะพบสามารถจำกัดตัวเลือกในการรู้จำให้แคบลงได้ ภาษาที่ใช้ได้แตกต่างกันไปตามวิธีและคุณสมบัติ รายการภาษาที่ถอดเสียงได้มีขอบเขตกว้างกว่ารายการภาษาที่รองรับการแยกผู้พูด ดังนั้น การรู้จำภาษาหนึ่งได้จึงไม่ได้ยืนยันว่าคุณสมบัติเกี่ยวกับผู้พูดหรือเวลาทั้งหมดใช้กับภาษานั้นได้ เลือกโลแคลให้ตรงกับไฟล์บันทึกเสียง และเก็บชื่อหรือศัพท์เฉพาะที่มีการสลับภาษาไว้เพื่อตรวจทาน ป้ายกำกับภาษาที่ตรวจพบเป็นส่วนหนึ่งของผลลัพธ์ ไม่ใช่หลักฐานว่าคำที่พบไม่บ่อยทั้งหมดได้รับการรู้จำอย่างถูกต้อง\n\nการแยกผู้พูดจัดกลุ่มเสียงพูดตามเสียงของแต่ละคนในไฟล์บันทึกเสียงช่องเดียว Google มีตัวอย่างการถอดเสียงแบบแบตช์ที่ให้ข้อมูลผู้พูดแยกเป็นรายคำ สำหรับการสัมภาษณ์ ให้เก็บป้ายกำกับเหล่านี้คู่กับข้อความที่รู้จำได้ และเทียบจังหวะเปลี่ยนผู้พูดกับเสียงบันทึกก่อนผูกกับชื่อจริงหรือบทบาท เสียงที่คล้ายกัน การพูดแทรก และการพูดทับกันอาจทำให้ระบุผู้พูดได้ยาก ควรระบุรูปแบบช่องเสียงของต้นฉบับและงานตรวจทานผู้พูดที่ต้องการให้ชัดเจน แทนการถือว่าป้ายกำกับเป็นข้อมูลยืนยันตัวตนที่ตรวจสอบแยกต่างหากแล้ว\n\nข้อมูลเวลาก็ขึ้นอยู่กับวิธีที่ใช้เช่นกัน การรู้จำแบบสตรีมให้ข้อมูลประทับเวลาระดับช่วงคำพูด ส่วนคำแนะนำของผู้ผลิตสำหรับการรู้จำจากไฟล์อธิบายตัวเลือกข้อมูลเวลารายคำ ซึ่งอาจต้องแลกกับคุณภาพการถอดเสียง เก็บเมทาดาทาที่วิธีที่เลือกส่งกลับมาจริง และตรวจทานความตรงกันของเวลากับเสียงควบคู่กับถ้อยคำ เวิร์กโฟลว์คำบรรยายต้องการทั้งสองส่วน คือข้อความที่รู้จำได้และอ่านเข้าใจง่าย กับหลักฐานว่าขอบเขตเวลาตรงกับเสียงที่ถูกต้อง Google ยังเตือนว่าค่าความมั่นใจระดับคำที่ส่งกลับมาไม่ใช่คะแนนความมั่นใจที่แท้จริง จึงไม่ควรใช้รับรองว่าคำนั้นถูกต้อง\n\nการปรับการรู้จำเสียงพูดช่วยป้อนวลีและชื่อเฉพาะที่น่าจะปรากฏในเสียงบันทึก ผู้ผลิตระบุว่าพจนานุกรมรองรับได้สูงสุด 1,000 วลี และแนะนำให้ใช้รายการที่เกี่ยวข้องให้น้อยที่สุดเท่าที่จำเป็น เพื่อไม่ให้การรู้จำคำอื่นด้อยลง สำหรับการนำเสนอทางเทคนิค ให้เตรียมรายการสั้น ๆ ของชื่อผลิตภัณฑ์และคำย่อที่ใช้จริง แล้วตรวจสอบคำเหล่านั้นในบทถอดเสียง การเพิ่มน้ำหนักให้คำช่วยให้ระบบพิจารณาคำนั้นในการรู้จำ แต่ไม่ได้ยืนยันว่ามีการพูดคำนั้นจริง และใช้แทนการตรวจเทียบกับเสียงไม่ได้\n\nโมเดลใส่เครื่องหมายวรรคตอนและอักษรตัวพิมพ์ใหญ่โดยอัตโนมัติ ซึ่งสามารถปิดได้ผ่านอินเทอร์เฟซที่ระบุในเอกสาร Google ยังอธิบายคุณสมบัติแบบพรีวิวสำหรับคำสั่งกำหนดรูปแบบการถอดเสียงเอง เช่น ต้องการให้เขียนชื่อหรือวันที่ใดในรูปแบบใด ให้คำสั่งเหล่านี้เน้นเฉพาะการจัดรูปแบบเสียงพูดที่รู้จำได้ บทถอดเสียงที่ปรับวันที่ให้เป็นรูปแบบมาตรฐานหรือใช้ตัวพิมพ์ใหญ่กับแบรนด์ยังคงต้องรักษาความหมายของคำพูด การสรุป การแปล หรือการวิเคราะห์ข้อเท็จจริงเป็นการนำบทถอดเสียงไปใช้ในขั้นถัดไป ไม่ใช่สิ่งที่ผลการรู้จำเพียงอย่างเดียวยืนยันได้\n\nตัวลดเสียงรบกวนในตัวมีไว้เพื่อลดเสียงดนตรีพื้นหลังและเสียงแวดล้อม เช่น ฝนหรือเสียงบนถนน Google ระบุชัดเจนว่าไม่สามารถกำจัดเสียงมนุษย์ที่พูดอยู่เบื้องหลังได้ รักษาความแตกต่างนี้ไว้เมื่อเตรียมเสียงบันทึกที่มีบทสนทนาซ้อนกัน ตรวจสอบทั้งช่วงที่มีเสียงรบกวนและช่วงที่เงียบโดยเทียบกับต้นฉบับ แทนการสันนิษฐานว่าบทถอดเสียงที่ดูสะอาดขึ้นพิสูจน์แล้วว่าเสียงรบกวนถูกกำจัด ผลลัพธ์ที่มีประโยชน์ควรทำให้ระบุช่วงที่ไม่แน่ชัดเพื่อแก้ไขได้\n\nสำหรับงานสตรีม ความไวในการตรวจจับจุดจบของคำพูดกำหนดว่าเมื่อใดจะถือว่าช่วงคำพูดสิ้นสุด ผู้ผลิตอธิบายการตั้งค่า standard, short และ supershort สำหรับคำพูดที่คาดว่าจะสั้นลงตามลำดับ การตั้งค่าที่เร็วกว่าสามารถตัดคำพูดของผู้พูดที่เว้นจังหวะทั้งที่ยังพูดไม่จบได้ เลือกการตั้งค่าให้เหมาะกับการบอกข้อความตามธรรมชาติ ประโยคสั้น หรือคำสั่งที่สั้นมาก และเก็บสถานะผลลัพธ์ขั้นสุดท้ายไว้กับบทถอดเสียง สำหรับไฟล์ที่บันทึกเสร็จแล้ว ให้ตรวจทานชื่อ ปริมาณ คำปฏิเสธ และขอบเขตการเปลี่ยนผู้พูด จากนั้นเก็บโหมดที่เลือกและเสียงต้นฉบับไว้เพื่อให้ตรวจสอบหรือนำผลลัพธ์กลับมาใช้ได้",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.000533333333334",
            "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.000533333333334",
            "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": "google/chirp-3",
    "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": [
                  "google/chirp-3"
                ],
                "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": [
                    "google/chirp-3"
                  ],
                  "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": "google/chirp-3"
              },
              "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.000533333333334",
                "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.000533333333334",
                "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': 'google/chirp-3', '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.000533333333334
          }
        },
        "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.000533333333334",
                "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.000533333333334",
                "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": "google/chirp-3",
        "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.000533333333334",
            "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.000533333333334",
            "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": "google/chirp-3",
        "request_model_id": "google/chirp-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Chirp 3",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดหลายภาษาสำหรับการสตรีม ไฟล์บันทึกเสียงสั้น และการถอดเสียงแบบแบตช์จากไฟล์ที่ยาวกว่า มีการตรวจจับภาษาอัตโนมัติ การใส่เครื่องหมายวรรคตอน การปรับการรู้จำให้เข้ากับคำศัพท์ และข้อมูลเวลาหรือข้อมูลผู้พูดที่ขึ้นอยู่กับโหมด ตัวลดเสียงรบกวนช่วยลดเสียงพื้นหลัง แต่ไม่สามารถกำจัดเสียงพูดของคนอื่นได้"
  },
  "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": "Google Chirp 3 เป็นโมเดลรู้จำเสียงพูดหลายภาษาสำหรับการสตรีม ไฟล์บันทึกเสียงสั้น และการถอดเสียงแบบแบตช์จากไฟล์ที่ยาวกว่า มีการตรวจจับภาษาอัตโนมัติ การใส่เครื่องหมายวรรคตอน การปรับการรู้จำให้เข้ากับคำศัพท์ และข้อมูลเวลาหรือข้อมูลผู้พูดที่ขึ้นอยู่กับโหมด ตัวลดเสียงรบกวนช่วยลดเสียงพื้นหลัง แต่ไม่สามารถกำจัดเสียงพูดของคนอื่นได้",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "1dfc6b773f4b5737d408860a47cdd70978c67d3aff7848a51f4a11f8623e04cc",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "64034b1cf2ddd4d35222f5330de3d2532111f5608ecdfbb54d8e10ab4fe188c1"
}
