{
  "aboutHtml": "<p>Qwen-Audio-3.0-TTS-Flash แปลงบทพูดที่ให้มาเป็นเสียง โดยรุ่น Flash มุ่งเน้นการโต้ตอบแบบเรียลไทม์ Qwen ระบุว่าการใช้งานหลักคือผู้ช่วยเสียง บทสนทนาแบบโต้ตอบ และบริการลูกค้าอัจฉริยะ เมื่อเทียบกับเวอร์ชันก่อน ผู้พัฒนาอธิบายว่ารองรับภาษาที่มีทรัพยากรจำกัดและภาษาถิ่นจีนได้กว้างขึ้น ถ่ายทอดภาษาถิ่นได้สมจริงขึ้น และควบคุมอารมณ์ น้ำเสียง บุคลิก ความเร็ว ความดัง และรูปแบบการพูดได้มากขึ้น อีกทั้งรายงานว่ามีความชัดเจนและความทนทานดีขึ้นในสภาพเสียงที่มีสัญญาณรบกวนหรือเสียงก้อง นี่คือการสังเคราะห์ข้อความเป็นเสียง ไม่ใช่การรู้จำเสียงพูดขาเข้าหรือโมเดลสนทนาด้วยเสียง</p><p>Flash ให้ความสำคัญกับการเริ่มส่งเสียงพูดในระหว่างการโต้ตอบ Qwen รายงานว่าความหน่วงของแพ็กเก็ตแรกสำหรับการสังเคราะห์แบบเรียลไทม์ของโมเดลนี้อยู่ภายใน 200 มิลลิวินาที คู่มือการใช้งานยังระบุว่าการสร้างการเชื่อมต่อครั้งแรกมีส่วนต่อความหน่วงที่วัดได้ในการส่งครั้งแรก เตรียมคำที่จะพูดแยกจากลักษณะการพูดที่ต้องการ สำหรับคำตอบของผู้ช่วยเสียง ตัวอย่างคำสั่งอาจรวมคำตอบกระชับเข้ากับคำสั่งให้พูดอย่างสงบและชัดเจน ผลลัพธ์ที่เกี่ยวข้องคือเสียงพูดที่สร้างจากข้อความนั้น โดยแอปพลิเคชันจัดการการเล่นเสียงและบทสนทนารอบข้าง</p><p>รายการเสียงระบบของผู้พัฒนามีตัวเลือกเฉพาะโมเดล เช่น Long An Feng Yue สำหรับการพูดเป็นธรรมชาติและเป็นมิตร และ Long An Xiao Xin สำหรับการพูดเป็นมิตรและมีชีวิตชีวา โดยทั้งสองเสียงระบุว่ารองรับภาษาจีนกลางและภาษาอังกฤษ นอกจากนี้ยังมีเสียงภาษาอังกฤษ เช่น loongmary ที่มีสำเนียงอังกฤษ และ loongjohn ที่มีสำเนียงอเมริกันสงบและเป็นมิตร แต่ละโมเดลยังมีเสียงพื้นฐานมากกว่า 500 เสียง Qwen แนะนำให้เริ่มจากเสียงระบบเพื่อความสม่ำเสมอ และประเมินเสียงตัวอย่างก่อนเลือกเสียงพื้นฐาน เสียงต้องเป็นของโมเดลที่เลือก และบทพูดต้องใช้ภาษาที่เสียงนั้นรองรับ</p><p>เสียงโคลนขยายขอบเขตภาษาที่ระบุในเอกสารให้ครอบคลุมภาษาจีน อังกฤษ ญี่ปุ่น เกาหลี รัสเซีย ฝรั่งเศส เยอรมัน โปรตุเกส ไทย อินโดนีเซีย เวียดนาม สเปน อิตาลี มลายู ฟิลิปปินส์ และอาหรับ สำหรับภาษาจีน ครอบคลุมจีนกลาง กวางตุ้ง ฉงชิ่ง ภาคตะวันออกเฉียงเหนือ กานซู่ กุ้ยโจว เจ้อเจียง เหอเป่ย เหอหนาน หูเป่ย หูหนาน เจียงซี หนิงโป หนิงเซี่ย ชิงเต่า ส่านซี (Shaanxi) ซานซี (Shanxi) ซานตง เซี่ยงไฮ้ เสฉวน และยูนนาน โดยเลือกภาษาถิ่นผ่านคำสั่ง ตารางโมเดลระบุว่ารองรับการโคลนเสียงจากตัวอย่าง และแยกความสามารถนี้จากการสร้างเสียงใหม่ด้วยคำบรรยายข้อความเพียงอย่างเดียว ซึ่งรุ่นนี้ไม่รองรับ</p><p>สำหรับการโคลน ผู้พัฒนาแนะนำเสียงบันทึกยาว 10–20 วินาที โดยยาวได้สูงสุด 60 วินาทีและขนาดไฟล์ไม่เกิน 10 MB รูปแบบไฟล์อ้างอิงที่รองรับคือ WAV แบบ 16 บิต MP3 และ M4A ที่มีอัตราสุ่มตัวอย่างอย่างน้อย 16 kHz เสียงบันทึกต้องมีเสียงพูดต่อเนื่องชัดเจนอย่างน้อยห้าวินาที และช่วงหยุดอื่นไม่ควรยาวเกินสองวินาที หลีกเลี่ยงเสียงพื้นหลัง เสียงคนอื่น และการร้องเพลง รองรับสเตอริโอ แต่ประมวลผลเฉพาะช่องแรก กระบวนการโคลนจะคืนตัวระบุเสียงที่ผูกกับโมเดลเป้าหมายที่แน่นอน และใช้ตัวระบุนั้นสังเคราะห์เมื่อเสียงพร้อมใช้งาน เสียงบันทึกเดียวกันต้องสร้างเสียงโคลนแยกสำหรับ Flash และ Plus</p><p>คำสั่งภาษาธรรมชาติควบคุมวิธีการพูดได้ทั้งเสียงระบบและเสียงโคลน อธิบายคุณสมบัติที่ได้ยิน เช่น น้ำเสียงอ่อนโยน การออกเสียงชัดเจน หรือจังหวะที่ช้าลงเล็กน้อย แท็กภายในข้อความให้การควบคุมอีกแบบหนึ่ง: [empathetic] หรือ [serious] กำหนดสไตล์ให้ข้อความถัดไป ส่วน [laughing] หรือ [sighing] แทรกเอฟเฟกต์เสียงในตำแหน่งเฉพาะ แท็กควบคุมมีผลจนกว่าจะพบแท็กควบคุมอื่นหรือมีการแบ่งประโยคโดยอัตโนมัติ แท็กอารมณ์และการแสดงออกทางภาษาที่หลากหลายเหล่านี้มีเอกสารรองรับเฉพาะสตรีมมิงทางเดียว ไม่ใช่โหมดป้อนข้อความสองทาง เตรียมประโยคที่สื่ออารมณ์ในโหมดที่เหมาะกับการควบคุมเหล่านั้น</p><p>อินเทอร์เฟซเสียงพูดของผู้พัฒนารองรับ PCM, WAV, MP3 และ Opus อัตราสุ่มตัวอย่างที่ระบุคือ 8,000, 16,000, 22,050, 24,000, 44,100 และ 48,000 Hz โดยค่าเริ่มต้นคือ MP3 และ 22,050 Hz ความดังอยู่ระหว่าง 0 ถึง 100 ส่วนอัตราการพูดและระดับเสียงสูงต่ำต่างอยู่ระหว่าง 0.5 ถึง 2.0 MP3 และ Opus ยังมีการตั้งค่าบิตเรตตั้งแต่ 6 ถึง 510 kbps เลือกรูปแบบและอัตราสุ่มตัวอย่างให้ตรงกับโปรแกรมเล่นเสียงหรือกระบวนการประมวลผลที่ต้องการ สำหรับแอปพลิเคชันแบบโต้ตอบ ผู้พัฒนาระบุเฟรมเสียงแบบสตรีมมิงและข้อมูลกำกับประโยค พร้อมการประทับเวลาระดับคำในผลลัพธ์สตรีมมิงสำหรับเสียงที่เข้าเงื่อนไข รวมถึงเสียงโคลน</p><p>โปรโตคอลข้อความ WebSocket ที่ระบุในเอกสารรับข้อความได้สูงสุด 20,000 อักขระต่อหนึ่งข้อความ และสะสมได้ 200,000 อักขระต่อหนึ่งงาน โดยช่วงเวลาระหว่างการส่งต้องไม่เกิน 23 วินาที ข้อกำหนดเหล่านี้เป็นขีดจำกัดของโปรโตคอลผู้พัฒนา แยกจากขีดจำกัดสากลด้านระยะเวลาเสียงขาออกของโมเดล รองรับการยกเลิกช่วงสังเคราะห์ปัจจุบันและเริ่มงานถัดไปบนการเชื่อมต่อเดิม เก็บส่วนข้อความตามลำดับที่ต้องการให้พูด และจบการป้อนเมื่อบทพูดครบ สำหรับการเตรียมการออกเสียง ผู้พัฒนาระบุคำใบ้ภาษาปลายทาง คำกำกับพินอิน และการแทนที่ข้อความ ซึ่งมีประโยชน์เมื่อตัวเลข คำย่อ หรือสัญลักษณ์ถูกออกเสียงผิดไปจากที่คาด</p><p>SSML เป็นทางเลือกการใส่มาร์กอัปแยกต่างหากที่มีเงื่อนไขเรื่องเสียงและโหมดการโต้ตอบ: Qwen ระบุไว้สำหรับเสียงโคลน ด้วยการเรียกแบบไม่สตรีมมิงหรือสตรีมมิงทางเดียว และส่งข้อความครั้งเดียวเมื่อเปิดใช้ SSML ไม่ควรถือว่ารองรับเสียงที่ตั้งไว้ล่วงหน้าทุกเสียงหรือสตรีมสองทาง สำหรับบทสนทนาทั่วไป ให้เริ่มจากเสียงที่เข้ากันได้ บทพูดที่ชัดเจนและพร้อมอ่าน และคำสั่งการพูดที่เฉพาะเจาะจง แล้วเพิ่มการควบคุมการออกเสียงหรือการแสดงอารมณ์เฉพาะจุดเมื่อจำเป็น วิธีนี้คงให้โปรไฟล์ Flash มุ่งเน้นเสียงพูดตอบสนองรวดเร็วจากข้อความที่เตรียมไว้ แทนที่จะปะปนกับความสามารถของโมเดลเสียง Qwen อื่น</p>",
  "aboutText": "Qwen-Audio-3.0-TTS-Flash แปลงบทพูดที่ให้มาเป็นเสียง โดยรุ่น Flash มุ่งเน้นการโต้ตอบแบบเรียลไทม์ Qwen ระบุว่าการใช้งานหลักคือผู้ช่วยเสียง บทสนทนาแบบโต้ตอบ และบริการลูกค้าอัจฉริยะ เมื่อเทียบกับเวอร์ชันก่อน ผู้พัฒนาอธิบายว่ารองรับภาษาที่มีทรัพยากรจำกัดและภาษาถิ่นจีนได้กว้างขึ้น ถ่ายทอดภาษาถิ่นได้สมจริงขึ้น และควบคุมอารมณ์ น้ำเสียง บุคลิก ความเร็ว ความดัง และรูปแบบการพูดได้มากขึ้น อีกทั้งรายงานว่ามีความชัดเจนและความทนทานดีขึ้นในสภาพเสียงที่มีสัญญาณรบกวนหรือเสียงก้อง นี่คือการสังเคราะห์ข้อความเป็นเสียง ไม่ใช่การรู้จำเสียงพูดขาเข้าหรือโมเดลสนทนาด้วยเสียง\n\nFlash ให้ความสำคัญกับการเริ่มส่งเสียงพูดในระหว่างการโต้ตอบ Qwen รายงานว่าความหน่วงของแพ็กเก็ตแรกสำหรับการสังเคราะห์แบบเรียลไทม์ของโมเดลนี้อยู่ภายใน 200 มิลลิวินาที คู่มือการใช้งานยังระบุว่าการสร้างการเชื่อมต่อครั้งแรกมีส่วนต่อความหน่วงที่วัดได้ในการส่งครั้งแรก เตรียมคำที่จะพูดแยกจากลักษณะการพูดที่ต้องการ สำหรับคำตอบของผู้ช่วยเสียง ตัวอย่างคำสั่งอาจรวมคำตอบกระชับเข้ากับคำสั่งให้พูดอย่างสงบและชัดเจน ผลลัพธ์ที่เกี่ยวข้องคือเสียงพูดที่สร้างจากข้อความนั้น โดยแอปพลิเคชันจัดการการเล่นเสียงและบทสนทนารอบข้าง\n\nรายการเสียงระบบของผู้พัฒนามีตัวเลือกเฉพาะโมเดล เช่น Long An Feng Yue สำหรับการพูดเป็นธรรมชาติและเป็นมิตร และ Long An Xiao Xin สำหรับการพูดเป็นมิตรและมีชีวิตชีวา โดยทั้งสองเสียงระบุว่ารองรับภาษาจีนกลางและภาษาอังกฤษ นอกจากนี้ยังมีเสียงภาษาอังกฤษ เช่น loongmary ที่มีสำเนียงอังกฤษ และ loongjohn ที่มีสำเนียงอเมริกันสงบและเป็นมิตร แต่ละโมเดลยังมีเสียงพื้นฐานมากกว่า 500 เสียง Qwen แนะนำให้เริ่มจากเสียงระบบเพื่อความสม่ำเสมอ และประเมินเสียงตัวอย่างก่อนเลือกเสียงพื้นฐาน เสียงต้องเป็นของโมเดลที่เลือก และบทพูดต้องใช้ภาษาที่เสียงนั้นรองรับ\n\nเสียงโคลนขยายขอบเขตภาษาที่ระบุในเอกสารให้ครอบคลุมภาษาจีน อังกฤษ ญี่ปุ่น เกาหลี รัสเซีย ฝรั่งเศส เยอรมัน โปรตุเกส ไทย อินโดนีเซีย เวียดนาม สเปน อิตาลี มลายู ฟิลิปปินส์ และอาหรับ สำหรับภาษาจีน ครอบคลุมจีนกลาง กวางตุ้ง ฉงชิ่ง ภาคตะวันออกเฉียงเหนือ กานซู่ กุ้ยโจว เจ้อเจียง เหอเป่ย เหอหนาน หูเป่ย หูหนาน เจียงซี หนิงโป หนิงเซี่ย ชิงเต่า ส่านซี (Shaanxi) ซานซี (Shanxi) ซานตง เซี่ยงไฮ้ เสฉวน และยูนนาน โดยเลือกภาษาถิ่นผ่านคำสั่ง ตารางโมเดลระบุว่ารองรับการโคลนเสียงจากตัวอย่าง และแยกความสามารถนี้จากการสร้างเสียงใหม่ด้วยคำบรรยายข้อความเพียงอย่างเดียว ซึ่งรุ่นนี้ไม่รองรับ\n\nสำหรับการโคลน ผู้พัฒนาแนะนำเสียงบันทึกยาว 10–20 วินาที โดยยาวได้สูงสุด 60 วินาทีและขนาดไฟล์ไม่เกิน 10 MB รูปแบบไฟล์อ้างอิงที่รองรับคือ WAV แบบ 16 บิต MP3 และ M4A ที่มีอัตราสุ่มตัวอย่างอย่างน้อย 16 kHz เสียงบันทึกต้องมีเสียงพูดต่อเนื่องชัดเจนอย่างน้อยห้าวินาที และช่วงหยุดอื่นไม่ควรยาวเกินสองวินาที หลีกเลี่ยงเสียงพื้นหลัง เสียงคนอื่น และการร้องเพลง รองรับสเตอริโอ แต่ประมวลผลเฉพาะช่องแรก กระบวนการโคลนจะคืนตัวระบุเสียงที่ผูกกับโมเดลเป้าหมายที่แน่นอน และใช้ตัวระบุนั้นสังเคราะห์เมื่อเสียงพร้อมใช้งาน เสียงบันทึกเดียวกันต้องสร้างเสียงโคลนแยกสำหรับ Flash และ Plus\n\nคำสั่งภาษาธรรมชาติควบคุมวิธีการพูดได้ทั้งเสียงระบบและเสียงโคลน อธิบายคุณสมบัติที่ได้ยิน เช่น น้ำเสียงอ่อนโยน การออกเสียงชัดเจน หรือจังหวะที่ช้าลงเล็กน้อย แท็กภายในข้อความให้การควบคุมอีกแบบหนึ่ง: [empathetic] หรือ [serious] กำหนดสไตล์ให้ข้อความถัดไป ส่วน [laughing] หรือ [sighing] แทรกเอฟเฟกต์เสียงในตำแหน่งเฉพาะ แท็กควบคุมมีผลจนกว่าจะพบแท็กควบคุมอื่นหรือมีการแบ่งประโยคโดยอัตโนมัติ แท็กอารมณ์และการแสดงออกทางภาษาที่หลากหลายเหล่านี้มีเอกสารรองรับเฉพาะสตรีมมิงทางเดียว ไม่ใช่โหมดป้อนข้อความสองทาง เตรียมประโยคที่สื่ออารมณ์ในโหมดที่เหมาะกับการควบคุมเหล่านั้น\n\nอินเทอร์เฟซเสียงพูดของผู้พัฒนารองรับ PCM, WAV, MP3 และ Opus อัตราสุ่มตัวอย่างที่ระบุคือ 8,000, 16,000, 22,050, 24,000, 44,100 และ 48,000 Hz โดยค่าเริ่มต้นคือ MP3 และ 22,050 Hz ความดังอยู่ระหว่าง 0 ถึง 100 ส่วนอัตราการพูดและระดับเสียงสูงต่ำต่างอยู่ระหว่าง 0.5 ถึง 2.0 MP3 และ Opus ยังมีการตั้งค่าบิตเรตตั้งแต่ 6 ถึง 510 kbps เลือกรูปแบบและอัตราสุ่มตัวอย่างให้ตรงกับโปรแกรมเล่นเสียงหรือกระบวนการประมวลผลที่ต้องการ สำหรับแอปพลิเคชันแบบโต้ตอบ ผู้พัฒนาระบุเฟรมเสียงแบบสตรีมมิงและข้อมูลกำกับประโยค พร้อมการประทับเวลาระดับคำในผลลัพธ์สตรีมมิงสำหรับเสียงที่เข้าเงื่อนไข รวมถึงเสียงโคลน\n\nโปรโตคอลข้อความ WebSocket ที่ระบุในเอกสารรับข้อความได้สูงสุด 20,000 อักขระต่อหนึ่งข้อความ และสะสมได้ 200,000 อักขระต่อหนึ่งงาน โดยช่วงเวลาระหว่างการส่งต้องไม่เกิน 23 วินาที ข้อกำหนดเหล่านี้เป็นขีดจำกัดของโปรโตคอลผู้พัฒนา แยกจากขีดจำกัดสากลด้านระยะเวลาเสียงขาออกของโมเดล รองรับการยกเลิกช่วงสังเคราะห์ปัจจุบันและเริ่มงานถัดไปบนการเชื่อมต่อเดิม เก็บส่วนข้อความตามลำดับที่ต้องการให้พูด และจบการป้อนเมื่อบทพูดครบ สำหรับการเตรียมการออกเสียง ผู้พัฒนาระบุคำใบ้ภาษาปลายทาง คำกำกับพินอิน และการแทนที่ข้อความ ซึ่งมีประโยชน์เมื่อตัวเลข คำย่อ หรือสัญลักษณ์ถูกออกเสียงผิดไปจากที่คาด\n\nSSML เป็นทางเลือกการใส่มาร์กอัปแยกต่างหากที่มีเงื่อนไขเรื่องเสียงและโหมดการโต้ตอบ: Qwen ระบุไว้สำหรับเสียงโคลน ด้วยการเรียกแบบไม่สตรีมมิงหรือสตรีมมิงทางเดียว และส่งข้อความครั้งเดียวเมื่อเปิดใช้ SSML ไม่ควรถือว่ารองรับเสียงที่ตั้งไว้ล่วงหน้าทุกเสียงหรือสตรีมสองทาง สำหรับบทสนทนาทั่วไป ให้เริ่มจากเสียงที่เข้ากันได้ บทพูดที่ชัดเจนและพร้อมอ่าน และคำสั่งการพูดที่เฉพาะเจาะจง แล้วเพิ่มการควบคุมการออกเสียงหรือการแสดงอารมณ์เฉพาะจุดเมื่อจำเป็น วิธีนี้คงให้โปรไฟล์ Flash มุ่งเน้นเสียงพูดตอบสนองรวดเร็วจากข้อความที่เตรียมไว้ แทนที่จะปะปนกับความสามารถของโมเดลเสียง Qwen อื่น",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4cb82be21ee8d676d0b5e266a48bf61d185cda9b8daf50d52ef4112ddc168944",
    "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\">Al</span><h2 id=\"sheet-title\">Qwen: Qwen-Audio-3.0-TTS Flash</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Alibaba /</span><code>qwen/qwen-audio-3.0-tts-flash</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|qwen%2Fqwen-audio-3.0-tts-flash\">การสังเคราะห์เสียงพูด</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\">Qwen-Audio-3.0-TTS-Flash เป็นโมเดลแปลงข้อความเป็นเสียงพูดของ Qwen ที่มุ่งเน้นผู้ช่วยเสียงตอบสนองรวดเร็วและบทสนทนาแบบโต้ตอบ โดยรวมการสังเคราะห์แบบสตรีมมิง เสียงที่ตั้งไว้ล่วงหน้าหรือเสียงโคลนเฉพาะโมเดล และคำสั่งหรือแท็กสำหรับเสียงพูดที่สื่ออารมณ์</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>Qwen-Audio-3.0-TTS-Flash แปลงบทพูดที่ให้มาเป็นเสียง โดยรุ่น Flash มุ่งเน้นการโต้ตอบแบบเรียลไทม์ Qwen ระบุว่าการใช้งานหลักคือผู้ช่วยเสียง บทสนทนาแบบโต้ตอบ และบริการลูกค้าอัจฉริยะ เมื่อเทียบกับเวอร์ชันก่อน ผู้พัฒนาอธิบายว่ารองรับภาษาที่มีทรัพยากรจำกัดและภาษาถิ่นจีนได้กว้างขึ้น ถ่ายทอดภาษาถิ่นได้สมจริงขึ้น และควบคุมอารมณ์ น้ำเสียง บุคลิก ความเร็ว ความดัง และรูปแบบการพูดได้มากขึ้น อีกทั้งรายงานว่ามีความชัดเจนและความทนทานดีขึ้นในสภาพเสียงที่มีสัญญาณรบกวนหรือเสียงก้อง นี่คือการสังเคราะห์ข้อความเป็นเสียง ไม่ใช่การรู้จำเสียงพูดขาเข้าหรือโมเดลสนทนาด้วยเสียง</p><p>Flash ให้ความสำคัญกับการเริ่มส่งเสียงพูดในระหว่างการโต้ตอบ Qwen รายงานว่าความหน่วงของแพ็กเก็ตแรกสำหรับการสังเคราะห์แบบเรียลไทม์ของโมเดลนี้อยู่ภายใน 200 มิลลิวินาที คู่มือการใช้งานยังระบุว่าการสร้างการเชื่อมต่อครั้งแรกมีส่วนต่อความหน่วงที่วัดได้ในการส่งครั้งแรก เตรียมคำที่จะพูดแยกจากลักษณะการพูดที่ต้องการ สำหรับคำตอบของผู้ช่วยเสียง ตัวอย่างคำสั่งอาจรวมคำตอบกระชับเข้ากับคำสั่งให้พูดอย่างสงบและชัดเจน ผลลัพธ์ที่เกี่ยวข้องคือเสียงพูดที่สร้างจากข้อความนั้น โดยแอปพลิเคชันจัดการการเล่นเสียงและบทสนทนารอบข้าง</p><p>รายการเสียงระบบของผู้พัฒนามีตัวเลือกเฉพาะโมเดล เช่น Long An Feng Yue สำหรับการพูดเป็นธรรมชาติและเป็นมิตร และ Long An Xiao Xin สำหรับการพูดเป็นมิตรและมีชีวิตชีวา โดยทั้งสองเสียงระบุว่ารองรับภาษาจีนกลางและภาษาอังกฤษ นอกจากนี้ยังมีเสียงภาษาอังกฤษ เช่น loongmary ที่มีสำเนียงอังกฤษ และ loongjohn ที่มีสำเนียงอเมริกันสงบและเป็นมิตร แต่ละโมเดลยังมีเสียงพื้นฐานมากกว่า 500 เสียง Qwen แนะนำให้เริ่มจากเสียงระบบเพื่อความสม่ำเสมอ และประเมินเสียงตัวอย่างก่อนเลือกเสียงพื้นฐาน เสียงต้องเป็นของโมเดลที่เลือก และบทพูดต้องใช้ภาษาที่เสียงนั้นรองรับ</p><p>เสียงโคลนขยายขอบเขตภาษาที่ระบุในเอกสารให้ครอบคลุมภาษาจีน อังกฤษ ญี่ปุ่น เกาหลี รัสเซีย ฝรั่งเศส เยอรมัน โปรตุเกส ไทย อินโดนีเซีย เวียดนาม สเปน อิตาลี มลายู ฟิลิปปินส์ และอาหรับ สำหรับภาษาจีน ครอบคลุมจีนกลาง กวางตุ้ง ฉงชิ่ง ภาคตะวันออกเฉียงเหนือ กานซู่ กุ้ยโจว เจ้อเจียง เหอเป่ย เหอหนาน หูเป่ย หูหนาน เจียงซี หนิงโป หนิงเซี่ย ชิงเต่า ส่านซี (Shaanxi) ซานซี (Shanxi) ซานตง เซี่ยงไฮ้ เสฉวน และยูนนาน โดยเลือกภาษาถิ่นผ่านคำสั่ง ตารางโมเดลระบุว่ารองรับการโคลนเสียงจากตัวอย่าง และแยกความสามารถนี้จากการสร้างเสียงใหม่ด้วยคำบรรยายข้อความเพียงอย่างเดียว ซึ่งรุ่นนี้ไม่รองรับ</p><p>สำหรับการโคลน ผู้พัฒนาแนะนำเสียงบันทึกยาว 10–20 วินาที โดยยาวได้สูงสุด 60 วินาทีและขนาดไฟล์ไม่เกิน 10 MB รูปแบบไฟล์อ้างอิงที่รองรับคือ WAV แบบ 16 บิต MP3 และ M4A ที่มีอัตราสุ่มตัวอย่างอย่างน้อย 16 kHz เสียงบันทึกต้องมีเสียงพูดต่อเนื่องชัดเจนอย่างน้อยห้าวินาที และช่วงหยุดอื่นไม่ควรยาวเกินสองวินาที หลีกเลี่ยงเสียงพื้นหลัง เสียงคนอื่น และการร้องเพลง รองรับสเตอริโอ แต่ประมวลผลเฉพาะช่องแรก กระบวนการโคลนจะคืนตัวระบุเสียงที่ผูกกับโมเดลเป้าหมายที่แน่นอน และใช้ตัวระบุนั้นสังเคราะห์เมื่อเสียงพร้อมใช้งาน เสียงบันทึกเดียวกันต้องสร้างเสียงโคลนแยกสำหรับ Flash และ Plus</p><p>คำสั่งภาษาธรรมชาติควบคุมวิธีการพูดได้ทั้งเสียงระบบและเสียงโคลน อธิบายคุณสมบัติที่ได้ยิน เช่น น้ำเสียงอ่อนโยน การออกเสียงชัดเจน หรือจังหวะที่ช้าลงเล็กน้อย แท็กภายในข้อความให้การควบคุมอีกแบบหนึ่ง: [empathetic] หรือ [serious] กำหนดสไตล์ให้ข้อความถัดไป ส่วน [laughing] หรือ [sighing] แทรกเอฟเฟกต์เสียงในตำแหน่งเฉพาะ แท็กควบคุมมีผลจนกว่าจะพบแท็กควบคุมอื่นหรือมีการแบ่งประโยคโดยอัตโนมัติ แท็กอารมณ์และการแสดงออกทางภาษาที่หลากหลายเหล่านี้มีเอกสารรองรับเฉพาะสตรีมมิงทางเดียว ไม่ใช่โหมดป้อนข้อความสองทาง เตรียมประโยคที่สื่ออารมณ์ในโหมดที่เหมาะกับการควบคุมเหล่านั้น</p><p>อินเทอร์เฟซเสียงพูดของผู้พัฒนารองรับ PCM, WAV, MP3 และ Opus อัตราสุ่มตัวอย่างที่ระบุคือ 8,000, 16,000, 22,050, 24,000, 44,100 และ 48,000 Hz โดยค่าเริ่มต้นคือ MP3 และ 22,050 Hz ความดังอยู่ระหว่าง 0 ถึง 100 ส่วนอัตราการพูดและระดับเสียงสูงต่ำต่างอยู่ระหว่าง 0.5 ถึง 2.0 MP3 และ Opus ยังมีการตั้งค่าบิตเรตตั้งแต่ 6 ถึง 510 kbps เลือกรูปแบบและอัตราสุ่มตัวอย่างให้ตรงกับโปรแกรมเล่นเสียงหรือกระบวนการประมวลผลที่ต้องการ สำหรับแอปพลิเคชันแบบโต้ตอบ ผู้พัฒนาระบุเฟรมเสียงแบบสตรีมมิงและข้อมูลกำกับประโยค พร้อมการประทับเวลาระดับคำในผลลัพธ์สตรีมมิงสำหรับเสียงที่เข้าเงื่อนไข รวมถึงเสียงโคลน</p><p>โปรโตคอลข้อความ WebSocket ที่ระบุในเอกสารรับข้อความได้สูงสุด 20,000 อักขระต่อหนึ่งข้อความ และสะสมได้ 200,000 อักขระต่อหนึ่งงาน โดยช่วงเวลาระหว่างการส่งต้องไม่เกิน 23 วินาที ข้อกำหนดเหล่านี้เป็นขีดจำกัดของโปรโตคอลผู้พัฒนา แยกจากขีดจำกัดสากลด้านระยะเวลาเสียงขาออกของโมเดล รองรับการยกเลิกช่วงสังเคราะห์ปัจจุบันและเริ่มงานถัดไปบนการเชื่อมต่อเดิม เก็บส่วนข้อความตามลำดับที่ต้องการให้พูด และจบการป้อนเมื่อบทพูดครบ สำหรับการเตรียมการออกเสียง ผู้พัฒนาระบุคำใบ้ภาษาปลายทาง คำกำกับพินอิน และการแทนที่ข้อความ ซึ่งมีประโยชน์เมื่อตัวเลข คำย่อ หรือสัญลักษณ์ถูกออกเสียงผิดไปจากที่คาด</p><p>SSML เป็นทางเลือกการใส่มาร์กอัปแยกต่างหากที่มีเงื่อนไขเรื่องเสียงและโหมดการโต้ตอบ: Qwen ระบุไว้สำหรับเสียงโคลน ด้วยการเรียกแบบไม่สตรีมมิงหรือสตรีมมิงทางเดียว และส่งข้อความครั้งเดียวเมื่อเปิดใช้ SSML ไม่ควรถือว่ารองรับเสียงที่ตั้งไว้ล่วงหน้าทุกเสียงหรือสตรีมสองทาง สำหรับบทสนทนาทั่วไป ให้เริ่มจากเสียงที่เข้ากันได้ บทพูดที่ชัดเจนและพร้อมอ่าน และคำสั่งการพูดที่เฉพาะเจาะจง แล้วเพิ่มการควบคุมการออกเสียงหรือการแสดงอารมณ์เฉพาะจุดเมื่อจำเป็น วิธีนี้คงให้โปรไฟล์ Flash มุ่งเน้นเสียงพูดตอบสนองรวดเร็วจากข้อความที่เตรียมไว้ แทนที่จะปะปนกับความสามารถของโมเดลเสียง Qwen อื่น</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><div><dt>รูปแบบเอาต์พุต</dt><dd>mp3</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 data-parameter-availability=\"source_interface\"><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>qwen/qwen-audio-3.0-tts-flash</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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><div>หน่วย: อักขระ Unicode</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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>loongjohn, longanhuan_v3.6</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><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</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>ชุดผสมของสื่ออินพุต</summary><p class=\"note-s\"><b>text_to_speech</b> · จำเป็น: input</p></details><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, response_format</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>voice_ids</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>loongjohn, longanhuan_v3.6</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>response_format</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>mp3</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>max_input_characters</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>null</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>other_options</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>input</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ข้อความ UTF-8 ที่ตรงตามต้นฉบับ นับอักขระ Unicode โดยไม่ปรับรูปแบบมาตรฐาน</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><p class=\"note-s\">เลือกเสียงที่ตรงตามโปรไฟล์ของโมเดลนี้</p><p class=\"note-s\">อักขระขาเข้าและวินาทีเสียงเป็นหน่วยวัดคนละแบบ</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><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>—</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>Ultra</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณที่ใช้คิดค่าบริการ\"><span class=\"card-cell-label\">ปริมาณที่ใช้คิดค่าบริการ</span>นับแต่ละโค้ดพอยต์ Unicode เป็นหนึ่งอักขระ รวมถึงอักษรฮั่น</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.03</b> <span class=\"price-unit\">ต่ออักขระอินพุต 1K ตัว</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>รายละเอียดอัตราอ้างอิง</h4><p class=\"note-s\">ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Qwen: Qwen-Audio-3.0-TTS Flash</summary><h4>ราคาตามการตั้งค่า</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>การตั้งค่า</th><th>เงื่อนไขคิดค่าบริการ</th><th>ค่าบริการ</th></tr></thead><tbody><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>Qwen: Qwen-Audio-3.0-TTS Flash · การตั้งค่าเริ่มต้น</th><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>US$0.00003</b> <span class=\"price-unit\">ต่ออักขระอินพุต</span></div></td></tr></tbody></table></div></details></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-2360-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2360-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</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-2360-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2360-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;qwen/qwen-audio-3.0-tts-flash&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;loongjohn&quot;, &quot;longanhuan_v3.6&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\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 speech.mp3\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\">mp3</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-2361-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2361-panel-0\" aria-selected=\"true\" tabindex=\"0\">คลังสื่อ</button><button class=\"cg-tab\" id=\"model-code-2361-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2361-panel-1\" aria-selected=\"false\" tabindex=\"-1\">สถานะงาน</button><button class=\"cg-tab\" id=\"model-code-2361-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2361-panel-2\" aria-selected=\"false\" tabindex=\"-1\">รายละเอียดไฟล์สื่อ</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-2361-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2361-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 media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2361-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2361-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2361-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2361-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\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\">เก็บผลลัพธ์ไบนารีและส่วนหัวให้ครบถ้วน หากได้รับ JSON/ผลลัพธ์หลายรายการ ให้เก็บข้อมูลทุกรายการและดึงไฟล์สื่อจาก URL แบบลงนามทุกรายการที่ได้รับจริง</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>bytes</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>ข้อผิดพลาดและขั้นตอนถัดไป</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>การตอบกลับ</th><th>เงื่อนไข</th><th>ขั้นตอนถัดไป</th></tr></thead><tbody><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่</td></tr><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span><code>server_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>การตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>เก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=qwen%2Fqwen-audio-3.0-tts-flash&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-flash&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-flash</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=qwen%2Fqwen-audio-3.0-tts-flash&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-flash&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-flash</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-flash",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "การตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์",
                "http_status": null,
                "recovery": "เก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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": "เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ"
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "เก็บผลลัพธ์ไบนารีและส่วนหัวให้ครบถ้วน หากได้รับ JSON/ผลลัพธ์หลายรายการ ให้เก็บข้อมูลทุกรายการและดึงไฟล์สื่อจาก URL แบบลงนามทุกรายการที่ได้รับจริง",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-flash"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "อักขระ Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "loongjohn",
                  "longanhuan_v3.6"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "เลือกเสียงที่ตรงตามโปรไฟล์ของโมเดลนี้",
            "อักขระขาเข้าและวินาทีเสียงเป็นหน่วยวัดคนละแบบ"
          ],
          "input": {
            "content_type": "application/json",
            "input": "ข้อความ UTF-8 ที่ตรงตามต้นฉบับ นับอักขระ Unicode โดยไม่ปรับรูปแบบมาตรฐาน",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "loongjohn",
              "longanhuan_v3.6"
            ]
          },
          "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": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "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": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "1005b0881c111e8d7cb6",
            "label": "Qwen: Qwen-Audio-3.0-TTS Flash",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "การตั้งค่าเริ่มต้น"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Flash · การตั้งค่าเริ่มต้น",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "723fd9e7b35c0e460956bc11",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-flash\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"loongjohn\", \"longanhuan_v3.6\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\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 speech.mp3\n",
            "label": "curl",
            "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 media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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_character": 3e-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": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    }
  ],
  "model_id": "qwen/qwen-audio-3.0-tts-flash",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "fd5380b66df752cd445bd4cd0233bd1f6ac98421f80ce711d33ec14edfdd4424",
    "input_html_sha256": "ba3b2c4e764ff57415c8ca6cae753dd261ef07c8698208f1964a934b4df6d4d7",
    "private_audit_sha256": "b6e39d4e6fdde39dc8af0a3c3409e6add8756c846c11187bb6b015ae6366440e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/qwen-qwen-audio-3-0-tts-flash/",
    "description": "Qwen-Audio-3.0-TTS-Flash เป็นโมเดลแปลงข้อความเป็นเสียงพูดของ Qwen ที่มุ่งเน้นผู้ช่วยเสียงตอบสนองรวดเร็วและบทสนทนาแบบโต้ตอบ โดยรวมการสังเคราะห์แบบสตรีมมิง เสียงที่ตั้งไว้ล่วงหน้าหรือเสียงโคลนเฉพาะโมเดล และคำสั่งหรือแท็กสำหรับเสียงพูดที่สื่ออารมณ์",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/qwen-qwen-audio-3-0-tts-flash/index.md",
    "title": "Qwen: Qwen-Audio-3.0-TTS Flash — Ailoot",
    "url": "https://ailoot.ai/models/th/qwen-qwen-audio-3-0-tts-flash/"
  },
  "rawModel": {
    "about": "Qwen-Audio-3.0-TTS-Flash แปลงบทพูดที่ให้มาเป็นเสียง โดยรุ่น Flash มุ่งเน้นการโต้ตอบแบบเรียลไทม์ Qwen ระบุว่าการใช้งานหลักคือผู้ช่วยเสียง บทสนทนาแบบโต้ตอบ และบริการลูกค้าอัจฉริยะ เมื่อเทียบกับเวอร์ชันก่อน ผู้พัฒนาอธิบายว่ารองรับภาษาที่มีทรัพยากรจำกัดและภาษาถิ่นจีนได้กว้างขึ้น ถ่ายทอดภาษาถิ่นได้สมจริงขึ้น และควบคุมอารมณ์ น้ำเสียง บุคลิก ความเร็ว ความดัง และรูปแบบการพูดได้มากขึ้น อีกทั้งรายงานว่ามีความชัดเจนและความทนทานดีขึ้นในสภาพเสียงที่มีสัญญาณรบกวนหรือเสียงก้อง นี่คือการสังเคราะห์ข้อความเป็นเสียง ไม่ใช่การรู้จำเสียงพูดขาเข้าหรือโมเดลสนทนาด้วยเสียง\n\nFlash ให้ความสำคัญกับการเริ่มส่งเสียงพูดในระหว่างการโต้ตอบ Qwen รายงานว่าความหน่วงของแพ็กเก็ตแรกสำหรับการสังเคราะห์แบบเรียลไทม์ของโมเดลนี้อยู่ภายใน 200 มิลลิวินาที คู่มือการใช้งานยังระบุว่าการสร้างการเชื่อมต่อครั้งแรกมีส่วนต่อความหน่วงที่วัดได้ในการส่งครั้งแรก เตรียมคำที่จะพูดแยกจากลักษณะการพูดที่ต้องการ สำหรับคำตอบของผู้ช่วยเสียง ตัวอย่างคำสั่งอาจรวมคำตอบกระชับเข้ากับคำสั่งให้พูดอย่างสงบและชัดเจน ผลลัพธ์ที่เกี่ยวข้องคือเสียงพูดที่สร้างจากข้อความนั้น โดยแอปพลิเคชันจัดการการเล่นเสียงและบทสนทนารอบข้าง\n\nรายการเสียงระบบของผู้พัฒนามีตัวเลือกเฉพาะโมเดล เช่น Long An Feng Yue สำหรับการพูดเป็นธรรมชาติและเป็นมิตร และ Long An Xiao Xin สำหรับการพูดเป็นมิตรและมีชีวิตชีวา โดยทั้งสองเสียงระบุว่ารองรับภาษาจีนกลางและภาษาอังกฤษ นอกจากนี้ยังมีเสียงภาษาอังกฤษ เช่น loongmary ที่มีสำเนียงอังกฤษ และ loongjohn ที่มีสำเนียงอเมริกันสงบและเป็นมิตร แต่ละโมเดลยังมีเสียงพื้นฐานมากกว่า 500 เสียง Qwen แนะนำให้เริ่มจากเสียงระบบเพื่อความสม่ำเสมอ และประเมินเสียงตัวอย่างก่อนเลือกเสียงพื้นฐาน เสียงต้องเป็นของโมเดลที่เลือก และบทพูดต้องใช้ภาษาที่เสียงนั้นรองรับ\n\nเสียงโคลนขยายขอบเขตภาษาที่ระบุในเอกสารให้ครอบคลุมภาษาจีน อังกฤษ ญี่ปุ่น เกาหลี รัสเซีย ฝรั่งเศส เยอรมัน โปรตุเกส ไทย อินโดนีเซีย เวียดนาม สเปน อิตาลี มลายู ฟิลิปปินส์ และอาหรับ สำหรับภาษาจีน ครอบคลุมจีนกลาง กวางตุ้ง ฉงชิ่ง ภาคตะวันออกเฉียงเหนือ กานซู่ กุ้ยโจว เจ้อเจียง เหอเป่ย เหอหนาน หูเป่ย หูหนาน เจียงซี หนิงโป หนิงเซี่ย ชิงเต่า ส่านซี (Shaanxi) ซานซี (Shanxi) ซานตง เซี่ยงไฮ้ เสฉวน และยูนนาน โดยเลือกภาษาถิ่นผ่านคำสั่ง ตารางโมเดลระบุว่ารองรับการโคลนเสียงจากตัวอย่าง และแยกความสามารถนี้จากการสร้างเสียงใหม่ด้วยคำบรรยายข้อความเพียงอย่างเดียว ซึ่งรุ่นนี้ไม่รองรับ\n\nสำหรับการโคลน ผู้พัฒนาแนะนำเสียงบันทึกยาว 10–20 วินาที โดยยาวได้สูงสุด 60 วินาทีและขนาดไฟล์ไม่เกิน 10 MB รูปแบบไฟล์อ้างอิงที่รองรับคือ WAV แบบ 16 บิต MP3 และ M4A ที่มีอัตราสุ่มตัวอย่างอย่างน้อย 16 kHz เสียงบันทึกต้องมีเสียงพูดต่อเนื่องชัดเจนอย่างน้อยห้าวินาที และช่วงหยุดอื่นไม่ควรยาวเกินสองวินาที หลีกเลี่ยงเสียงพื้นหลัง เสียงคนอื่น และการร้องเพลง รองรับสเตอริโอ แต่ประมวลผลเฉพาะช่องแรก กระบวนการโคลนจะคืนตัวระบุเสียงที่ผูกกับโมเดลเป้าหมายที่แน่นอน และใช้ตัวระบุนั้นสังเคราะห์เมื่อเสียงพร้อมใช้งาน เสียงบันทึกเดียวกันต้องสร้างเสียงโคลนแยกสำหรับ Flash และ Plus\n\nคำสั่งภาษาธรรมชาติควบคุมวิธีการพูดได้ทั้งเสียงระบบและเสียงโคลน อธิบายคุณสมบัติที่ได้ยิน เช่น น้ำเสียงอ่อนโยน การออกเสียงชัดเจน หรือจังหวะที่ช้าลงเล็กน้อย แท็กภายในข้อความให้การควบคุมอีกแบบหนึ่ง: [empathetic] หรือ [serious] กำหนดสไตล์ให้ข้อความถัดไป ส่วน [laughing] หรือ [sighing] แทรกเอฟเฟกต์เสียงในตำแหน่งเฉพาะ แท็กควบคุมมีผลจนกว่าจะพบแท็กควบคุมอื่นหรือมีการแบ่งประโยคโดยอัตโนมัติ แท็กอารมณ์และการแสดงออกทางภาษาที่หลากหลายเหล่านี้มีเอกสารรองรับเฉพาะสตรีมมิงทางเดียว ไม่ใช่โหมดป้อนข้อความสองทาง เตรียมประโยคที่สื่ออารมณ์ในโหมดที่เหมาะกับการควบคุมเหล่านั้น\n\nอินเทอร์เฟซเสียงพูดของผู้พัฒนารองรับ PCM, WAV, MP3 และ Opus อัตราสุ่มตัวอย่างที่ระบุคือ 8,000, 16,000, 22,050, 24,000, 44,100 และ 48,000 Hz โดยค่าเริ่มต้นคือ MP3 และ 22,050 Hz ความดังอยู่ระหว่าง 0 ถึง 100 ส่วนอัตราการพูดและระดับเสียงสูงต่ำต่างอยู่ระหว่าง 0.5 ถึง 2.0 MP3 และ Opus ยังมีการตั้งค่าบิตเรตตั้งแต่ 6 ถึง 510 kbps เลือกรูปแบบและอัตราสุ่มตัวอย่างให้ตรงกับโปรแกรมเล่นเสียงหรือกระบวนการประมวลผลที่ต้องการ สำหรับแอปพลิเคชันแบบโต้ตอบ ผู้พัฒนาระบุเฟรมเสียงแบบสตรีมมิงและข้อมูลกำกับประโยค พร้อมการประทับเวลาระดับคำในผลลัพธ์สตรีมมิงสำหรับเสียงที่เข้าเงื่อนไข รวมถึงเสียงโคลน\n\nโปรโตคอลข้อความ WebSocket ที่ระบุในเอกสารรับข้อความได้สูงสุด 20,000 อักขระต่อหนึ่งข้อความ และสะสมได้ 200,000 อักขระต่อหนึ่งงาน โดยช่วงเวลาระหว่างการส่งต้องไม่เกิน 23 วินาที ข้อกำหนดเหล่านี้เป็นขีดจำกัดของโปรโตคอลผู้พัฒนา แยกจากขีดจำกัดสากลด้านระยะเวลาเสียงขาออกของโมเดล รองรับการยกเลิกช่วงสังเคราะห์ปัจจุบันและเริ่มงานถัดไปบนการเชื่อมต่อเดิม เก็บส่วนข้อความตามลำดับที่ต้องการให้พูด และจบการป้อนเมื่อบทพูดครบ สำหรับการเตรียมการออกเสียง ผู้พัฒนาระบุคำใบ้ภาษาปลายทาง คำกำกับพินอิน และการแทนที่ข้อความ ซึ่งมีประโยชน์เมื่อตัวเลข คำย่อ หรือสัญลักษณ์ถูกออกเสียงผิดไปจากที่คาด\n\nSSML เป็นทางเลือกการใส่มาร์กอัปแยกต่างหากที่มีเงื่อนไขเรื่องเสียงและโหมดการโต้ตอบ: Qwen ระบุไว้สำหรับเสียงโคลน ด้วยการเรียกแบบไม่สตรีมมิงหรือสตรีมมิงทางเดียว และส่งข้อความครั้งเดียวเมื่อเปิดใช้ SSML ไม่ควรถือว่ารองรับเสียงที่ตั้งไว้ล่วงหน้าทุกเสียงหรือสตรีมสองทาง สำหรับบทสนทนาทั่วไป ให้เริ่มจากเสียงที่เข้ากันได้ บทพูดที่ชัดเจนและพร้อมอ่าน และคำสั่งการพูดที่เฉพาะเจาะจง แล้วเพิ่มการควบคุมการออกเสียงหรือการแสดงอารมณ์เฉพาะจุดเมื่อจำเป็น วิธีนี้คงให้โปรไฟล์ Flash มุ่งเน้นเสียงพูดตอบสนองรวดเร็วจากข้อความที่เตรียมไว้ แทนที่จะปะปนกับความสามารถของโมเดลเสียง Qwen อื่น",
    "alias_of": null,
    "aliases": [],
    "author": "Alibaba",
    "available": null,
    "canonical_model": "qwen/qwen-audio-3.0-tts-flash",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "qwen/qwen-audio-3.0-tts-flash",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "การตอบกลับที่ได้รับระบุว่าต้องตรวจสอบการดำเนินการหรือผลลัพธ์",
                "http_status": null,
                "recovery": "เก็บ ID การดำเนินการ/งานที่ส่งกลับมาแต่เดิม ส่วนหัวของคำขอ และการตอบกลับไว้ แล้วอ่านข้อมูลการดำเนินการเดิมนั้นต่อด้วยวิธีที่รองรับ ห้ามส่งคำขอสร้างซ้ำ",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "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": "เก็บ operation_id/X-Client-Request-ID เดิมไว้เพื่อกระทบยอดโดยไม่ส่งคำขอซ้ำ ไม่มีเส้นทางเฉพาะสำหรับตรวจสอบสถานะงานเสียงเป็นระยะ"
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "เก็บผลลัพธ์ไบนารีและส่วนหัวให้ครบถ้วน หากได้รับ JSON/ผลลัพธ์หลายรายการ ให้เก็บข้อมูลทุกรายการและดึงไฟล์สื่อจาก URL แบบลงนามทุกรายการที่ได้รับจริง",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-flash"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "อักขระ Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "loongjohn",
                  "longanhuan_v3.6"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "เลือกเสียงที่ตรงตามโปรไฟล์ของโมเดลนี้",
            "อักขระขาเข้าและวินาทีเสียงเป็นหน่วยวัดคนละแบบ"
          ],
          "input": {
            "content_type": "application/json",
            "input": "ข้อความ UTF-8 ที่ตรงตามต้นฉบับ นับอักขระ Unicode โดยไม่ปรับรูปแบบมาตรฐาน",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "loongjohn",
              "longanhuan_v3.6"
            ]
          },
          "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": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "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": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "1005b0881c111e8d7cb6",
            "label": "Qwen: Qwen-Audio-3.0-TTS Flash",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "การตั้งค่าเริ่มต้น"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Flash · การตั้งค่าเริ่มต้น",
                "units": [
                  {
                    "amount": "0.000030",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "723fd9e7b35c0e460956bc11",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-flash\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"loongjohn\", \"longanhuan_v3.6\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\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 speech.mp3\n",
            "label": "curl",
            "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 media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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_character": 3e-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": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.03000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.03000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "request_model_id": "qwen/qwen-audio-3.0-tts-flash",
        "route_label": "Ultra"
      }
    ],
    "name": "Qwen: Qwen-Audio-3.0-TTS Flash",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-flash",
          "Service deployment scope": "International",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-flash"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000030",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-flash",
              "Service deployment scope": "International",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-flash"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-flash",
          "Service deployment scope": "Mainland China",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-flash"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.0000275042",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-flash",
              "Service deployment scope": "Mainland China",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-flash"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "public_id": "qwen/qwen-audio-3.0-tts-flash",
    "short": "Qwen-Audio-3.0-TTS-Flash เป็นโมเดลแปลงข้อความเป็นเสียงพูดของ Qwen ที่มุ่งเน้นผู้ช่วยเสียงตอบสนองรวดเร็วและบทสนทนาแบบโต้ตอบ โดยรวมการสังเคราะห์แบบสตรีมมิง เสียงที่ตั้งไว้ล่วงหน้าหรือเสียงโคลนเฉพาะโมเดล และคำสั่งหรือแท็กสำหรับเสียงพูดที่สื่ออารมณ์"
  },
  "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": "Qwen-Audio-3.0-TTS-Flash เป็นโมเดลแปลงข้อความเป็นเสียงพูดของ Qwen ที่มุ่งเน้นผู้ช่วยเสียงตอบสนองรวดเร็วและบทสนทนาแบบโต้ตอบ โดยรวมการสังเคราะห์แบบสตรีมมิง เสียงที่ตั้งไว้ล่วงหน้าหรือเสียงโคลนเฉพาะโมเดล และคำสั่งหรือแท็กสำหรับเสียงพูดที่สื่ออารมณ์",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "f2855fb5048c18a4ccbf68bc292bb7a52a29b98dd12fa48d011003333800d234",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "096fbecf0eb118a50e10cd029864cd18fd6b84dc274fce8bf1c1a5b126f5039a"
}
