{
  "aboutHtml": "<p>Google Gemini 3.8 Flash TTS เป็นระดับการแสดงเสียงเชิงสร้างสรรค์ในตระกูลแปลงข้อความเป็นเสียง 3.8 ของ Google เน้นความเที่ยงตรงทางเสียง ช่วงอารมณ์ สำเนียงภูมิภาค และความต่อเนื่องของเสียงตัวละครในบทสนทนายาว Google เน้นหนังสือเสียง งานบรรยายสตูดิโอ คำออกเสียงยาก และฉากที่ต้องแสดงเสียงมาก เอาต์พุตคือเสียงพูดจากบทข้อความที่เตรียมไว้ เหมาะสำหรับตรวจการแสดงของผู้บรรยายหรือจัดบทสนทนาตามบทร่วมกับองค์ประกอบการผลิตอื่น</p><p>เริ่มด้วยคำที่ต้องได้ยินตรงตามจริง บทข้อความ 3.8 ถูกอ่านตามต้นฉบับ ส่วนผู้พูดและการแสดงต่อเนื่องอยู่ในเมทาดาทาเสียงแยก กำหนดเอกลักษณ์ผู้พูดแต่ละเทิร์นชัดเจน และเมื่อมีประโยชน์ ให้คำกำกับสไตล์สั้น ๆ เช่น กังวลอย่างเก็บอาการ หรือสงสัยอย่างร่าเริง แยกประโยคเป็นหลายเทิร์นเมื่ออารมณ์หรือจังหวะเปลี่ยนมาก ทำให้ตรวจบรีฟง่ายขึ้น เพราะบทข้อความมีบทสนทนา ส่วนคำกำกับแนบอธิบายวิธีแสดงส่วนนั้น คำสั่งทั่วไปที่ใส่ในบทข้อความอาจถูกอ่านออกเสียง</p><p>ระบบเสียง 3.8 ของ Google มีเสียงสำเร็จรูป คลังเสียงเพิ่มเติม บุคลิกเสียงที่ออกแบบ และเอกลักษณ์เสียงจำลอง เลือกบุคลิกพื้นฐานก่อนใช้การแสดงชั่วคราว สำเนียงภูมิภาคหรือเอกลักษณ์ตัวละครที่คงที่เป็นคุณสมบัติของเสียงที่เลือก ส่วนฟิลด์ style ควบคุมการแสดงครั้งนี้ ผู้พัฒนาแนะนำให้ใช้เสียงนั้นซ้ำพร้อมคำกำกับสั้น แทนการทำบล็อก Audio Profile หรือ Director’s Notes ยาวซ้ำ ค่ากำหนดบทสนทนาคำขอเดียวที่ระบุรวมผู้พูดสำเร็จรูปสูงสุดสองคน สำหรับตัวละครที่ออกแบบหรือจำลอง คู่มือให้สร้างทีละเทิร์นเมื่อประกอบบทสนทนาหลายตัวละคร</p><p>วางเสียงเปล่งสั้น ๆ ของมนุษย์หรือการหยุด ณ จุดที่เกี่ยวข้องด้วยแท็กวงเล็บมุม ตัวอย่างบทคือ “ฉันนึกว่าคุณไปแล้ว &lt;short pause&gt; &lt;sigh&gt; ฉันเปิดไฟรอไว้” แนบการพูดเบาอย่างสำรวมกับทั้งเทิร์น แทนใส่คำสั่งนั้นในคำที่พูด เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่ช่วยแบ่งจังหวะลังเลหรือเน้นคำได้ Google ยังระบุปฏิกิริยาผู้ฟังที่คั่นด้วยเครื่องหมายไปป์สำหรับการตอบรับแทรกและบทสนทนาพูดซ้อน และให้ Flash TTS เป็นรุ่น 3.8 ที่เหมาะกว่าสำหรับการซ้อนมาก ให้ปฏิกิริยาสั้นพอที่ผู้ฟังยังเข้าใจประโยคหลัก</p><p>ผู้ผลิตระบุ 130 ภาษาที่ Flash TTS รองรับ และเน้นภาษาถิ่นภูมิภาคกับชนกลุ่มน้อย บรีฟสำเนียงภูมิภาคมีประโยชน์กับตัวละครหนังสือเสียงที่ปรับท้องถิ่นหรือบทบรรยายที่สำเนียงสำคัญต่อผู้ฟัง เตรียมบทในภาษาสุดท้าย สะกดชื่อที่ใช้ซ้ำให้สอดคล้อง และกำหนดวิธีอ่านตัวย่อกับตัวเลข ในขั้นบรรณาธิการ เริ่มตรวจฟังช่วงที่มีชื่อยาก การเปลี่ยนภาษาถิ่น หรือการเปลี่ยนอารมณ์ ประเมินสำเนียงและจังหวะที่ต้องการจากเสียงที่สร้าง แทนการสมมติจากป้ายภาษาอย่างเดียว</p><p>คู่มือเอาต์พุต 3.8 แยกไฟล์สมบูรณ์จากเสียงสตรีม ค่าเริ่มต้นของคำขอที่เสร็จคือไฟล์ WAV มีส่วนหัว RIFF: PCM 24 kHz โมโน 16 บิตแบบมีเครื่องหมายและ little-endian ค่าเริ่มต้นสตรีมคือ raw linear PCM ไม่มีส่วนหัว โดยมีคุณสมบัติแซมเปิลเดียวกัน นอกจากนี้ยังระบุ raw linear PCM, mu-law และ A-law เป็นตัวเลือกการเข้ารหัส ใช้ข้อมูลการเข้ารหัสจริงเมื่อเตรียมเล่นหรืออิมพอร์ตเข้าตัวแก้ไข สำหรับชุดไฟล์บทสนทนาแยก ให้รูปแบบสอดคล้องกันและตรวจรอยต่อเรื่องระดับเสียง จังหวะ หรือเสียงบรรยากาศห้องที่เปลี่ยนฉับพลัน</p><p>หน้าโมเดลตรงตัวของ Google ระบุขีดจำกัดให้บริการ Gemini API ที่อินพุต 8,192 และเอาต์พุต 16,384 โทเคน เป็นขีดจำกัดโทเคน ไม่ใช่ความยาวหนังสือเสียงคงที่หรือจำนวนวินาทีเสียงที่แน่นอน แบ่งบทยาว ณ จุดที่มีความหมาย และรักษาเอกลักษณ์เสียงข้ามส่วน ในการผลิตยาวหนึ่งบท ให้ฟังความต่อเนื่องเมื่อเปลี่ยนย่อหน้าหรือฉาก รวมถึงความถูกต้องของคำในแต่ละช่วง การตรวจที่ดีบันทึกประโยคที่ต้องแก้การออกเสียงหรือการแสดง แทนเขียนบรีฟเสียงทั้งหมดใหม่หลังทุกเทค</p><p>Flash TTS กับ Flash-Lite TTS ใช้โครงสร้างเตรียม 3.8 ร่วมกัน จึงเลือกรุ่นตามความต้องการงานได้ Flash TTS เน้นการแสดง บทสนทนาซับซ้อน คำออกเสียงยาก และภาษาถิ่นที่กว้างกว่า ส่วน Flash-Lite เน้นปริมาณงานเสียงพูดทั่วไป ตัวควบคุมการถ่ายทอดอารมณ์เกี่ยวกับเสียงพูดมนุษย์และเหตุการณ์เสียงจากปาก เอฟเฟกต์พื้นหลัง ดนตรีประกอบ และมิกซ์งานสมบูรณ์วางแผนเป็นชิ้นงานแยกได้ การเขียนบท การแปล และการรู้จำเสียงบันทึกยังเป็นขั้นตอนแยกรอบโมเดลข้อความเป็นเสียงนี้</p>",
  "aboutText": "Google Gemini 3.8 Flash TTS เป็นระดับการแสดงเสียงเชิงสร้างสรรค์ในตระกูลแปลงข้อความเป็นเสียง 3.8 ของ Google เน้นความเที่ยงตรงทางเสียง ช่วงอารมณ์ สำเนียงภูมิภาค และความต่อเนื่องของเสียงตัวละครในบทสนทนายาว Google เน้นหนังสือเสียง งานบรรยายสตูดิโอ คำออกเสียงยาก และฉากที่ต้องแสดงเสียงมาก เอาต์พุตคือเสียงพูดจากบทข้อความที่เตรียมไว้ เหมาะสำหรับตรวจการแสดงของผู้บรรยายหรือจัดบทสนทนาตามบทร่วมกับองค์ประกอบการผลิตอื่น\n\nเริ่มด้วยคำที่ต้องได้ยินตรงตามจริง บทข้อความ 3.8 ถูกอ่านตามต้นฉบับ ส่วนผู้พูดและการแสดงต่อเนื่องอยู่ในเมทาดาทาเสียงแยก กำหนดเอกลักษณ์ผู้พูดแต่ละเทิร์นชัดเจน และเมื่อมีประโยชน์ ให้คำกำกับสไตล์สั้น ๆ เช่น กังวลอย่างเก็บอาการ หรือสงสัยอย่างร่าเริง แยกประโยคเป็นหลายเทิร์นเมื่ออารมณ์หรือจังหวะเปลี่ยนมาก ทำให้ตรวจบรีฟง่ายขึ้น เพราะบทข้อความมีบทสนทนา ส่วนคำกำกับแนบอธิบายวิธีแสดงส่วนนั้น คำสั่งทั่วไปที่ใส่ในบทข้อความอาจถูกอ่านออกเสียง\n\nระบบเสียง 3.8 ของ Google มีเสียงสำเร็จรูป คลังเสียงเพิ่มเติม บุคลิกเสียงที่ออกแบบ และเอกลักษณ์เสียงจำลอง เลือกบุคลิกพื้นฐานก่อนใช้การแสดงชั่วคราว สำเนียงภูมิภาคหรือเอกลักษณ์ตัวละครที่คงที่เป็นคุณสมบัติของเสียงที่เลือก ส่วนฟิลด์ style ควบคุมการแสดงครั้งนี้ ผู้พัฒนาแนะนำให้ใช้เสียงนั้นซ้ำพร้อมคำกำกับสั้น แทนการทำบล็อก Audio Profile หรือ Director’s Notes ยาวซ้ำ ค่ากำหนดบทสนทนาคำขอเดียวที่ระบุรวมผู้พูดสำเร็จรูปสูงสุดสองคน สำหรับตัวละครที่ออกแบบหรือจำลอง คู่มือให้สร้างทีละเทิร์นเมื่อประกอบบทสนทนาหลายตัวละคร\n\nวางเสียงเปล่งสั้น ๆ ของมนุษย์หรือการหยุด ณ จุดที่เกี่ยวข้องด้วยแท็กวงเล็บมุม ตัวอย่างบทคือ “ฉันนึกว่าคุณไปแล้ว <short pause> <sigh> ฉันเปิดไฟรอไว้” แนบการพูดเบาอย่างสำรวมกับทั้งเทิร์น แทนใส่คำสั่งนั้นในคำที่พูด เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่ช่วยแบ่งจังหวะลังเลหรือเน้นคำได้ Google ยังระบุปฏิกิริยาผู้ฟังที่คั่นด้วยเครื่องหมายไปป์สำหรับการตอบรับแทรกและบทสนทนาพูดซ้อน และให้ Flash TTS เป็นรุ่น 3.8 ที่เหมาะกว่าสำหรับการซ้อนมาก ให้ปฏิกิริยาสั้นพอที่ผู้ฟังยังเข้าใจประโยคหลัก\n\nผู้ผลิตระบุ 130 ภาษาที่ Flash TTS รองรับ และเน้นภาษาถิ่นภูมิภาคกับชนกลุ่มน้อย บรีฟสำเนียงภูมิภาคมีประโยชน์กับตัวละครหนังสือเสียงที่ปรับท้องถิ่นหรือบทบรรยายที่สำเนียงสำคัญต่อผู้ฟัง เตรียมบทในภาษาสุดท้าย สะกดชื่อที่ใช้ซ้ำให้สอดคล้อง และกำหนดวิธีอ่านตัวย่อกับตัวเลข ในขั้นบรรณาธิการ เริ่มตรวจฟังช่วงที่มีชื่อยาก การเปลี่ยนภาษาถิ่น หรือการเปลี่ยนอารมณ์ ประเมินสำเนียงและจังหวะที่ต้องการจากเสียงที่สร้าง แทนการสมมติจากป้ายภาษาอย่างเดียว\n\nคู่มือเอาต์พุต 3.8 แยกไฟล์สมบูรณ์จากเสียงสตรีม ค่าเริ่มต้นของคำขอที่เสร็จคือไฟล์ WAV มีส่วนหัว RIFF: PCM 24 kHz โมโน 16 บิตแบบมีเครื่องหมายและ little-endian ค่าเริ่มต้นสตรีมคือ raw linear PCM ไม่มีส่วนหัว โดยมีคุณสมบัติแซมเปิลเดียวกัน นอกจากนี้ยังระบุ raw linear PCM, mu-law และ A-law เป็นตัวเลือกการเข้ารหัส ใช้ข้อมูลการเข้ารหัสจริงเมื่อเตรียมเล่นหรืออิมพอร์ตเข้าตัวแก้ไข สำหรับชุดไฟล์บทสนทนาแยก ให้รูปแบบสอดคล้องกันและตรวจรอยต่อเรื่องระดับเสียง จังหวะ หรือเสียงบรรยากาศห้องที่เปลี่ยนฉับพลัน\n\nหน้าโมเดลตรงตัวของ Google ระบุขีดจำกัดให้บริการ Gemini API ที่อินพุต 8,192 และเอาต์พุต 16,384 โทเคน เป็นขีดจำกัดโทเคน ไม่ใช่ความยาวหนังสือเสียงคงที่หรือจำนวนวินาทีเสียงที่แน่นอน แบ่งบทยาว ณ จุดที่มีความหมาย และรักษาเอกลักษณ์เสียงข้ามส่วน ในการผลิตยาวหนึ่งบท ให้ฟังความต่อเนื่องเมื่อเปลี่ยนย่อหน้าหรือฉาก รวมถึงความถูกต้องของคำในแต่ละช่วง การตรวจที่ดีบันทึกประโยคที่ต้องแก้การออกเสียงหรือการแสดง แทนเขียนบรีฟเสียงทั้งหมดใหม่หลังทุกเทค\n\nFlash TTS กับ Flash-Lite TTS ใช้โครงสร้างเตรียม 3.8 ร่วมกัน จึงเลือกรุ่นตามความต้องการงานได้ Flash TTS เน้นการแสดง บทสนทนาซับซ้อน คำออกเสียงยาก และภาษาถิ่นที่กว้างกว่า ส่วน Flash-Lite เน้นปริมาณงานเสียงพูดทั่วไป ตัวควบคุมการถ่ายทอดอารมณ์เกี่ยวกับเสียงพูดมนุษย์และเหตุการณ์เสียงจากปาก เอฟเฟกต์พื้นหลัง ดนตรีประกอบ และมิกซ์งานสมบูรณ์วางแผนเป็นชิ้นงานแยกได้ การเขียนบท การแปล และการรู้จำเสียงบันทึกยังเป็นขั้นตอนแยกรอบโมเดลข้อความเป็นเสียงนี้",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9a4309565badf2cf3787b81e05e4863cdf1ca23189a0d14834b327ef7f56bf98",
    "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.8 Flash TTS</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-3.8-flash-tts</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.8-flash-tts\">การสังเคราะห์เสียงพูด</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.8 Flash TTS สร้างเสียงพูดถ่ายทอดอารมณ์สำหรับหนังสือเสียง งานบรรยายสตูดิโอ และบทสนทนาตัวละคร ใช้บทพูดตรงตามต้นฉบับร่วมกับคำกำกับผู้พูดและการแสดงแยกต่างหาก แท็กเสียงชั่วขณะ และการรองรับ 130 ภาษา โดยเน้นการออกเสียง สำเนียงภูมิภาค และความต่อเนื่องของเสียง</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.8 Flash TTS เป็นระดับการแสดงเสียงเชิงสร้างสรรค์ในตระกูลแปลงข้อความเป็นเสียง 3.8 ของ Google เน้นความเที่ยงตรงทางเสียง ช่วงอารมณ์ สำเนียงภูมิภาค และความต่อเนื่องของเสียงตัวละครในบทสนทนายาว Google เน้นหนังสือเสียง งานบรรยายสตูดิโอ คำออกเสียงยาก และฉากที่ต้องแสดงเสียงมาก เอาต์พุตคือเสียงพูดจากบทข้อความที่เตรียมไว้ เหมาะสำหรับตรวจการแสดงของผู้บรรยายหรือจัดบทสนทนาตามบทร่วมกับองค์ประกอบการผลิตอื่น</p><p>เริ่มด้วยคำที่ต้องได้ยินตรงตามจริง บทข้อความ 3.8 ถูกอ่านตามต้นฉบับ ส่วนผู้พูดและการแสดงต่อเนื่องอยู่ในเมทาดาทาเสียงแยก กำหนดเอกลักษณ์ผู้พูดแต่ละเทิร์นชัดเจน และเมื่อมีประโยชน์ ให้คำกำกับสไตล์สั้น ๆ เช่น กังวลอย่างเก็บอาการ หรือสงสัยอย่างร่าเริง แยกประโยคเป็นหลายเทิร์นเมื่ออารมณ์หรือจังหวะเปลี่ยนมาก ทำให้ตรวจบรีฟง่ายขึ้น เพราะบทข้อความมีบทสนทนา ส่วนคำกำกับแนบอธิบายวิธีแสดงส่วนนั้น คำสั่งทั่วไปที่ใส่ในบทข้อความอาจถูกอ่านออกเสียง</p><p>ระบบเสียง 3.8 ของ Google มีเสียงสำเร็จรูป คลังเสียงเพิ่มเติม บุคลิกเสียงที่ออกแบบ และเอกลักษณ์เสียงจำลอง เลือกบุคลิกพื้นฐานก่อนใช้การแสดงชั่วคราว สำเนียงภูมิภาคหรือเอกลักษณ์ตัวละครที่คงที่เป็นคุณสมบัติของเสียงที่เลือก ส่วนฟิลด์ style ควบคุมการแสดงครั้งนี้ ผู้พัฒนาแนะนำให้ใช้เสียงนั้นซ้ำพร้อมคำกำกับสั้น แทนการทำบล็อก Audio Profile หรือ Director’s Notes ยาวซ้ำ ค่ากำหนดบทสนทนาคำขอเดียวที่ระบุรวมผู้พูดสำเร็จรูปสูงสุดสองคน สำหรับตัวละครที่ออกแบบหรือจำลอง คู่มือให้สร้างทีละเทิร์นเมื่อประกอบบทสนทนาหลายตัวละคร</p><p>วางเสียงเปล่งสั้น ๆ ของมนุษย์หรือการหยุด ณ จุดที่เกี่ยวข้องด้วยแท็กวงเล็บมุม ตัวอย่างบทคือ “ฉันนึกว่าคุณไปแล้ว &lt;short pause&gt; &lt;sigh&gt; ฉันเปิดไฟรอไว้” แนบการพูดเบาอย่างสำรวมกับทั้งเทิร์น แทนใส่คำสั่งนั้นในคำที่พูด เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่ช่วยแบ่งจังหวะลังเลหรือเน้นคำได้ Google ยังระบุปฏิกิริยาผู้ฟังที่คั่นด้วยเครื่องหมายไปป์สำหรับการตอบรับแทรกและบทสนทนาพูดซ้อน และให้ Flash TTS เป็นรุ่น 3.8 ที่เหมาะกว่าสำหรับการซ้อนมาก ให้ปฏิกิริยาสั้นพอที่ผู้ฟังยังเข้าใจประโยคหลัก</p><p>ผู้ผลิตระบุ 130 ภาษาที่ Flash TTS รองรับ และเน้นภาษาถิ่นภูมิภาคกับชนกลุ่มน้อย บรีฟสำเนียงภูมิภาคมีประโยชน์กับตัวละครหนังสือเสียงที่ปรับท้องถิ่นหรือบทบรรยายที่สำเนียงสำคัญต่อผู้ฟัง เตรียมบทในภาษาสุดท้าย สะกดชื่อที่ใช้ซ้ำให้สอดคล้อง และกำหนดวิธีอ่านตัวย่อกับตัวเลข ในขั้นบรรณาธิการ เริ่มตรวจฟังช่วงที่มีชื่อยาก การเปลี่ยนภาษาถิ่น หรือการเปลี่ยนอารมณ์ ประเมินสำเนียงและจังหวะที่ต้องการจากเสียงที่สร้าง แทนการสมมติจากป้ายภาษาอย่างเดียว</p><p>คู่มือเอาต์พุต 3.8 แยกไฟล์สมบูรณ์จากเสียงสตรีม ค่าเริ่มต้นของคำขอที่เสร็จคือไฟล์ WAV มีส่วนหัว RIFF: PCM 24 kHz โมโน 16 บิตแบบมีเครื่องหมายและ little-endian ค่าเริ่มต้นสตรีมคือ raw linear PCM ไม่มีส่วนหัว โดยมีคุณสมบัติแซมเปิลเดียวกัน นอกจากนี้ยังระบุ raw linear PCM, mu-law และ A-law เป็นตัวเลือกการเข้ารหัส ใช้ข้อมูลการเข้ารหัสจริงเมื่อเตรียมเล่นหรืออิมพอร์ตเข้าตัวแก้ไข สำหรับชุดไฟล์บทสนทนาแยก ให้รูปแบบสอดคล้องกันและตรวจรอยต่อเรื่องระดับเสียง จังหวะ หรือเสียงบรรยากาศห้องที่เปลี่ยนฉับพลัน</p><p>หน้าโมเดลตรงตัวของ Google ระบุขีดจำกัดให้บริการ Gemini API ที่อินพุต 8,192 และเอาต์พุต 16,384 โทเคน เป็นขีดจำกัดโทเคน ไม่ใช่ความยาวหนังสือเสียงคงที่หรือจำนวนวินาทีเสียงที่แน่นอน แบ่งบทยาว ณ จุดที่มีความหมาย และรักษาเอกลักษณ์เสียงข้ามส่วน ในการผลิตยาวหนึ่งบท ให้ฟังความต่อเนื่องเมื่อเปลี่ยนย่อหน้าหรือฉาก รวมถึงความถูกต้องของคำในแต่ละช่วง การตรวจที่ดีบันทึกประโยคที่ต้องแก้การออกเสียงหรือการแสดง แทนเขียนบรีฟเสียงทั้งหมดใหม่หลังทุกเทค</p><p>Flash TTS กับ Flash-Lite TTS ใช้โครงสร้างเตรียม 3.8 ร่วมกัน จึงเลือกรุ่นตามความต้องการงานได้ Flash TTS เน้นการแสดง บทสนทนาซับซ้อน คำออกเสียงยาก และภาษาถิ่นที่กว้างกว่า ส่วน Flash-Lite เน้นปริมาณงานเสียงพูดทั่วไป ตัวควบคุมการถ่ายทอดอารมณ์เกี่ยวกับเสียงพูดมนุษย์และเหตุการณ์เสียงจากปาก เอฟเฟกต์พื้นหลัง ดนตรีประกอบ และมิกซ์งานสมบูรณ์วางแผนเป็นชิ้นงานแยกได้ การเขียนบท การแปล และการรู้จำเสียงบันทึกยังเป็นขั้นตอนแยกรอบโมเดลข้อความเป็นเสียงนี้</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.8-flash-tts</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.001</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.018</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-1478-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1478-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-1478-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1478-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.8-flash-tts&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;Zephyr&#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-1479-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1479-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-1479-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1479-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.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-3.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.8-flash-tts",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|google%2Fgemini-3.8-flash-tts",
      "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.8-flash-tts"
                ],
                "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.8-flash-tts"
                  ],
                  "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.8-flash-tts",
                "voice": "Zephyr"
              },
              "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.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "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.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "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.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\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": 1e-06,
            "output_token": 1.8e-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.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "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.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "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.8-flash-tts",
        "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.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "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.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "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.8-flash-tts",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8b1e6f28ffc8f04e28052fc1401feb9f2289228e767681e1eafc25ca41b8722c",
    "input_html_sha256": "cb24657167eab96531ebb768032e8e76aea961e16a8cc2f76ea7b5dbe2466f3c",
    "private_audit_sha256": "f6d8de4ed9919a03237e32cb6a9c5ac9e04a217883dc3df463013aec23785fbf",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/google-gemini-3-8-flash-tts/",
    "description": "Google Gemini 3.8 Flash TTS สร้างเสียงพูดถ่ายทอดอารมณ์สำหรับหนังสือเสียง งานบรรยายสตูดิโอ และบทสนทนาตัวละคร ใช้บทพูดตรงตามต้นฉบับร่วมกับคำกำกับผู้พูดและการแสดงแยกต่างหาก แท็กเสียงชั่วขณะ และการรองรับ 130 ภาษา โดยเน้นการออกเสียง สำเนียงภูมิภาค และความต่อเนื่องของเสียง",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/google-gemini-3-8-flash-tts/index.md",
    "title": "Google: Gemini 3.8 Flash TTS — Ailoot",
    "url": "https://ailoot.ai/models/th/google-gemini-3-8-flash-tts/"
  },
  "rawModel": {
    "about": "Google Gemini 3.8 Flash TTS เป็นระดับการแสดงเสียงเชิงสร้างสรรค์ในตระกูลแปลงข้อความเป็นเสียง 3.8 ของ Google เน้นความเที่ยงตรงทางเสียง ช่วงอารมณ์ สำเนียงภูมิภาค และความต่อเนื่องของเสียงตัวละครในบทสนทนายาว Google เน้นหนังสือเสียง งานบรรยายสตูดิโอ คำออกเสียงยาก และฉากที่ต้องแสดงเสียงมาก เอาต์พุตคือเสียงพูดจากบทข้อความที่เตรียมไว้ เหมาะสำหรับตรวจการแสดงของผู้บรรยายหรือจัดบทสนทนาตามบทร่วมกับองค์ประกอบการผลิตอื่น\n\nเริ่มด้วยคำที่ต้องได้ยินตรงตามจริง บทข้อความ 3.8 ถูกอ่านตามต้นฉบับ ส่วนผู้พูดและการแสดงต่อเนื่องอยู่ในเมทาดาทาเสียงแยก กำหนดเอกลักษณ์ผู้พูดแต่ละเทิร์นชัดเจน และเมื่อมีประโยชน์ ให้คำกำกับสไตล์สั้น ๆ เช่น กังวลอย่างเก็บอาการ หรือสงสัยอย่างร่าเริง แยกประโยคเป็นหลายเทิร์นเมื่ออารมณ์หรือจังหวะเปลี่ยนมาก ทำให้ตรวจบรีฟง่ายขึ้น เพราะบทข้อความมีบทสนทนา ส่วนคำกำกับแนบอธิบายวิธีแสดงส่วนนั้น คำสั่งทั่วไปที่ใส่ในบทข้อความอาจถูกอ่านออกเสียง\n\nระบบเสียง 3.8 ของ Google มีเสียงสำเร็จรูป คลังเสียงเพิ่มเติม บุคลิกเสียงที่ออกแบบ และเอกลักษณ์เสียงจำลอง เลือกบุคลิกพื้นฐานก่อนใช้การแสดงชั่วคราว สำเนียงภูมิภาคหรือเอกลักษณ์ตัวละครที่คงที่เป็นคุณสมบัติของเสียงที่เลือก ส่วนฟิลด์ style ควบคุมการแสดงครั้งนี้ ผู้พัฒนาแนะนำให้ใช้เสียงนั้นซ้ำพร้อมคำกำกับสั้น แทนการทำบล็อก Audio Profile หรือ Director’s Notes ยาวซ้ำ ค่ากำหนดบทสนทนาคำขอเดียวที่ระบุรวมผู้พูดสำเร็จรูปสูงสุดสองคน สำหรับตัวละครที่ออกแบบหรือจำลอง คู่มือให้สร้างทีละเทิร์นเมื่อประกอบบทสนทนาหลายตัวละคร\n\nวางเสียงเปล่งสั้น ๆ ของมนุษย์หรือการหยุด ณ จุดที่เกี่ยวข้องด้วยแท็กวงเล็บมุม ตัวอย่างบทคือ “ฉันนึกว่าคุณไปแล้ว <short pause> <sigh> ฉันเปิดไฟรอไว้” แนบการพูดเบาอย่างสำรวมกับทั้งเทิร์น แทนใส่คำสั่งนั้นในคำที่พูด เครื่องหมายวรรคตอนและตัวพิมพ์ใหญ่ช่วยแบ่งจังหวะลังเลหรือเน้นคำได้ Google ยังระบุปฏิกิริยาผู้ฟังที่คั่นด้วยเครื่องหมายไปป์สำหรับการตอบรับแทรกและบทสนทนาพูดซ้อน และให้ Flash TTS เป็นรุ่น 3.8 ที่เหมาะกว่าสำหรับการซ้อนมาก ให้ปฏิกิริยาสั้นพอที่ผู้ฟังยังเข้าใจประโยคหลัก\n\nผู้ผลิตระบุ 130 ภาษาที่ Flash TTS รองรับ และเน้นภาษาถิ่นภูมิภาคกับชนกลุ่มน้อย บรีฟสำเนียงภูมิภาคมีประโยชน์กับตัวละครหนังสือเสียงที่ปรับท้องถิ่นหรือบทบรรยายที่สำเนียงสำคัญต่อผู้ฟัง เตรียมบทในภาษาสุดท้าย สะกดชื่อที่ใช้ซ้ำให้สอดคล้อง และกำหนดวิธีอ่านตัวย่อกับตัวเลข ในขั้นบรรณาธิการ เริ่มตรวจฟังช่วงที่มีชื่อยาก การเปลี่ยนภาษาถิ่น หรือการเปลี่ยนอารมณ์ ประเมินสำเนียงและจังหวะที่ต้องการจากเสียงที่สร้าง แทนการสมมติจากป้ายภาษาอย่างเดียว\n\nคู่มือเอาต์พุต 3.8 แยกไฟล์สมบูรณ์จากเสียงสตรีม ค่าเริ่มต้นของคำขอที่เสร็จคือไฟล์ WAV มีส่วนหัว RIFF: PCM 24 kHz โมโน 16 บิตแบบมีเครื่องหมายและ little-endian ค่าเริ่มต้นสตรีมคือ raw linear PCM ไม่มีส่วนหัว โดยมีคุณสมบัติแซมเปิลเดียวกัน นอกจากนี้ยังระบุ raw linear PCM, mu-law และ A-law เป็นตัวเลือกการเข้ารหัส ใช้ข้อมูลการเข้ารหัสจริงเมื่อเตรียมเล่นหรืออิมพอร์ตเข้าตัวแก้ไข สำหรับชุดไฟล์บทสนทนาแยก ให้รูปแบบสอดคล้องกันและตรวจรอยต่อเรื่องระดับเสียง จังหวะ หรือเสียงบรรยากาศห้องที่เปลี่ยนฉับพลัน\n\nหน้าโมเดลตรงตัวของ Google ระบุขีดจำกัดให้บริการ Gemini API ที่อินพุต 8,192 และเอาต์พุต 16,384 โทเคน เป็นขีดจำกัดโทเคน ไม่ใช่ความยาวหนังสือเสียงคงที่หรือจำนวนวินาทีเสียงที่แน่นอน แบ่งบทยาว ณ จุดที่มีความหมาย และรักษาเอกลักษณ์เสียงข้ามส่วน ในการผลิตยาวหนึ่งบท ให้ฟังความต่อเนื่องเมื่อเปลี่ยนย่อหน้าหรือฉาก รวมถึงความถูกต้องของคำในแต่ละช่วง การตรวจที่ดีบันทึกประโยคที่ต้องแก้การออกเสียงหรือการแสดง แทนเขียนบรีฟเสียงทั้งหมดใหม่หลังทุกเทค\n\nFlash TTS กับ Flash-Lite TTS ใช้โครงสร้างเตรียม 3.8 ร่วมกัน จึงเลือกรุ่นตามความต้องการงานได้ Flash TTS เน้นการแสดง บทสนทนาซับซ้อน คำออกเสียงยาก และภาษาถิ่นที่กว้างกว่า ส่วน Flash-Lite เน้นปริมาณงานเสียงพูดทั่วไป ตัวควบคุมการถ่ายทอดอารมณ์เกี่ยวกับเสียงพูดมนุษย์และเหตุการณ์เสียงจากปาก เอฟเฟกต์พื้นหลัง ดนตรีประกอบ และมิกซ์งานสมบูรณ์วางแผนเป็นชิ้นงานแยกได้ การเขียนบท การแปล และการรู้จำเสียงบันทึกยังเป็นขั้นตอนแยกรอบโมเดลข้อความเป็นเสียงนี้",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 32768,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "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.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "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.8-flash-tts",
    "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.8-flash-tts"
                ],
                "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.8-flash-tts"
                  ],
                  "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.8-flash-tts",
                "voice": "Zephyr"
              },
              "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.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "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.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "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.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\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": 1e-06,
            "output_token": 1.8e-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.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "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.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "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.8-flash-tts",
        "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.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "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.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "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.8-flash-tts",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.8 Flash TTS",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.018,
      "out_label": "/ 1K tokens",
      "sort_in": null,
      "sort_out": 0.018,
      "varies": true
    },
    "short": "Google Gemini 3.8 Flash TTS สร้างเสียงพูดถ่ายทอดอารมณ์สำหรับหนังสือเสียง งานบรรยายสตูดิโอ และบทสนทนาตัวละคร ใช้บทพูดตรงตามต้นฉบับร่วมกับคำกำกับผู้พูดและการแสดงแยกต่างหาก แท็กเสียงชั่วขณะ และการรองรับ 130 ภาษา โดยเน้นการออกเสียง สำเนียงภูมิภาค และความต่อเนื่องของเสียง"
  },
  "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.8 Flash TTS สร้างเสียงพูดถ่ายทอดอารมณ์สำหรับหนังสือเสียง งานบรรยายสตูดิโอ และบทสนทนาตัวละคร ใช้บทพูดตรงตามต้นฉบับร่วมกับคำกำกับผู้พูดและการแสดงแยกต่างหาก แท็กเสียงชั่วขณะ และการรองรับ 130 ภาษา โดยเน้นการออกเสียง สำเนียงภูมิภาค และความต่อเนื่องของเสียง",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7fe9b2335fd9eee5678136cb9abeb413fbb5806ed85e8ed5139c3e320fe6e1ba",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "63bcf6002148572ffeb357e730a7d555cef37254c5662225c1b97a1d8dc4b689"
}
