{
  "aboutHtml": "<p>Drama 3 เป็นโมเดลแปลงข้อความเป็นคำพูดของ Fish Audio สำหรับบทที่มีการแสดง สร้างเสียงพูดจากคำที่คุณให้และเปิดให้ผู้เขียนบทควบคุมวิธีถ่ายทอด บรรทัดหนึ่งอาจมีคำกำกับอารมณ์ การเปลี่ยนวิธีแสดงด้วยเสียงเฉพาะช่วง หรือคำแนะนำการออกเสียง อินพุตจึงมีทั้งเนื้อหาที่พูดและวิธีที่เนื้อหานั้นควรฟังดู</p><h4>เขียนคำและกำกับการแสดง</h4><p>เตรียมคำที่ผู้ฟังควรได้ยินให้ตรงก่อนเพิ่มคำกำกับการแสดง รักษาชื่อ วันที่ และคำสั่งสำคัญให้ชัดในบท และใช้เครื่องหมายวรรคตอนกำหนดจังหวะประโยคที่ต้องการ จากนั้นวางคำกำกับภาษาทั่วไปในวงเล็บเหลี่ยมก่อนบรรทัดที่เกี่ยวข้อง อธิบายอารมณ์หรือวิธีถ่ายทอดที่ต้องการอย่างเป็นรูปธรรม เช่น ประกาศที่สำรวม บทโต้ตอบที่ตึงเครียด หรือคำอธิบายอบอุ่น</p><p>Drama 3 ยังรองรับการควบคุมเฉพาะช่วงภายในบรรทัด คำสั่งในบรรทัดเพิ่มเสียงและช่วงหยุดได้ ส่วนแท็กการถ่ายทอดที่เป็นคู่มีผลต่อคำเฉพาะได้ รักษาขอบเขตคำสั่งแต่ละอย่างให้ชัด คำกำกับสำหรับวลีหนึ่งไม่ควรกลายเป็นคำกำกับทั้งฉากโดยไม่ตั้งใจ อ่านบทหนึ่งรอบเพื่อความหมายและอีกหนึ่งรอบเพื่อการแสดงก่อนสังเคราะห์</p><h4>ฉาก ภาษา และการออกเสียง</h4><p>โมเดลที่เผยแพร่รองรับผู้พูดหลายคนในคำขอเดียว จัดบทสนทนาเป็นช่วงพูดที่ชัดเจนของแต่ละคน และให้แต่ละช่วงมีจุดประสงค์ เช่น คำถาม การขัดจังหวะ คำอธิบาย หรือคำตอบ สำหรับบทเรียนหรือเนื้อหาอธิบาย แนวทางเดียวกันแยกผู้บรรยายออกจากตัวละครที่ยกคำพูดมาได้ โดยไม่ต้องเขียนเนื้อหาใหม่เป็นบทพูดคนเดียวที่ไม่แบ่งส่วน</p><p>Drama 3 รองรับมากกว่า 80 ภาษาและเปลี่ยนภาษาภายในประโยคได้โดยคงเสียงไว้ เตรียมข้อความหลายภาษาในภาษาที่ต้องการให้พูด แทนการสมมติว่าคำสั่งภาษาอังกฤษจะให้คำแปล ตัดสินใจว่าชื่อต่างประเทศและคำยืมควรฟังอย่างไร และใช้การควบคุมหน่วยเสียงของโมเดลเมื่อต้องกำกับการออกเสียงอย่างแม่นยำ</p><h4>ชิ้นงานเสียงที่มีประโยชน์</h4><p>โมเดลเหมาะกับบทสนทนาตัวละคร บทเรียนบรรยาย เนื้อหาอธิบายสั้น ประกาศสินค้า และคำตอบเสียงตามบท เก็บเนื้อหาและตัวเลือกการแสดงไว้ด้วยกัน เนื้อหาการศึกษาต้องการศัพท์เข้าใจได้และช่วงหยุดที่มีจุดประสงค์ ฉากตัวละครต้องการช่วงพูดแยกชัดและเจตนาทางละครที่สอดคล้องกัน นี่เป็นการตัดสินใจในการเขียนที่ตรวจทานได้ก่อนสร้างเสียงใด ๆ</p><p>หลังสังเคราะห์ ให้เปรียบเทียบคำที่พูดกับบทที่เสร็จแล้ว ฟังหาวลีที่ตกหล่น ช่วงหยุดผิดตำแหน่ง การเปลี่ยนผู้พูดไม่ชัด และการออกเสียงชื่อที่ต้องรักษา เก็บบทและคำกำกับการถ่ายทอดพร้อมเสียง เพื่อให้การแก้ไขมุ่งไปยังบรรทัดที่ได้รับผล เมื่อเตรียมฉบับแก้ไข ให้เก็บเนื้อหาที่พูดสุดท้ายและตัวเลือกการแสดงระดับบรรทัดไว้ด้วยกัน</p><h4>ความสามารถ</h4><ul><li>การถ่ายทอดเสียงพูดจากบทที่เสร็จสมบูรณ์ด้วยการแปลงข้อความเป็นเสียงพูด</li><li>คำกำกับด้วยภาษาทั่วไปในวงเล็บเหลี่ยมก่อนแต่ละบทพูด</li><li>เสียงและช่วงหยุดที่แทรกในข้อความ พร้อมแท็กกำกับการพูดแบบคู่ที่ใช้กับคำเฉพาะ</li><li>ฉากที่มีผู้พูดหลายคนและภาษาพูดมากกว่า 80 ภาษา</li><li>การควบคุมหน่วยเสียงสำหรับชื่อและศัพท์เฉพาะทาง</li></ul><h4>กรณีการใช้งาน</h4><ul><li><strong>บทสนทนาของตัวละคร</strong> — บทที่แยกช่วงพูดของแต่ละคนและคำกำกับการถ่ายทอดเสียงไว้อย่างชัดเจน ผลลัพธ์: ฉากพูดที่เปลี่ยนวิธีถ่ายทอดเสียงอย่างตั้งใจ</li><li><strong>คำอธิบายผ่านเสียงบรรยาย</strong> — บทเรียนที่เสร็จสมบูรณ์พร้อมทำเครื่องหมายคำศัพท์และช่วงหยุด ผลลัพธ์: เสียงพูดที่สามารถตรวจทานเทียบกับข้อความของบทเรียนได้</li><li><strong>ประกาศหลายภาษา</strong> — ข้อความฉบับสมบูรณ์ในภาษาที่ต้องการ โดยคงตัวเลือกการออกเสียงไว้ ผลลัพธ์: ข้อความที่อ่านออกเสียงพร้อมควบคุมการเปลี่ยนภาษา</li><li><strong>การตอบกลับด้วยเสียงตามบท</strong> — คำตอบกระชับที่ระบุน้ำเสียงและคำที่จะพูดอย่างชัดเจน ผลลัพธ์: ส่วนของเสียงพูดที่นำกลับมาใช้ได้ในแอปพลิเคชันที่ครอบอยู่</li></ul><h4>ข้อจำกัด</h4><ul><li><strong>อินพุตและผลลัพธ์</strong> — โมเดลที่เผยแพร่รับข้อความและส่งกลับเสียงพูด</li><li><strong>ขอบเขตการควบคุม</strong> — แนบคำกำกับกับบทพูดหรือวลีที่ต้องการ และรักษาขอบเขตของแท็กกำกับการพูดแบบคู่ให้ถูกต้อง</li><li><strong>หน่วยที่ใช้ตรวจทาน</strong> — เก็บบทและคำกำกับที่ตรงกันทุกประการไว้กับเสียง และตรวจทานการออกเสียงกับช่วงพูดของแต่ละคนในระดับบทพูดแต่ละบรรทัด</li></ul>",
  "aboutText": "Drama 3 เป็นโมเดลแปลงข้อความเป็นคำพูดของ Fish Audio สำหรับบทที่มีการแสดง สร้างเสียงพูดจากคำที่คุณให้และเปิดให้ผู้เขียนบทควบคุมวิธีถ่ายทอด บรรทัดหนึ่งอาจมีคำกำกับอารมณ์ การเปลี่ยนวิธีแสดงด้วยเสียงเฉพาะช่วง หรือคำแนะนำการออกเสียง อินพุตจึงมีทั้งเนื้อหาที่พูดและวิธีที่เนื้อหานั้นควรฟังดู\n\n### เขียนคำและกำกับการแสดง\n\nเตรียมคำที่ผู้ฟังควรได้ยินให้ตรงก่อนเพิ่มคำกำกับการแสดง รักษาชื่อ วันที่ และคำสั่งสำคัญให้ชัดในบท และใช้เครื่องหมายวรรคตอนกำหนดจังหวะประโยคที่ต้องการ จากนั้นวางคำกำกับภาษาทั่วไปในวงเล็บเหลี่ยมก่อนบรรทัดที่เกี่ยวข้อง อธิบายอารมณ์หรือวิธีถ่ายทอดที่ต้องการอย่างเป็นรูปธรรม เช่น ประกาศที่สำรวม บทโต้ตอบที่ตึงเครียด หรือคำอธิบายอบอุ่น\n\nDrama 3 ยังรองรับการควบคุมเฉพาะช่วงภายในบรรทัด คำสั่งในบรรทัดเพิ่มเสียงและช่วงหยุดได้ ส่วนแท็กการถ่ายทอดที่เป็นคู่มีผลต่อคำเฉพาะได้ รักษาขอบเขตคำสั่งแต่ละอย่างให้ชัด คำกำกับสำหรับวลีหนึ่งไม่ควรกลายเป็นคำกำกับทั้งฉากโดยไม่ตั้งใจ อ่านบทหนึ่งรอบเพื่อความหมายและอีกหนึ่งรอบเพื่อการแสดงก่อนสังเคราะห์\n\n### ฉาก ภาษา และการออกเสียง\n\nโมเดลที่เผยแพร่รองรับผู้พูดหลายคนในคำขอเดียว จัดบทสนทนาเป็นช่วงพูดที่ชัดเจนของแต่ละคน และให้แต่ละช่วงมีจุดประสงค์ เช่น คำถาม การขัดจังหวะ คำอธิบาย หรือคำตอบ สำหรับบทเรียนหรือเนื้อหาอธิบาย แนวทางเดียวกันแยกผู้บรรยายออกจากตัวละครที่ยกคำพูดมาได้ โดยไม่ต้องเขียนเนื้อหาใหม่เป็นบทพูดคนเดียวที่ไม่แบ่งส่วน\n\nDrama 3 รองรับมากกว่า 80 ภาษาและเปลี่ยนภาษาภายในประโยคได้โดยคงเสียงไว้ เตรียมข้อความหลายภาษาในภาษาที่ต้องการให้พูด แทนการสมมติว่าคำสั่งภาษาอังกฤษจะให้คำแปล ตัดสินใจว่าชื่อต่างประเทศและคำยืมควรฟังอย่างไร และใช้การควบคุมหน่วยเสียงของโมเดลเมื่อต้องกำกับการออกเสียงอย่างแม่นยำ\n\n### ชิ้นงานเสียงที่มีประโยชน์\n\nโมเดลเหมาะกับบทสนทนาตัวละคร บทเรียนบรรยาย เนื้อหาอธิบายสั้น ประกาศสินค้า และคำตอบเสียงตามบท เก็บเนื้อหาและตัวเลือกการแสดงไว้ด้วยกัน เนื้อหาการศึกษาต้องการศัพท์เข้าใจได้และช่วงหยุดที่มีจุดประสงค์ ฉากตัวละครต้องการช่วงพูดแยกชัดและเจตนาทางละครที่สอดคล้องกัน นี่เป็นการตัดสินใจในการเขียนที่ตรวจทานได้ก่อนสร้างเสียงใด ๆ\n\nหลังสังเคราะห์ ให้เปรียบเทียบคำที่พูดกับบทที่เสร็จแล้ว ฟังหาวลีที่ตกหล่น ช่วงหยุดผิดตำแหน่ง การเปลี่ยนผู้พูดไม่ชัด และการออกเสียงชื่อที่ต้องรักษา เก็บบทและคำกำกับการถ่ายทอดพร้อมเสียง เพื่อให้การแก้ไขมุ่งไปยังบรรทัดที่ได้รับผล เมื่อเตรียมฉบับแก้ไข ให้เก็บเนื้อหาที่พูดสุดท้ายและตัวเลือกการแสดงระดับบรรทัดไว้ด้วยกัน\n\n### ความสามารถ\n\n- การถ่ายทอดเสียงพูดจากบทที่เสร็จสมบูรณ์ด้วยการแปลงข้อความเป็นเสียงพูด\n- คำกำกับด้วยภาษาทั่วไปในวงเล็บเหลี่ยมก่อนแต่ละบทพูด\n- เสียงและช่วงหยุดที่แทรกในข้อความ พร้อมแท็กกำกับการพูดแบบคู่ที่ใช้กับคำเฉพาะ\n- ฉากที่มีผู้พูดหลายคนและภาษาพูดมากกว่า 80 ภาษา\n- การควบคุมหน่วยเสียงสำหรับชื่อและศัพท์เฉพาะทาง\n\n### กรณีการใช้งาน\n\n- **บทสนทนาของตัวละคร** — บทที่แยกช่วงพูดของแต่ละคนและคำกำกับการถ่ายทอดเสียงไว้อย่างชัดเจน ผลลัพธ์: ฉากพูดที่เปลี่ยนวิธีถ่ายทอดเสียงอย่างตั้งใจ\n- **คำอธิบายผ่านเสียงบรรยาย** — บทเรียนที่เสร็จสมบูรณ์พร้อมทำเครื่องหมายคำศัพท์และช่วงหยุด ผลลัพธ์: เสียงพูดที่สามารถตรวจทานเทียบกับข้อความของบทเรียนได้\n- **ประกาศหลายภาษา** — ข้อความฉบับสมบูรณ์ในภาษาที่ต้องการ โดยคงตัวเลือกการออกเสียงไว้ ผลลัพธ์: ข้อความที่อ่านออกเสียงพร้อมควบคุมการเปลี่ยนภาษา\n- **การตอบกลับด้วยเสียงตามบท** — คำตอบกระชับที่ระบุน้ำเสียงและคำที่จะพูดอย่างชัดเจน ผลลัพธ์: ส่วนของเสียงพูดที่นำกลับมาใช้ได้ในแอปพลิเคชันที่ครอบอยู่\n\n### ข้อจำกัด\n\n- **อินพุตและผลลัพธ์** — โมเดลที่เผยแพร่รับข้อความและส่งกลับเสียงพูด\n- **ขอบเขตการควบคุม** — แนบคำกำกับกับบทพูดหรือวลีที่ต้องการ และรักษาขอบเขตของแท็กกำกับการพูดแบบคู่ให้ถูกต้อง\n- **หน่วยที่ใช้ตรวจทาน** — เก็บบทและคำกำกับที่ตรงกันทุกประการไว้กับเสียง และตรวจทานการออกเสียงกับช่วงพูดของแต่ละคนในระดับบทพูดแต่ละบรรทัด\n",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4ccbc184b345e8c80140323802f24e6bddaac974482e4013df1548e7b2c782ff",
    "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\">•</span><h2 id=\"sheet-title\">Fish Audio: Drama 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/drama-3</code><button type=\"button\" id=\"copy-id\">คัดลอก ID</button></div><nav class=\"card-jump-nav\" aria-label=\"ส่วนต่าง ๆ ของการ์ดโมเดล\"><button type=\"button\" data-card-jump=\"overview\">เริ่มต้น</button><button type=\"button\" data-card-jump=\"methods\">อินพุตและเมธอด</button><button type=\"button\" data-card-jump=\"pricing\">ราคา</button><button type=\"button\" data-card-jump=\"examples\">ตัวอย่าง</button><button type=\"button\" data-card-jump=\"results\">ผลลัพธ์</button><button type=\"button\" data-card-jump=\"aliases\">ชื่ออื่น</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"เมธอด API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|fish-audio%2Fdrama-3\">การสังเคราะห์เสียงพูด</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">เริ่มต้น</h3><p class=\"mdesc-full\">Drama 3 เปลี่ยนบทที่เขียนเป็นคำพูดพร้อมการกำกับการแสดง กำหนดอารมณ์และวิธีถ่ายทอดด้วยคำแนะนำภาษาทั่วไป เพิ่มช่วงหยุดและเสียง กำกับการออกเสียง และสร้างฉากที่มีผู้พูดหลายคน กระบวนการสร้างคำพูดที่เผยแพร่รองรับมากกว่า 80 ภาษา รวมถึงการเปลี่ยนภาษาภายในประโยคเดียว</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>Drama 3 เป็นโมเดลแปลงข้อความเป็นคำพูดของ Fish Audio สำหรับบทที่มีการแสดง สร้างเสียงพูดจากคำที่คุณให้และเปิดให้ผู้เขียนบทควบคุมวิธีถ่ายทอด บรรทัดหนึ่งอาจมีคำกำกับอารมณ์ การเปลี่ยนวิธีแสดงด้วยเสียงเฉพาะช่วง หรือคำแนะนำการออกเสียง อินพุตจึงมีทั้งเนื้อหาที่พูดและวิธีที่เนื้อหานั้นควรฟังดู</p><h4>เขียนคำและกำกับการแสดง</h4><p>เตรียมคำที่ผู้ฟังควรได้ยินให้ตรงก่อนเพิ่มคำกำกับการแสดง รักษาชื่อ วันที่ และคำสั่งสำคัญให้ชัดในบท และใช้เครื่องหมายวรรคตอนกำหนดจังหวะประโยคที่ต้องการ จากนั้นวางคำกำกับภาษาทั่วไปในวงเล็บเหลี่ยมก่อนบรรทัดที่เกี่ยวข้อง อธิบายอารมณ์หรือวิธีถ่ายทอดที่ต้องการอย่างเป็นรูปธรรม เช่น ประกาศที่สำรวม บทโต้ตอบที่ตึงเครียด หรือคำอธิบายอบอุ่น</p><p>Drama 3 ยังรองรับการควบคุมเฉพาะช่วงภายในบรรทัด คำสั่งในบรรทัดเพิ่มเสียงและช่วงหยุดได้ ส่วนแท็กการถ่ายทอดที่เป็นคู่มีผลต่อคำเฉพาะได้ รักษาขอบเขตคำสั่งแต่ละอย่างให้ชัด คำกำกับสำหรับวลีหนึ่งไม่ควรกลายเป็นคำกำกับทั้งฉากโดยไม่ตั้งใจ อ่านบทหนึ่งรอบเพื่อความหมายและอีกหนึ่งรอบเพื่อการแสดงก่อนสังเคราะห์</p><h4>ฉาก ภาษา และการออกเสียง</h4><p>โมเดลที่เผยแพร่รองรับผู้พูดหลายคนในคำขอเดียว จัดบทสนทนาเป็นช่วงพูดที่ชัดเจนของแต่ละคน และให้แต่ละช่วงมีจุดประสงค์ เช่น คำถาม การขัดจังหวะ คำอธิบาย หรือคำตอบ สำหรับบทเรียนหรือเนื้อหาอธิบาย แนวทางเดียวกันแยกผู้บรรยายออกจากตัวละครที่ยกคำพูดมาได้ โดยไม่ต้องเขียนเนื้อหาใหม่เป็นบทพูดคนเดียวที่ไม่แบ่งส่วน</p><p>Drama 3 รองรับมากกว่า 80 ภาษาและเปลี่ยนภาษาภายในประโยคได้โดยคงเสียงไว้ เตรียมข้อความหลายภาษาในภาษาที่ต้องการให้พูด แทนการสมมติว่าคำสั่งภาษาอังกฤษจะให้คำแปล ตัดสินใจว่าชื่อต่างประเทศและคำยืมควรฟังอย่างไร และใช้การควบคุมหน่วยเสียงของโมเดลเมื่อต้องกำกับการออกเสียงอย่างแม่นยำ</p><h4>ชิ้นงานเสียงที่มีประโยชน์</h4><p>โมเดลเหมาะกับบทสนทนาตัวละคร บทเรียนบรรยาย เนื้อหาอธิบายสั้น ประกาศสินค้า และคำตอบเสียงตามบท เก็บเนื้อหาและตัวเลือกการแสดงไว้ด้วยกัน เนื้อหาการศึกษาต้องการศัพท์เข้าใจได้และช่วงหยุดที่มีจุดประสงค์ ฉากตัวละครต้องการช่วงพูดแยกชัดและเจตนาทางละครที่สอดคล้องกัน นี่เป็นการตัดสินใจในการเขียนที่ตรวจทานได้ก่อนสร้างเสียงใด ๆ</p><p>หลังสังเคราะห์ ให้เปรียบเทียบคำที่พูดกับบทที่เสร็จแล้ว ฟังหาวลีที่ตกหล่น ช่วงหยุดผิดตำแหน่ง การเปลี่ยนผู้พูดไม่ชัด และการออกเสียงชื่อที่ต้องรักษา เก็บบทและคำกำกับการถ่ายทอดพร้อมเสียง เพื่อให้การแก้ไขมุ่งไปยังบรรทัดที่ได้รับผล เมื่อเตรียมฉบับแก้ไข ให้เก็บเนื้อหาที่พูดสุดท้ายและตัวเลือกการแสดงระดับบรรทัดไว้ด้วยกัน</p><h4>ความสามารถ</h4><ul><li>การถ่ายทอดเสียงพูดจากบทที่เสร็จสมบูรณ์ด้วยการแปลงข้อความเป็นเสียงพูด</li><li>คำกำกับด้วยภาษาทั่วไปในวงเล็บเหลี่ยมก่อนแต่ละบทพูด</li><li>เสียงและช่วงหยุดที่แทรกในข้อความ พร้อมแท็กกำกับการพูดแบบคู่ที่ใช้กับคำเฉพาะ</li><li>ฉากที่มีผู้พูดหลายคนและภาษาพูดมากกว่า 80 ภาษา</li><li>การควบคุมหน่วยเสียงสำหรับชื่อและศัพท์เฉพาะทาง</li></ul><h4>กรณีการใช้งาน</h4><ul><li><strong>บทสนทนาของตัวละคร</strong> — บทที่แยกช่วงพูดของแต่ละคนและคำกำกับการถ่ายทอดเสียงไว้อย่างชัดเจน ผลลัพธ์: ฉากพูดที่เปลี่ยนวิธีถ่ายทอดเสียงอย่างตั้งใจ</li><li><strong>คำอธิบายผ่านเสียงบรรยาย</strong> — บทเรียนที่เสร็จสมบูรณ์พร้อมทำเครื่องหมายคำศัพท์และช่วงหยุด ผลลัพธ์: เสียงพูดที่สามารถตรวจทานเทียบกับข้อความของบทเรียนได้</li><li><strong>ประกาศหลายภาษา</strong> — ข้อความฉบับสมบูรณ์ในภาษาที่ต้องการ โดยคงตัวเลือกการออกเสียงไว้ ผลลัพธ์: ข้อความที่อ่านออกเสียงพร้อมควบคุมการเปลี่ยนภาษา</li><li><strong>การตอบกลับด้วยเสียงตามบท</strong> — คำตอบกระชับที่ระบุน้ำเสียงและคำที่จะพูดอย่างชัดเจน ผลลัพธ์: ส่วนของเสียงพูดที่นำกลับมาใช้ได้ในแอปพลิเคชันที่ครอบอยู่</li></ul><h4>ข้อจำกัด</h4><ul><li><strong>อินพุตและผลลัพธ์</strong> — โมเดลที่เผยแพร่รับข้อความและส่งกลับเสียงพูด</li><li><strong>ขอบเขตการควบคุม</strong> — แนบคำกำกับกับบทพูดหรือวลีที่ต้องการ และรักษาขอบเขตของแท็กกำกับการพูดแบบคู่ให้ถูกต้อง</li><li><strong>หน่วยที่ใช้ตรวจทาน</strong> — เก็บบทและคำกำกับที่ตรงกันทุกประการไว้กับเสียง และตรวจทานการออกเสียงกับช่วงพูดของแต่ละคนในระดับบทพูดแต่ละบรรทัด</li></ul></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>fish-audio/drama-3</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input</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>ความยาวขั้นต่ำ: 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><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_conditions</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>เลือก ID เสียงจริงที่รองรับ ไม่มีการแต่งค่าเริ่มต้น/เสียงเฉพาะสำหรับโมเดลนี้</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>ไบต์ UTF-8 ขาเข้า</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อไบต์ UTF-8 ของอินพุต</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · ไบต์ UTF-8 ขาเข้า</span> <b>$0.00002</b> <span class=\"price-unit\">ต่อไบต์ UTF-8 ของอินพุต</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-1352-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1352-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-1352-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1352-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\n: &quot;${AILOOT_VOICE:?Set the actual documented input value}&quot;\nexport AILOOT_VOICE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/drama-3&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;${ACTUAL_SUPPORTED_VOICE}&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#39;]\nrequest[&#39;voice&#39;]=os.environ[&#39;AILOOT_VOICE&#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-1353-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1353-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-1353-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1353-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=fish-audio%2Fdrama-3&amp;route=Ultra&amp;caller=fish-audio%2Fdrama-3&amp;fmt=speech\"><code>fish-audio/drama-3</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Fdrama-3&amp;route=Ultra&amp;caller=fish-audio%2Fdrama-3&amp;fmt=speech\"><code>fish-audio/drama-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/drama-3",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fdrama-3",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "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": [
                  "fish-audio/drama-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "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": [
                    "fish-audio/drama-3"
                  ],
                  "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": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/drama-3",
                "voice": "${ACTUAL_SUPPORTED_VOICE}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "เลือก ID เสียงจริงที่รองรับ ไม่มีการแต่งค่าเริ่มต้น/เสียงเฉพาะสำหรับโมเดลนี้"
            ],
            "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": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "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\n: \"${AILOOT_VOICE:?Set the actual documented input value}\"\nexport AILOOT_VOICE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/drama-3', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': '${ACTUAL_SUPPORTED_VOICE}'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nrequest['voice']=os.environ['AILOOT_VOICE']\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": {
            "audio_input_utf8_byte": 2e-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": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/drama-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5642910f81c7ca24993a9ebec42f966a1de089dea7350339cbca7d370dbf4c33",
    "input_html_sha256": "18043aa5ec3f53a6dccbeae91cfd8daaa9d5da4c62a96c345f0443205dda9758",
    "private_audit_sha256": "c2c57babd5ad89d0342e99cebd5c9dab8f26092c19faaac6a3b3cff9afa2546f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/fish-audio-drama-3/",
    "description": "Drama 3 เปลี่ยนบทที่เขียนเป็นคำพูดพร้อมการกำกับการแสดง กำหนดอารมณ์และวิธีถ่ายทอดด้วยคำแนะนำภาษาทั่วไป เพิ่มช่วงหยุดและเสียง กำกับการออกเสียง และสร้างฉากที่มีผู้พูดหลายคน กระบวนการสร้างคำพูดที่เผยแพร่รองรับมากกว่า 80 ภาษา รวมถึงการเปลี่ยนภาษาภายในประโยคเดียว",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/fish-audio-drama-3/index.md",
    "title": "Fish Audio: Drama 3 — Ailoot",
    "url": "https://ailoot.ai/models/th/fish-audio-drama-3/"
  },
  "rawModel": {
    "about": "Drama 3 เป็นโมเดลแปลงข้อความเป็นคำพูดของ Fish Audio สำหรับบทที่มีการแสดง สร้างเสียงพูดจากคำที่คุณให้และเปิดให้ผู้เขียนบทควบคุมวิธีถ่ายทอด บรรทัดหนึ่งอาจมีคำกำกับอารมณ์ การเปลี่ยนวิธีแสดงด้วยเสียงเฉพาะช่วง หรือคำแนะนำการออกเสียง อินพุตจึงมีทั้งเนื้อหาที่พูดและวิธีที่เนื้อหานั้นควรฟังดู\n\n### เขียนคำและกำกับการแสดง\n\nเตรียมคำที่ผู้ฟังควรได้ยินให้ตรงก่อนเพิ่มคำกำกับการแสดง รักษาชื่อ วันที่ และคำสั่งสำคัญให้ชัดในบท และใช้เครื่องหมายวรรคตอนกำหนดจังหวะประโยคที่ต้องการ จากนั้นวางคำกำกับภาษาทั่วไปในวงเล็บเหลี่ยมก่อนบรรทัดที่เกี่ยวข้อง อธิบายอารมณ์หรือวิธีถ่ายทอดที่ต้องการอย่างเป็นรูปธรรม เช่น ประกาศที่สำรวม บทโต้ตอบที่ตึงเครียด หรือคำอธิบายอบอุ่น\n\nDrama 3 ยังรองรับการควบคุมเฉพาะช่วงภายในบรรทัด คำสั่งในบรรทัดเพิ่มเสียงและช่วงหยุดได้ ส่วนแท็กการถ่ายทอดที่เป็นคู่มีผลต่อคำเฉพาะได้ รักษาขอบเขตคำสั่งแต่ละอย่างให้ชัด คำกำกับสำหรับวลีหนึ่งไม่ควรกลายเป็นคำกำกับทั้งฉากโดยไม่ตั้งใจ อ่านบทหนึ่งรอบเพื่อความหมายและอีกหนึ่งรอบเพื่อการแสดงก่อนสังเคราะห์\n\n### ฉาก ภาษา และการออกเสียง\n\nโมเดลที่เผยแพร่รองรับผู้พูดหลายคนในคำขอเดียว จัดบทสนทนาเป็นช่วงพูดที่ชัดเจนของแต่ละคน และให้แต่ละช่วงมีจุดประสงค์ เช่น คำถาม การขัดจังหวะ คำอธิบาย หรือคำตอบ สำหรับบทเรียนหรือเนื้อหาอธิบาย แนวทางเดียวกันแยกผู้บรรยายออกจากตัวละครที่ยกคำพูดมาได้ โดยไม่ต้องเขียนเนื้อหาใหม่เป็นบทพูดคนเดียวที่ไม่แบ่งส่วน\n\nDrama 3 รองรับมากกว่า 80 ภาษาและเปลี่ยนภาษาภายในประโยคได้โดยคงเสียงไว้ เตรียมข้อความหลายภาษาในภาษาที่ต้องการให้พูด แทนการสมมติว่าคำสั่งภาษาอังกฤษจะให้คำแปล ตัดสินใจว่าชื่อต่างประเทศและคำยืมควรฟังอย่างไร และใช้การควบคุมหน่วยเสียงของโมเดลเมื่อต้องกำกับการออกเสียงอย่างแม่นยำ\n\n### ชิ้นงานเสียงที่มีประโยชน์\n\nโมเดลเหมาะกับบทสนทนาตัวละคร บทเรียนบรรยาย เนื้อหาอธิบายสั้น ประกาศสินค้า และคำตอบเสียงตามบท เก็บเนื้อหาและตัวเลือกการแสดงไว้ด้วยกัน เนื้อหาการศึกษาต้องการศัพท์เข้าใจได้และช่วงหยุดที่มีจุดประสงค์ ฉากตัวละครต้องการช่วงพูดแยกชัดและเจตนาทางละครที่สอดคล้องกัน นี่เป็นการตัดสินใจในการเขียนที่ตรวจทานได้ก่อนสร้างเสียงใด ๆ\n\nหลังสังเคราะห์ ให้เปรียบเทียบคำที่พูดกับบทที่เสร็จแล้ว ฟังหาวลีที่ตกหล่น ช่วงหยุดผิดตำแหน่ง การเปลี่ยนผู้พูดไม่ชัด และการออกเสียงชื่อที่ต้องรักษา เก็บบทและคำกำกับการถ่ายทอดพร้อมเสียง เพื่อให้การแก้ไขมุ่งไปยังบรรทัดที่ได้รับผล เมื่อเตรียมฉบับแก้ไข ให้เก็บเนื้อหาที่พูดสุดท้ายและตัวเลือกการแสดงระดับบรรทัดไว้ด้วยกัน\n\n### ความสามารถ\n\n- การถ่ายทอดเสียงพูดจากบทที่เสร็จสมบูรณ์ด้วยการแปลงข้อความเป็นเสียงพูด\n- คำกำกับด้วยภาษาทั่วไปในวงเล็บเหลี่ยมก่อนแต่ละบทพูด\n- เสียงและช่วงหยุดที่แทรกในข้อความ พร้อมแท็กกำกับการพูดแบบคู่ที่ใช้กับคำเฉพาะ\n- ฉากที่มีผู้พูดหลายคนและภาษาพูดมากกว่า 80 ภาษา\n- การควบคุมหน่วยเสียงสำหรับชื่อและศัพท์เฉพาะทาง\n\n### กรณีการใช้งาน\n\n- **บทสนทนาของตัวละคร** — บทที่แยกช่วงพูดของแต่ละคนและคำกำกับการถ่ายทอดเสียงไว้อย่างชัดเจน ผลลัพธ์: ฉากพูดที่เปลี่ยนวิธีถ่ายทอดเสียงอย่างตั้งใจ\n- **คำอธิบายผ่านเสียงบรรยาย** — บทเรียนที่เสร็จสมบูรณ์พร้อมทำเครื่องหมายคำศัพท์และช่วงหยุด ผลลัพธ์: เสียงพูดที่สามารถตรวจทานเทียบกับข้อความของบทเรียนได้\n- **ประกาศหลายภาษา** — ข้อความฉบับสมบูรณ์ในภาษาที่ต้องการ โดยคงตัวเลือกการออกเสียงไว้ ผลลัพธ์: ข้อความที่อ่านออกเสียงพร้อมควบคุมการเปลี่ยนภาษา\n- **การตอบกลับด้วยเสียงตามบท** — คำตอบกระชับที่ระบุน้ำเสียงและคำที่จะพูดอย่างชัดเจน ผลลัพธ์: ส่วนของเสียงพูดที่นำกลับมาใช้ได้ในแอปพลิเคชันที่ครอบอยู่\n\n### ข้อจำกัด\n\n- **อินพุตและผลลัพธ์** — โมเดลที่เผยแพร่รับข้อความและส่งกลับเสียงพูด\n- **ขอบเขตการควบคุม** — แนบคำกำกับกับบทพูดหรือวลีที่ต้องการ และรักษาขอบเขตของแท็กกำกับการพูดแบบคู่ให้ถูกต้อง\n- **หน่วยที่ใช้ตรวจทาน** — เก็บบทและคำกำกับที่ตรงกันทุกประการไว้กับเสียง และตรวจทานการออกเสียงกับช่วงพูดของแต่ละคนในระดับบทพูดแต่ละบรรทัด\n",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "fish-audio/drama-3",
    "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": [
                  "fish-audio/drama-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "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": [
                    "fish-audio/drama-3"
                  ],
                  "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": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/drama-3",
                "voice": "${ACTUAL_SUPPORTED_VOICE}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "เลือก ID เสียงจริงที่รองรับ ไม่มีการแต่งค่าเริ่มต้น/เสียงเฉพาะสำหรับโมเดลนี้"
            ],
            "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": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "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\n: \"${AILOOT_VOICE:?Set the actual documented input value}\"\nexport AILOOT_VOICE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/drama-3', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': '${ACTUAL_SUPPORTED_VOICE}'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nrequest['voice']=os.environ['AILOOT_VOICE']\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": {
            "audio_input_utf8_byte": 2e-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": "per input UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/drama-3",
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Drama 3",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Drama 3 เปลี่ยนบทที่เขียนเป็นคำพูดพร้อมการกำกับการแสดง กำหนดอารมณ์และวิธีถ่ายทอดด้วยคำแนะนำภาษาทั่วไป เพิ่มช่วงหยุดและเสียง กำกับการออกเสียง และสร้างฉากที่มีผู้พูดหลายคน กระบวนการสร้างคำพูดที่เผยแพร่รองรับมากกว่า 80 ภาษา รวมถึงการเปลี่ยนภาษาภายในประโยคเดียว"
  },
  "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": "Drama 3 เปลี่ยนบทที่เขียนเป็นคำพูดพร้อมการกำกับการแสดง กำหนดอารมณ์และวิธีถ่ายทอดด้วยคำแนะนำภาษาทั่วไป เพิ่มช่วงหยุดและเสียง กำกับการออกเสียง และสร้างฉากที่มีผู้พูดหลายคน กระบวนการสร้างคำพูดที่เผยแพร่รองรับมากกว่า 80 ภาษา รวมถึงการเปลี่ยนภาษาภายในประโยคเดียว",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "2e0a9551ff35ebeff81e1c59c565b27797ac021928e7f52c86bcbca17d13de0e",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "816bcf614f89b8351259c52f5678290d7638783a9843803dec145e1ee8a49b4d"
}
