{
  "aboutHtml": "<p>Google Gemini 3.1 Flash TTS Preview เป็นรุ่นข้อความเป็นเสียงของตระกูล Gemini 3.1 Flash Audio รับข้อความและสร้างเสียงพูดที่ถ่ายทอดตามพรอมป์ต์ Google อธิบายว่ารุ่นนี้ปรับปรุงความเป็นธรรมชาติของเสียง การควบคุม และประสิทธิภาพหลายภาษา พร้อมการรองรับบทสนทนาหลายผู้พูดในตัวและมากกว่า 70 ภาษา ใช้จริงกับบทเรียนบรรยายสั้น บทสนทนาตัวละคร หรือข้อความพูดที่การถ่ายทอดสำคัญเท่าถ้อยคำ</p><p>เตรียมบทสมบูรณ์และบรีฟการแสดง รุ่นนี้ใช้คำสั่งภาษาธรรมชาติภายในอินพุตข้อความเพื่อกำกับสไตล์เสียง จังหวะ และการพูด การเปิดตัวของ Google นำเสนอคำกำกับฉากเพื่อวางสถานการณ์ Audio Profiles ผู้พูดเพื่อกำหนดตัวละคร และ Director’s Notes เพื่อกำกับจังหวะ น้ำเสียง และสำเนียง แยกส่วนเหล่านี้ให้ระบุได้เมื่อเตรียมพรอมป์ต์ เพื่อให้ตรวจคำที่จะพูดกับคำสั่งการแสดงแยกกันได้ บรีฟประหยัดถ้อยคำแก้ง่ายกว่าคำบรรยายเสียงเดียวกันหลายชุดที่ขัดกัน</p><p>ตัวอย่างบรีฟซ้อมอาจบรรยายผู้บรรยายสงบที่อธิบายชิ้นจัดแสดงพิพิธภัณฑ์ เว้นจังหวะการพูดอย่างพอดีและใช้น้ำเสียงอุ่นขึ้นในประโยคสุดท้าย บทที่แนบควรมีชื่อชิ้นจัดแสดงจริงและถ้อยคำที่ต้องพูดตรง สำหรับบทสนทนา ให้ตัวละครมีโปรไฟล์ต่างกันและลำดับเทิร์นชัด ใช้บริบทฉากอธิบายว่าผู้พูดคนหนึ่งปลอบอีกคน ถามด้วยความอยากรู้จริง หรือตอบอย่างประหลาดใจที่เก็บอาการ ชิ้นงานที่ต้องประเมินคือการแสดงเสียงที่ได้ยินของบทนั้น</p><p>แท็กเสียงในบรรทัดเพิ่มการควบคุมเฉพาะจุดในข้อความ ทำให้การแสดงผู้พูดเปลี่ยนภายในประโยคได้แทนพึ่งคำกำกับต้นอย่างเดียว Google อธิบายว่าแท็กควบคุมสไตล์เสียง จังหวะ และการพูด ใช้เมื่อการแสดงต้องเปลี่ยนเฉพาะ และให้ถ้อยคำส่วนอื่นพูดเป็นธรรมชาติ จุดแยกที่มีประโยชน์ในรุ่นนี้คือบรีฟตัวละครหรือฉากระดับสูงกับการเปลี่ยนการพูดเฉพาะจุด ข้อความกลางสั้น ๆ ใช้ตั้งเสียงฐานก่อนเพิ่มอารมณ์ในบทได้</p><p>สำหรับงานหลายภาษา ให้บทภาษาสุดท้ายและระบุสำเนียงกับสไตล์พูดที่ต้องการในบรีฟ ประกาศ Google ระบุรองรับมากกว่า 70 ภาษา ในการเตรียมบรรณาธิการ ให้ชื่อที่ซ้ำสะกดสอดคล้อง ขยายตัวย่อกำกวมเมื่อต้องการวิธีอ่านเดียว และตรวจตัวเลขในเสียง ป้ายภาษาอย่างเดียวไม่ได้ตัดสินว่าชื่อแบรนด์หรือคำยืมควรออกเสียงอย่างไร เทียบช่วงที่มีคำนั้นกับวิธีอ่านที่ต้องการก่อนรับงานบรรยายยาว</p><p>หน้าโมเดล Gemini API ตรงตัวระบุขีดจำกัดอินพุต 8,192 และเอาต์พุต 16,384 โทเคนสำหรับโมเดลพรีวิวนี้ ข้อมูลรุ่น TTS ดั้งเดิมของ DeepMind ระบุแยกเป็นอินพุตข้อความสูงสุด 16K และเอาต์พุตเสียง 32K โทเคน ตัวเลขข้อมูลรุ่นนั้นต่างจากขีดจำกัดให้บริการ Gemini API นับคำกำกับการแสดงเป็นส่วนอินพุตร่วมกับบท โควตาเอาต์พุตแสดงเป็นโทเคนเสียง จึงไม่รับรองระยะเวลาบันทึกเฉพาะ จัดบทเรียนหรือเรื่องยาวเป็นส่วนต่อเนื่อง รักษาบรีฟตัวละครเดียว และฟังรอยต่อ สำหรับบทสนทนาตามบท ตรวจการระบุผู้พูดและลำดับเทิร์นนอกเหนือคำพูดและการถ่ายทอดอารมณ์</p><p>เอกสารย้ายรุ่นของ Google ระบุเอาต์พุตเริ่มต้น 3.1 เป็น raw PCM ไม่มีส่วนหัว ชนิด audio/l16 ไบต์เสียงต้องมีข้อมูลการเล่นหรือคอนเทนเนอร์เหมาะสมเมื่อเตรียมเสียงแก้ไขได้ การเพิ่มชื่อไฟล์ WAV อย่างเดียวไม่ได้สร้างส่วนหัว WAV ตรวจรูปแบบที่คืนจริงก่อนอิมพอร์ต Google ยังระบุว่าเสียงที่ Gemini 3.1 Flash TTS สร้างมีลายน้ำ SynthID ที่รับรู้ไม่ได้ ลายน้ำใช้ระบุเสียงที่สร้างและไม่ได้แทนบทถอดเสียง ป้ายผู้พูด หรือการตรวจฟัง</p><p>สไตล์เตรียม 3.1 ต่างจาก 3.8 อย่างมีสาระ Gemini 3.8 ย้ายคำกำกับต่อเนื่องและเอกลักษณ์ผู้พูดไปเมทาดาทาเสียงมีโครงสร้าง ใช้แท็กวงเล็บมุมสำหรับเหตุการณ์เฉพาะจุด และเปลี่ยนค่าเริ่มต้นคำขอเสร็จเป็น WAV รักษาพรอมป์ต์ 3.1 เป็นพรอมป์ต์ 3.1 แทนผสมโครงสร้างคำขอใหม่ ตารางโมเดลที่รองรับของ Google ระบุการสังเคราะห์ผู้พูดเดียวและหลายผู้พูดสำหรับ 3.1 ส่วนตัวควบคุมเสียงออกแบบและจำลองเสียงอยู่ในรายการ 3.8 รุ่น Flash Live แยกรองรับอินพุตเสียงโต้ตอบ ส่วน TTS นี้ใช้ผลิตข้อความที่เตรียมเป็นเสียง</p><p>ตรวจบันทึกกับบทเขียนเรื่องคำตกหล่นหรือซ้ำ ชื่อ เวลาเทิร์น และการเปลี่ยนอารมณ์ที่ตั้งใจ หากประโยคหนึ่งต้องเน้นต่างไป ให้แก้คำกำกับเฉพาะจุดและตรวจช่วงเปลี่ยนที่ได้รับผล เวิร์กโฟลว์นี้ทำให้บรีฟการแสดงมีประโยชน์ เพราะบันทึกสิ่งที่ควรคงที่ของผู้พูดและสิ่งที่ควรเปลี่ยนในช่วงนั้น ส่วนบทรักษาเนื้อหาที่ผู้ฟังต้องได้ยิน</p>",
  "aboutText": "Google Gemini 3.1 Flash TTS Preview เป็นรุ่นข้อความเป็นเสียงของตระกูล Gemini 3.1 Flash Audio รับข้อความและสร้างเสียงพูดที่ถ่ายทอดตามพรอมป์ต์ Google อธิบายว่ารุ่นนี้ปรับปรุงความเป็นธรรมชาติของเสียง การควบคุม และประสิทธิภาพหลายภาษา พร้อมการรองรับบทสนทนาหลายผู้พูดในตัวและมากกว่า 70 ภาษา ใช้จริงกับบทเรียนบรรยายสั้น บทสนทนาตัวละคร หรือข้อความพูดที่การถ่ายทอดสำคัญเท่าถ้อยคำ\n\nเตรียมบทสมบูรณ์และบรีฟการแสดง รุ่นนี้ใช้คำสั่งภาษาธรรมชาติภายในอินพุตข้อความเพื่อกำกับสไตล์เสียง จังหวะ และการพูด การเปิดตัวของ Google นำเสนอคำกำกับฉากเพื่อวางสถานการณ์ Audio Profiles ผู้พูดเพื่อกำหนดตัวละคร และ Director’s Notes เพื่อกำกับจังหวะ น้ำเสียง และสำเนียง แยกส่วนเหล่านี้ให้ระบุได้เมื่อเตรียมพรอมป์ต์ เพื่อให้ตรวจคำที่จะพูดกับคำสั่งการแสดงแยกกันได้ บรีฟประหยัดถ้อยคำแก้ง่ายกว่าคำบรรยายเสียงเดียวกันหลายชุดที่ขัดกัน\n\nตัวอย่างบรีฟซ้อมอาจบรรยายผู้บรรยายสงบที่อธิบายชิ้นจัดแสดงพิพิธภัณฑ์ เว้นจังหวะการพูดอย่างพอดีและใช้น้ำเสียงอุ่นขึ้นในประโยคสุดท้าย บทที่แนบควรมีชื่อชิ้นจัดแสดงจริงและถ้อยคำที่ต้องพูดตรง สำหรับบทสนทนา ให้ตัวละครมีโปรไฟล์ต่างกันและลำดับเทิร์นชัด ใช้บริบทฉากอธิบายว่าผู้พูดคนหนึ่งปลอบอีกคน ถามด้วยความอยากรู้จริง หรือตอบอย่างประหลาดใจที่เก็บอาการ ชิ้นงานที่ต้องประเมินคือการแสดงเสียงที่ได้ยินของบทนั้น\n\nแท็กเสียงในบรรทัดเพิ่มการควบคุมเฉพาะจุดในข้อความ ทำให้การแสดงผู้พูดเปลี่ยนภายในประโยคได้แทนพึ่งคำกำกับต้นอย่างเดียว Google อธิบายว่าแท็กควบคุมสไตล์เสียง จังหวะ และการพูด ใช้เมื่อการแสดงต้องเปลี่ยนเฉพาะ และให้ถ้อยคำส่วนอื่นพูดเป็นธรรมชาติ จุดแยกที่มีประโยชน์ในรุ่นนี้คือบรีฟตัวละครหรือฉากระดับสูงกับการเปลี่ยนการพูดเฉพาะจุด ข้อความกลางสั้น ๆ ใช้ตั้งเสียงฐานก่อนเพิ่มอารมณ์ในบทได้\n\nสำหรับงานหลายภาษา ให้บทภาษาสุดท้ายและระบุสำเนียงกับสไตล์พูดที่ต้องการในบรีฟ ประกาศ Google ระบุรองรับมากกว่า 70 ภาษา ในการเตรียมบรรณาธิการ ให้ชื่อที่ซ้ำสะกดสอดคล้อง ขยายตัวย่อกำกวมเมื่อต้องการวิธีอ่านเดียว และตรวจตัวเลขในเสียง ป้ายภาษาอย่างเดียวไม่ได้ตัดสินว่าชื่อแบรนด์หรือคำยืมควรออกเสียงอย่างไร เทียบช่วงที่มีคำนั้นกับวิธีอ่านที่ต้องการก่อนรับงานบรรยายยาว\n\nหน้าโมเดล Gemini API ตรงตัวระบุขีดจำกัดอินพุต 8,192 และเอาต์พุต 16,384 โทเคนสำหรับโมเดลพรีวิวนี้ ข้อมูลรุ่น TTS ดั้งเดิมของ DeepMind ระบุแยกเป็นอินพุตข้อความสูงสุด 16K และเอาต์พุตเสียง 32K โทเคน ตัวเลขข้อมูลรุ่นนั้นต่างจากขีดจำกัดให้บริการ Gemini API นับคำกำกับการแสดงเป็นส่วนอินพุตร่วมกับบท โควตาเอาต์พุตแสดงเป็นโทเคนเสียง จึงไม่รับรองระยะเวลาบันทึกเฉพาะ จัดบทเรียนหรือเรื่องยาวเป็นส่วนต่อเนื่อง รักษาบรีฟตัวละครเดียว และฟังรอยต่อ สำหรับบทสนทนาตามบท ตรวจการระบุผู้พูดและลำดับเทิร์นนอกเหนือคำพูดและการถ่ายทอดอารมณ์\n\nเอกสารย้ายรุ่นของ Google ระบุเอาต์พุตเริ่มต้น 3.1 เป็น raw PCM ไม่มีส่วนหัว ชนิด audio/l16 ไบต์เสียงต้องมีข้อมูลการเล่นหรือคอนเทนเนอร์เหมาะสมเมื่อเตรียมเสียงแก้ไขได้ การเพิ่มชื่อไฟล์ WAV อย่างเดียวไม่ได้สร้างส่วนหัว WAV ตรวจรูปแบบที่คืนจริงก่อนอิมพอร์ต Google ยังระบุว่าเสียงที่ Gemini 3.1 Flash TTS สร้างมีลายน้ำ SynthID ที่รับรู้ไม่ได้ ลายน้ำใช้ระบุเสียงที่สร้างและไม่ได้แทนบทถอดเสียง ป้ายผู้พูด หรือการตรวจฟัง\n\nสไตล์เตรียม 3.1 ต่างจาก 3.8 อย่างมีสาระ Gemini 3.8 ย้ายคำกำกับต่อเนื่องและเอกลักษณ์ผู้พูดไปเมทาดาทาเสียงมีโครงสร้าง ใช้แท็กวงเล็บมุมสำหรับเหตุการณ์เฉพาะจุด และเปลี่ยนค่าเริ่มต้นคำขอเสร็จเป็น WAV รักษาพรอมป์ต์ 3.1 เป็นพรอมป์ต์ 3.1 แทนผสมโครงสร้างคำขอใหม่ ตารางโมเดลที่รองรับของ Google ระบุการสังเคราะห์ผู้พูดเดียวและหลายผู้พูดสำหรับ 3.1 ส่วนตัวควบคุมเสียงออกแบบและจำลองเสียงอยู่ในรายการ 3.8 รุ่น Flash Live แยกรองรับอินพุตเสียงโต้ตอบ ส่วน TTS นี้ใช้ผลิตข้อความที่เตรียมเป็นเสียง\n\nตรวจบันทึกกับบทเขียนเรื่องคำตกหล่นหรือซ้ำ ชื่อ เวลาเทิร์น และการเปลี่ยนอารมณ์ที่ตั้งใจ หากประโยคหนึ่งต้องเน้นต่างไป ให้แก้คำกำกับเฉพาะจุดและตรวจช่วงเปลี่ยนที่ได้รับผล เวิร์กโฟลว์นี้ทำให้บรีฟการแสดงมีประโยชน์ เพราะบันทึกสิ่งที่ควรคงที่ของผู้พูดและสิ่งที่ควรเปลี่ยนในช่วงนั้น ส่วนบทรักษาเนื้อหาที่ผู้ฟังต้องได้ยิน",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "5398257b8aa0905340079456797733a4979effe1f098d24d9609555b5056821a",
    "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: Gemini 3.1 Flash TTS Preview</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-3.1-flash-tts-preview</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|speech|/v1/audio/speech|google%2Fgemini-3.1-flash-tts-preview\">การสังเคราะห์เสียงพูด</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 Gemini 3.1 Flash TTS Preview เปลี่ยนบทเขียนเป็นเสียงพูดถ่ายทอดอารมณ์ คำกำกับภาษาธรรมชาติ Audio Profiles ของผู้พูด Director’s Notes และแท็กเสียงในบรรทัดกำหนดจังหวะ น้ำเสียง และสำเนียง รองรับบทสนทนาในตัวและมากกว่า 70 ภาษา โดยใช้พรอมป์ต์และรูปแบบเสียง 3.1</p><dl class=\"card-io\" data-card-io><div><dt>อินพุตที่รองรับ</dt><dd>ข้อความ</dd></div><div><dt>ผลลัพธ์</dt><dd>เสียง</dd></div></dl><details class=\"card-about\"><summary>เกี่ยวกับโมเดล</summary><p class=\"note-s\" data-model-method-boundary>คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก</p><div class=\"mabout\" id=\"m-about\"><p>Google Gemini 3.1 Flash TTS Preview เป็นรุ่นข้อความเป็นเสียงของตระกูล Gemini 3.1 Flash Audio รับข้อความและสร้างเสียงพูดที่ถ่ายทอดตามพรอมป์ต์ Google อธิบายว่ารุ่นนี้ปรับปรุงความเป็นธรรมชาติของเสียง การควบคุม และประสิทธิภาพหลายภาษา พร้อมการรองรับบทสนทนาหลายผู้พูดในตัวและมากกว่า 70 ภาษา ใช้จริงกับบทเรียนบรรยายสั้น บทสนทนาตัวละคร หรือข้อความพูดที่การถ่ายทอดสำคัญเท่าถ้อยคำ</p><p>เตรียมบทสมบูรณ์และบรีฟการแสดง รุ่นนี้ใช้คำสั่งภาษาธรรมชาติภายในอินพุตข้อความเพื่อกำกับสไตล์เสียง จังหวะ และการพูด การเปิดตัวของ Google นำเสนอคำกำกับฉากเพื่อวางสถานการณ์ Audio Profiles ผู้พูดเพื่อกำหนดตัวละคร และ Director’s Notes เพื่อกำกับจังหวะ น้ำเสียง และสำเนียง แยกส่วนเหล่านี้ให้ระบุได้เมื่อเตรียมพรอมป์ต์ เพื่อให้ตรวจคำที่จะพูดกับคำสั่งการแสดงแยกกันได้ บรีฟประหยัดถ้อยคำแก้ง่ายกว่าคำบรรยายเสียงเดียวกันหลายชุดที่ขัดกัน</p><p>ตัวอย่างบรีฟซ้อมอาจบรรยายผู้บรรยายสงบที่อธิบายชิ้นจัดแสดงพิพิธภัณฑ์ เว้นจังหวะการพูดอย่างพอดีและใช้น้ำเสียงอุ่นขึ้นในประโยคสุดท้าย บทที่แนบควรมีชื่อชิ้นจัดแสดงจริงและถ้อยคำที่ต้องพูดตรง สำหรับบทสนทนา ให้ตัวละครมีโปรไฟล์ต่างกันและลำดับเทิร์นชัด ใช้บริบทฉากอธิบายว่าผู้พูดคนหนึ่งปลอบอีกคน ถามด้วยความอยากรู้จริง หรือตอบอย่างประหลาดใจที่เก็บอาการ ชิ้นงานที่ต้องประเมินคือการแสดงเสียงที่ได้ยินของบทนั้น</p><p>แท็กเสียงในบรรทัดเพิ่มการควบคุมเฉพาะจุดในข้อความ ทำให้การแสดงผู้พูดเปลี่ยนภายในประโยคได้แทนพึ่งคำกำกับต้นอย่างเดียว Google อธิบายว่าแท็กควบคุมสไตล์เสียง จังหวะ และการพูด ใช้เมื่อการแสดงต้องเปลี่ยนเฉพาะ และให้ถ้อยคำส่วนอื่นพูดเป็นธรรมชาติ จุดแยกที่มีประโยชน์ในรุ่นนี้คือบรีฟตัวละครหรือฉากระดับสูงกับการเปลี่ยนการพูดเฉพาะจุด ข้อความกลางสั้น ๆ ใช้ตั้งเสียงฐานก่อนเพิ่มอารมณ์ในบทได้</p><p>สำหรับงานหลายภาษา ให้บทภาษาสุดท้ายและระบุสำเนียงกับสไตล์พูดที่ต้องการในบรีฟ ประกาศ Google ระบุรองรับมากกว่า 70 ภาษา ในการเตรียมบรรณาธิการ ให้ชื่อที่ซ้ำสะกดสอดคล้อง ขยายตัวย่อกำกวมเมื่อต้องการวิธีอ่านเดียว และตรวจตัวเลขในเสียง ป้ายภาษาอย่างเดียวไม่ได้ตัดสินว่าชื่อแบรนด์หรือคำยืมควรออกเสียงอย่างไร เทียบช่วงที่มีคำนั้นกับวิธีอ่านที่ต้องการก่อนรับงานบรรยายยาว</p><p>หน้าโมเดล Gemini API ตรงตัวระบุขีดจำกัดอินพุต 8,192 และเอาต์พุต 16,384 โทเคนสำหรับโมเดลพรีวิวนี้ ข้อมูลรุ่น TTS ดั้งเดิมของ DeepMind ระบุแยกเป็นอินพุตข้อความสูงสุด 16K และเอาต์พุตเสียง 32K โทเคน ตัวเลขข้อมูลรุ่นนั้นต่างจากขีดจำกัดให้บริการ Gemini API นับคำกำกับการแสดงเป็นส่วนอินพุตร่วมกับบท โควตาเอาต์พุตแสดงเป็นโทเคนเสียง จึงไม่รับรองระยะเวลาบันทึกเฉพาะ จัดบทเรียนหรือเรื่องยาวเป็นส่วนต่อเนื่อง รักษาบรีฟตัวละครเดียว และฟังรอยต่อ สำหรับบทสนทนาตามบท ตรวจการระบุผู้พูดและลำดับเทิร์นนอกเหนือคำพูดและการถ่ายทอดอารมณ์</p><p>เอกสารย้ายรุ่นของ Google ระบุเอาต์พุตเริ่มต้น 3.1 เป็น raw PCM ไม่มีส่วนหัว ชนิด audio/l16 ไบต์เสียงต้องมีข้อมูลการเล่นหรือคอนเทนเนอร์เหมาะสมเมื่อเตรียมเสียงแก้ไขได้ การเพิ่มชื่อไฟล์ WAV อย่างเดียวไม่ได้สร้างส่วนหัว WAV ตรวจรูปแบบที่คืนจริงก่อนอิมพอร์ต Google ยังระบุว่าเสียงที่ Gemini 3.1 Flash TTS สร้างมีลายน้ำ SynthID ที่รับรู้ไม่ได้ ลายน้ำใช้ระบุเสียงที่สร้างและไม่ได้แทนบทถอดเสียง ป้ายผู้พูด หรือการตรวจฟัง</p><p>สไตล์เตรียม 3.1 ต่างจาก 3.8 อย่างมีสาระ Gemini 3.8 ย้ายคำกำกับต่อเนื่องและเอกลักษณ์ผู้พูดไปเมทาดาทาเสียงมีโครงสร้าง ใช้แท็กวงเล็บมุมสำหรับเหตุการณ์เฉพาะจุด และเปลี่ยนค่าเริ่มต้นคำขอเสร็จเป็น WAV รักษาพรอมป์ต์ 3.1 เป็นพรอมป์ต์ 3.1 แทนผสมโครงสร้างคำขอใหม่ ตารางโมเดลที่รองรับของ Google ระบุการสังเคราะห์ผู้พูดเดียวและหลายผู้พูดสำหรับ 3.1 ส่วนตัวควบคุมเสียงออกแบบและจำลองเสียงอยู่ในรายการ 3.8 รุ่น Flash Live แยกรองรับอินพุตเสียงโต้ตอบ ส่วน TTS นี้ใช้ผลิตข้อความที่เตรียมเป็นเสียง</p><p>ตรวจบันทึกกับบทเขียนเรื่องคำตกหล่นหรือซ้ำ ชื่อ เวลาเทิร์น และการเปลี่ยนอารมณ์ที่ตั้งใจ หากประโยคหนึ่งต้องเน้นต่างไป ให้แก้คำกำกับเฉพาะจุดและตรวจช่วงเปลี่ยนที่ได้รับผล เวิร์กโฟลว์นี้ทำให้บรีฟการแสดงมีประโยชน์ เพราะบันทึกสิ่งที่ควรคงที่ของผู้พูดและสิ่งที่ควรเปลี่ยนในช่วงนั้น ส่วนบทรักษาเนื้อหาที่ผู้ฟังต้องได้ยิน</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · เสียงพูด</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>text</code></dd></div><div><dt>ขาออก</dt><dd><code>audio</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/gemini-3.1-flash-tts-preview</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</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>ความยาวขั้นต่ำ: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">voice</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>Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat</div><div>ความยาวขั้นต่ำ: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>mp3, pcm</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"known\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>pcm</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">provider</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, voice</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>text</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>/ 1K โทเค็น</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า</span> <b>$0.002</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>/ 1K โทเค็น</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก</span> <b>$0.04</b> <span class=\"price-unit\">/ 1K โทเค็น</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-1460-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1460-panel-0\" aria-selected=\"true\" tabindex=\"0\">ใช้ข้อมูลเข้าจริงและเก็บผลลัพธ์ไว้ให้ครบถ้วน</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-1460-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1460-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;google/gemini-3.1-flash-tts-preview&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;Orus&#39;, &#39;response_format&#39;: &#39;pcm&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\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\">เสียงไบนารีทั้งหมดหรือการตอบกลับ audio_url เดิม ส่วนหัว และแอสเซ็ตทุกชิ้นที่เป็นของคุณ</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><details class=\"card-about\"><summary>การอ่านเนื้อหาแบบอื่น</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1461-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1461-panel-0\" aria-selected=\"true\" tabindex=\"0\">อ่านไฟล์สื่อที่มีอยู่และเป็นของคุณ</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-1461-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1461-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><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 ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด</p></div></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%2Fgemini-3.1-flash-tts-preview&amp;route=Ultra&amp;caller=google%2Fgemini-3.1-flash-tts-preview&amp;fmt=speech\"><code>google/gemini-3.1-flash-tts-preview</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-3.1-flash-tts-preview&amp;route=Ultra&amp;caller=google%2Fgemini-3.1-flash-tts-preview&amp;fmt=speech\"><code>google/gemini-3.1-flash-tts-preview</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.1-flash-tts-preview",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|google%2Fgemini-3.1-flash-tts-preview",
      "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.",
            "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "เสียงไบนารีทั้งหมดหรือการตอบกลับ audio_url เดิม ส่วนหัว และแอสเซ็ตทุกชิ้นที่เป็นของคุณ"
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.1-flash-tts-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.1-flash-tts-preview"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.1-flash-tts-preview",
                "response_format": "pcm",
                "voice": "Orus"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "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": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.1-flash-tts-preview', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Orus', 'response_format': 'pcm'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "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": [
          "text"
        ],
        "label": "เสียงพูด",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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": {
            "input_token": 2e-06,
            "output_token": 4e-05
          }
        },
        "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": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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": "0.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-3.1-flash-tts-preview",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "9d8e9028067e243e300d300345fb2de82c6655cad2843a77b9aee7c013427686",
    "input_html_sha256": "d576bf45fb711f8c4ba3df239e7c82ed54843112de9fda6636f553b44fd564d8",
    "private_audit_sha256": "d17b2c3383d34b2e4f03d7cbd9153a89c54a641e1dcf5b88e875e789f4303561",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/google-gemini-3-1-flash-tts-preview/",
    "description": "Google Gemini 3.1 Flash TTS Preview เปลี่ยนบทเขียนเป็นเสียงพูดถ่ายทอดอารมณ์ คำกำกับภาษาธรรมชาติ Audio Profiles ของผู้พูด Director’s Notes และแท็กเสียงในบรรทัดกำหนดจังหวะ น้ำเสียง และสำเนียง รองรับบทสนทนาในตัวและมากกว่า 70 ภาษา โดยใช้พรอมป์ต์และรูปแบบเสียง 3.1",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/google-gemini-3-1-flash-tts-preview/index.md",
    "title": "Google: Gemini 3.1 Flash TTS Preview — Ailoot",
    "url": "https://ailoot.ai/models/th/google-gemini-3-1-flash-tts-preview/"
  },
  "rawModel": {
    "about": "Google Gemini 3.1 Flash TTS Preview เป็นรุ่นข้อความเป็นเสียงของตระกูล Gemini 3.1 Flash Audio รับข้อความและสร้างเสียงพูดที่ถ่ายทอดตามพรอมป์ต์ Google อธิบายว่ารุ่นนี้ปรับปรุงความเป็นธรรมชาติของเสียง การควบคุม และประสิทธิภาพหลายภาษา พร้อมการรองรับบทสนทนาหลายผู้พูดในตัวและมากกว่า 70 ภาษา ใช้จริงกับบทเรียนบรรยายสั้น บทสนทนาตัวละคร หรือข้อความพูดที่การถ่ายทอดสำคัญเท่าถ้อยคำ\n\nเตรียมบทสมบูรณ์และบรีฟการแสดง รุ่นนี้ใช้คำสั่งภาษาธรรมชาติภายในอินพุตข้อความเพื่อกำกับสไตล์เสียง จังหวะ และการพูด การเปิดตัวของ Google นำเสนอคำกำกับฉากเพื่อวางสถานการณ์ Audio Profiles ผู้พูดเพื่อกำหนดตัวละคร และ Director’s Notes เพื่อกำกับจังหวะ น้ำเสียง และสำเนียง แยกส่วนเหล่านี้ให้ระบุได้เมื่อเตรียมพรอมป์ต์ เพื่อให้ตรวจคำที่จะพูดกับคำสั่งการแสดงแยกกันได้ บรีฟประหยัดถ้อยคำแก้ง่ายกว่าคำบรรยายเสียงเดียวกันหลายชุดที่ขัดกัน\n\nตัวอย่างบรีฟซ้อมอาจบรรยายผู้บรรยายสงบที่อธิบายชิ้นจัดแสดงพิพิธภัณฑ์ เว้นจังหวะการพูดอย่างพอดีและใช้น้ำเสียงอุ่นขึ้นในประโยคสุดท้าย บทที่แนบควรมีชื่อชิ้นจัดแสดงจริงและถ้อยคำที่ต้องพูดตรง สำหรับบทสนทนา ให้ตัวละครมีโปรไฟล์ต่างกันและลำดับเทิร์นชัด ใช้บริบทฉากอธิบายว่าผู้พูดคนหนึ่งปลอบอีกคน ถามด้วยความอยากรู้จริง หรือตอบอย่างประหลาดใจที่เก็บอาการ ชิ้นงานที่ต้องประเมินคือการแสดงเสียงที่ได้ยินของบทนั้น\n\nแท็กเสียงในบรรทัดเพิ่มการควบคุมเฉพาะจุดในข้อความ ทำให้การแสดงผู้พูดเปลี่ยนภายในประโยคได้แทนพึ่งคำกำกับต้นอย่างเดียว Google อธิบายว่าแท็กควบคุมสไตล์เสียง จังหวะ และการพูด ใช้เมื่อการแสดงต้องเปลี่ยนเฉพาะ และให้ถ้อยคำส่วนอื่นพูดเป็นธรรมชาติ จุดแยกที่มีประโยชน์ในรุ่นนี้คือบรีฟตัวละครหรือฉากระดับสูงกับการเปลี่ยนการพูดเฉพาะจุด ข้อความกลางสั้น ๆ ใช้ตั้งเสียงฐานก่อนเพิ่มอารมณ์ในบทได้\n\nสำหรับงานหลายภาษา ให้บทภาษาสุดท้ายและระบุสำเนียงกับสไตล์พูดที่ต้องการในบรีฟ ประกาศ Google ระบุรองรับมากกว่า 70 ภาษา ในการเตรียมบรรณาธิการ ให้ชื่อที่ซ้ำสะกดสอดคล้อง ขยายตัวย่อกำกวมเมื่อต้องการวิธีอ่านเดียว และตรวจตัวเลขในเสียง ป้ายภาษาอย่างเดียวไม่ได้ตัดสินว่าชื่อแบรนด์หรือคำยืมควรออกเสียงอย่างไร เทียบช่วงที่มีคำนั้นกับวิธีอ่านที่ต้องการก่อนรับงานบรรยายยาว\n\nหน้าโมเดล Gemini API ตรงตัวระบุขีดจำกัดอินพุต 8,192 และเอาต์พุต 16,384 โทเคนสำหรับโมเดลพรีวิวนี้ ข้อมูลรุ่น TTS ดั้งเดิมของ DeepMind ระบุแยกเป็นอินพุตข้อความสูงสุด 16K และเอาต์พุตเสียง 32K โทเคน ตัวเลขข้อมูลรุ่นนั้นต่างจากขีดจำกัดให้บริการ Gemini API นับคำกำกับการแสดงเป็นส่วนอินพุตร่วมกับบท โควตาเอาต์พุตแสดงเป็นโทเคนเสียง จึงไม่รับรองระยะเวลาบันทึกเฉพาะ จัดบทเรียนหรือเรื่องยาวเป็นส่วนต่อเนื่อง รักษาบรีฟตัวละครเดียว และฟังรอยต่อ สำหรับบทสนทนาตามบท ตรวจการระบุผู้พูดและลำดับเทิร์นนอกเหนือคำพูดและการถ่ายทอดอารมณ์\n\nเอกสารย้ายรุ่นของ Google ระบุเอาต์พุตเริ่มต้น 3.1 เป็น raw PCM ไม่มีส่วนหัว ชนิด audio/l16 ไบต์เสียงต้องมีข้อมูลการเล่นหรือคอนเทนเนอร์เหมาะสมเมื่อเตรียมเสียงแก้ไขได้ การเพิ่มชื่อไฟล์ WAV อย่างเดียวไม่ได้สร้างส่วนหัว WAV ตรวจรูปแบบที่คืนจริงก่อนอิมพอร์ต Google ยังระบุว่าเสียงที่ Gemini 3.1 Flash TTS สร้างมีลายน้ำ SynthID ที่รับรู้ไม่ได้ ลายน้ำใช้ระบุเสียงที่สร้างและไม่ได้แทนบทถอดเสียง ป้ายผู้พูด หรือการตรวจฟัง\n\nสไตล์เตรียม 3.1 ต่างจาก 3.8 อย่างมีสาระ Gemini 3.8 ย้ายคำกำกับต่อเนื่องและเอกลักษณ์ผู้พูดไปเมทาดาทาเสียงมีโครงสร้าง ใช้แท็กวงเล็บมุมสำหรับเหตุการณ์เฉพาะจุด และเปลี่ยนค่าเริ่มต้นคำขอเสร็จเป็น WAV รักษาพรอมป์ต์ 3.1 เป็นพรอมป์ต์ 3.1 แทนผสมโครงสร้างคำขอใหม่ ตารางโมเดลที่รองรับของ Google ระบุการสังเคราะห์ผู้พูดเดียวและหลายผู้พูดสำหรับ 3.1 ส่วนตัวควบคุมเสียงออกแบบและจำลองเสียงอยู่ในรายการ 3.8 รุ่น Flash Live แยกรองรับอินพุตเสียงโต้ตอบ ส่วน TTS นี้ใช้ผลิตข้อความที่เตรียมเป็นเสียง\n\nตรวจบันทึกกับบทเขียนเรื่องคำตกหล่นหรือซ้ำ ชื่อ เวลาเทิร์น และการเปลี่ยนอารมณ์ที่ตั้งใจ หากประโยคหนึ่งต้องเน้นต่างไป ให้แก้คำกำกับเฉพาะจุดและตรวจช่วงเปลี่ยนที่ได้รับผล เวิร์กโฟลว์นี้ทำให้บรีฟการแสดงมีประโยชน์ เพราะบันทึกสิ่งที่ควรคงที่ของผู้พูดและสิ่งที่ควรเปลี่ยนในช่วงนั้น ส่วนบทรักษาเนื้อหาที่ผู้ฟังต้องได้ยิน",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 32768,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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": "0.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "google/gemini-3.1-flash-tts-preview",
    "input": [
      "text"
    ],
    "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.",
            "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "เสียงไบนารีทั้งหมดหรือการตอบกลับ audio_url เดิม ส่วนหัว และแอสเซ็ตทุกชิ้นที่เป็นของคุณ"
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.1-flash-tts-preview"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.1-flash-tts-preview"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.1-flash-tts-preview",
                "response_format": "pcm",
                "voice": "Orus"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "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": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.1-flash-tts-preview', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Orus', 'response_format': 'pcm'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "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": [
          "text"
        ],
        "label": "เสียงพูด",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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": {
            "input_token": 2e-06,
            "output_token": 4e-05
          }
        },
        "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": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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": "0.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-3.1-flash-tts-preview",
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.1 Flash TTS Preview",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.04,
      "out_label": "/ 1K tokens",
      "sort_in": null,
      "sort_out": 0.04,
      "varies": true
    },
    "short": "Google Gemini 3.1 Flash TTS Preview เปลี่ยนบทเขียนเป็นเสียงพูดถ่ายทอดอารมณ์ คำกำกับภาษาธรรมชาติ Audio Profiles ของผู้พูด Director’s Notes และแท็กเสียงในบรรทัดกำหนดจังหวะ น้ำเสียง และสำเนียง รองรับบทสนทนาในตัวและมากกว่า 70 ภาษา โดยใช้พรอมป์ต์และรูปแบบเสียง 3.1"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Google Gemini 3.1 Flash TTS Preview เปลี่ยนบทเขียนเป็นเสียงพูดถ่ายทอดอารมณ์ คำกำกับภาษาธรรมชาติ Audio Profiles ของผู้พูด Director’s Notes และแท็กเสียงในบรรทัดกำหนดจังหวะ น้ำเสียง และสำเนียง รองรับบทสนทนาในตัวและมากกว่า 70 ภาษา โดยใช้พรอมป์ต์และรูปแบบเสียง 3.1",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b6627d269e73aa57b7c2accad910afc1b39b4fd741ee4fe67017c24ab82b1883",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "5812b8cd5b767a8ceeb719336c554b274b3089609452fa4995580362a70d9034"
}
