{
  "aboutHtml": "<p>Qwen-Audio-3.0-TTS-Plus mengubah teks tertulis menjadi ucapan ekspresif, dengan edisi Plus berfokus pada kualitas sintesis, kealamian, dan penyampaian vokal terperinci. Qwen menyebut pembuatan konten, buku audio, sulih suara film dan video, serta produksi ucapan profesional sebagai aplikasi utamanya. Profil model yang diperbarui menjelaskan dukungan lebih luas untuk bahasa dengan sumber daya terbatas dan dialek Tionghoa, peningkatan keaslian dialek, serta kontrol lebih kuat terhadap emosi, nada, karakter, kecepatan berbicara, volume, dan gaya. Pengembang juga melaporkan peningkatan kejernihan, resolusi, dan ketangguhan dalam kondisi akustik bising atau bergema.</p><p>Plus adalah edisi yang berfokus pada kualitas dalam keluarga teks-ke-ucapan ini; Flash diposisikan secara terpisah untuk interaksi waktu nyata. Siapkan narasi sebagai naskah lisan, dengan audiens sasaran, tempo, dan arah emosi yang ditentukan. Untuk bagian buku audio, contoh arahan dapat meminta artikulasi jelas, tempo terukur, dan kehangatan yang terkendali; untuk suara latar video, arahan dapat meminta pembukaan serius diikuti penjelasan lebih bersemangat. Ini adalah pilihan penyampaian untuk kata-kata yang diberikan. Model ini merupakan penyintesis ucapan, bukan layanan transkripsi atau generator seluruh adegan visual.</p><p>Suara sistem resmi untuk Plus mencakup Long An Ling Xin, yang digambarkan hangat dan empatik, serta Long An Lu Feng, yang digambarkan cerah dan ceria. Keduanya tercantum untuk Mandarin dan Inggris. Pengembang juga menyediakan lebih dari 500 suara dasar untuk edisi ini, dengan pratinjau untuk dinilai sebelum memilih. Suara sistem disarankan untuk sintesis lebih konsisten. Pilih suara dari daftar Plus yang tepat dan cocokkan bahasa naskah dengan bahasa yang didukung suara tersebut; suara Flash tidak dapat dipertukarkan hanya karena termasuk dalam keluarga besar yang sama.</p><p>Model mendukung kloning suara berbasis sampel. Bahasa suara klon yang didokumentasikan mencakup Tionghoa, Inggris, Jepang, Korea, Rusia, Prancis, Jerman, Portugis, Thai, Indonesia, Vietnam, Spanyol, Italia, Melayu, Filipino, dan Arab. Varian Tionghoa meliputi Mandarin, Kanton, Chongqing, Timur Laut, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Shanghai, Sichuan, dan Yunnan, dengan dialek dikontrol melalui instruksi. Tabel model pengembang membedakan kloning dari pembuatan suara melalui deskripsi teks: kloning didukung untuk Plus, sedangkan mode desain suara yang terpisah itu tidak didukung.</p><p>Referensi kloning yang sesuai adalah ucapan jelas dengan kecepatan normal, tanpa musik, kebisingan latar, pembicara yang saling menimpa, atau nyanyian. Pengembang menyarankan 10–20 detik dan mengizinkan hingga 60 detik, dalam berkas tidak lebih besar dari 10 MB. Format referensi adalah WAV 16-bit, MP3, dan M4A, dengan laju sampel minimum 16 kHz. Diperlukan setidaknya lima detik ucapan jelas yang berkesinambungan, dan jeda lainnya sebaiknya tidak lebih lama dari dua detik. Untuk stereo, hanya kanal pertama yang diproses. Pengenal suara yang dibuat terikat pada Plus dan digunakan untuk sintesis ketika siap; mereproduksi referensi yang sama melalui Flash membutuhkan suara Flash yang dibuat secara terpisah.</p><p>Instruksi bahasa alami dapat membentuk nada, tempo, emosi, dan warna suara, baik suara sistem maupun klon. Gunakan deskripsi bunyi yang konkret, bukan permintaan samar untuk suara yang bagus. Tag emosi di dalam teks dapat menetapkan gaya dalam naskah, sedangkan tag ekspresi vokal dapat menyisipkan efek suara pada titik yang dipilih. Misalnya, [serious] mengubah penyampaian berikutnya, sedangkan [sighing] menyisipkan desahan tanpa mengubah gaya emosi di sekitarnya. Tag kontrol berlaku hingga tag kontrol berikutnya atau segmentasi kalimat otomatis. Fitur berbasis tag ini didokumentasikan untuk streaming satu arah saja, sehingga cakupannya berbeda dari instruksi yang digunakan dengan masukan teks dua arah.</p><p>Pilihan keluaran pengembang adalah PCM, WAV, MP3, dan Opus, dengan laju sampel yang tercantum yaitu 8.000, 16.000, 22.050, 24.000, 44.100, dan 48.000 Hz. MP3 dan 22.050 Hz adalah pengaturan bawaan yang didokumentasikan. Volume dapat diatur dari 0 hingga 100, sedangkan kecepatan dan tinggi nada dari 0,5 hingga 2,0; MP3 dan Opus juga mengizinkan bitrate dari 6 hingga 510 kbps. Pilih representasi yang dibutuhkan untuk pemutaran atau penyuntingan, lalu pertahankan pengaturan tersebut secara konsisten di seluruh bagian karya yang lebih panjang. Keluaran streaming mencakup bingkai audio dan metadata kalimat, dengan penanda waktu kata tersedia untuk suara yang memenuhi syarat, termasuk suara klon.</p><p>Alur masukan teks WebSocket yang didokumentasikan mengizinkan 20.000 karakter per pesan dan total 200.000 karakter, serta mensyaratkan interval pengiriman tidak lebih dari 23 detik. Alur ini dapat menerima naskah lengkap atau segmen teks berurutan dan selesai ketika masukan lengkap. Pengembang juga mendokumentasikan pembatalan giliran sintesis saat ini. Ini adalah batas dan perilaku protokol tersebut, bukan batas durasi generasi yang universal. Untuk narasi panjang, susun naskah menjadi bagian yang koheren dan simpan urutan serta teksnya bersama audio yang dihasilkan agar karya dapat dirangkai dan ditinjau secara konsisten.</p><p>Untuk pelafalan, pengembang menyediakan petunjuk bahasa sasaran, anotasi pinyin, dan penggantian teks untuk menangani pembacaan yang tidak diinginkan pada digit, singkatan, simbol, atau kata. SSML adalah mode markup terpisah dengan batasan kelayakan: dokumentasi Qwen mendukungnya untuk suara klon dalam pemanggilan non-streaming atau streaming satu arah, dengan hanya satu pengiriman teks ketika diaktifkan. Dokumentasi tersebut tidak menetapkan SSML untuk setiap suara sistem atau streaming dua arah. Alur kerja Plus yang praktis dimulai dengan suara kompatibel dan naskah selesai, lalu menambahkan pilihan penyampaian dan pelafalan yang tepat untuk bagian yang dinarasikan.</p>",
  "aboutText": "Qwen-Audio-3.0-TTS-Plus mengubah teks tertulis menjadi ucapan ekspresif, dengan edisi Plus berfokus pada kualitas sintesis, kealamian, dan penyampaian vokal terperinci. Qwen menyebut pembuatan konten, buku audio, sulih suara film dan video, serta produksi ucapan profesional sebagai aplikasi utamanya. Profil model yang diperbarui menjelaskan dukungan lebih luas untuk bahasa dengan sumber daya terbatas dan dialek Tionghoa, peningkatan keaslian dialek, serta kontrol lebih kuat terhadap emosi, nada, karakter, kecepatan berbicara, volume, dan gaya. Pengembang juga melaporkan peningkatan kejernihan, resolusi, dan ketangguhan dalam kondisi akustik bising atau bergema.\n\nPlus adalah edisi yang berfokus pada kualitas dalam keluarga teks-ke-ucapan ini; Flash diposisikan secara terpisah untuk interaksi waktu nyata. Siapkan narasi sebagai naskah lisan, dengan audiens sasaran, tempo, dan arah emosi yang ditentukan. Untuk bagian buku audio, contoh arahan dapat meminta artikulasi jelas, tempo terukur, dan kehangatan yang terkendali; untuk suara latar video, arahan dapat meminta pembukaan serius diikuti penjelasan lebih bersemangat. Ini adalah pilihan penyampaian untuk kata-kata yang diberikan. Model ini merupakan penyintesis ucapan, bukan layanan transkripsi atau generator seluruh adegan visual.\n\nSuara sistem resmi untuk Plus mencakup Long An Ling Xin, yang digambarkan hangat dan empatik, serta Long An Lu Feng, yang digambarkan cerah dan ceria. Keduanya tercantum untuk Mandarin dan Inggris. Pengembang juga menyediakan lebih dari 500 suara dasar untuk edisi ini, dengan pratinjau untuk dinilai sebelum memilih. Suara sistem disarankan untuk sintesis lebih konsisten. Pilih suara dari daftar Plus yang tepat dan cocokkan bahasa naskah dengan bahasa yang didukung suara tersebut; suara Flash tidak dapat dipertukarkan hanya karena termasuk dalam keluarga besar yang sama.\n\nModel mendukung kloning suara berbasis sampel. Bahasa suara klon yang didokumentasikan mencakup Tionghoa, Inggris, Jepang, Korea, Rusia, Prancis, Jerman, Portugis, Thai, Indonesia, Vietnam, Spanyol, Italia, Melayu, Filipino, dan Arab. Varian Tionghoa meliputi Mandarin, Kanton, Chongqing, Timur Laut, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Shanghai, Sichuan, dan Yunnan, dengan dialek dikontrol melalui instruksi. Tabel model pengembang membedakan kloning dari pembuatan suara melalui deskripsi teks: kloning didukung untuk Plus, sedangkan mode desain suara yang terpisah itu tidak didukung.\n\nReferensi kloning yang sesuai adalah ucapan jelas dengan kecepatan normal, tanpa musik, kebisingan latar, pembicara yang saling menimpa, atau nyanyian. Pengembang menyarankan 10–20 detik dan mengizinkan hingga 60 detik, dalam berkas tidak lebih besar dari 10 MB. Format referensi adalah WAV 16-bit, MP3, dan M4A, dengan laju sampel minimum 16 kHz. Diperlukan setidaknya lima detik ucapan jelas yang berkesinambungan, dan jeda lainnya sebaiknya tidak lebih lama dari dua detik. Untuk stereo, hanya kanal pertama yang diproses. Pengenal suara yang dibuat terikat pada Plus dan digunakan untuk sintesis ketika siap; mereproduksi referensi yang sama melalui Flash membutuhkan suara Flash yang dibuat secara terpisah.\n\nInstruksi bahasa alami dapat membentuk nada, tempo, emosi, dan warna suara, baik suara sistem maupun klon. Gunakan deskripsi bunyi yang konkret, bukan permintaan samar untuk suara yang bagus. Tag emosi di dalam teks dapat menetapkan gaya dalam naskah, sedangkan tag ekspresi vokal dapat menyisipkan efek suara pada titik yang dipilih. Misalnya, [serious] mengubah penyampaian berikutnya, sedangkan [sighing] menyisipkan desahan tanpa mengubah gaya emosi di sekitarnya. Tag kontrol berlaku hingga tag kontrol berikutnya atau segmentasi kalimat otomatis. Fitur berbasis tag ini didokumentasikan untuk streaming satu arah saja, sehingga cakupannya berbeda dari instruksi yang digunakan dengan masukan teks dua arah.\n\nPilihan keluaran pengembang adalah PCM, WAV, MP3, dan Opus, dengan laju sampel yang tercantum yaitu 8.000, 16.000, 22.050, 24.000, 44.100, dan 48.000 Hz. MP3 dan 22.050 Hz adalah pengaturan bawaan yang didokumentasikan. Volume dapat diatur dari 0 hingga 100, sedangkan kecepatan dan tinggi nada dari 0,5 hingga 2,0; MP3 dan Opus juga mengizinkan bitrate dari 6 hingga 510 kbps. Pilih representasi yang dibutuhkan untuk pemutaran atau penyuntingan, lalu pertahankan pengaturan tersebut secara konsisten di seluruh bagian karya yang lebih panjang. Keluaran streaming mencakup bingkai audio dan metadata kalimat, dengan penanda waktu kata tersedia untuk suara yang memenuhi syarat, termasuk suara klon.\n\nAlur masukan teks WebSocket yang didokumentasikan mengizinkan 20.000 karakter per pesan dan total 200.000 karakter, serta mensyaratkan interval pengiriman tidak lebih dari 23 detik. Alur ini dapat menerima naskah lengkap atau segmen teks berurutan dan selesai ketika masukan lengkap. Pengembang juga mendokumentasikan pembatalan giliran sintesis saat ini. Ini adalah batas dan perilaku protokol tersebut, bukan batas durasi generasi yang universal. Untuk narasi panjang, susun naskah menjadi bagian yang koheren dan simpan urutan serta teksnya bersama audio yang dihasilkan agar karya dapat dirangkai dan ditinjau secara konsisten.\n\nUntuk pelafalan, pengembang menyediakan petunjuk bahasa sasaran, anotasi pinyin, dan penggantian teks untuk menangani pembacaan yang tidak diinginkan pada digit, singkatan, simbol, atau kata. SSML adalah mode markup terpisah dengan batasan kelayakan: dokumentasi Qwen mendukungnya untuk suara klon dalam pemanggilan non-streaming atau streaming satu arah, dengan hanya satu pengiriman teks ketika diaktifkan. Dokumentasi tersebut tidak menetapkan SSML untuk setiap suara sistem atau streaming dua arah. Alur kerja Plus yang praktis dimulai dengan suara kompatibel dan naskah selesai, lalu menambahkan pilihan penyampaian dan pelafalan yang tepat untuk bagian yang dinarasikan.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "fbce85c3a2219f205e580f4e2dd746ceab527364738e3ec9ebf820fb2743dc20",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "id",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">Al</span><h2 id=\"sheet-title\">Qwen: Qwen-Audio-3.0-TTS Plus</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>Alibaba /</span><code>qwen/qwen-audio-3.0-tts-plus</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bagian kartu model\"><button type=\"button\" data-card-jump=\"overview\">Mulai</button><button type=\"button\" data-card-jump=\"methods\">Masukan &amp; metode</button><button type=\"button\" data-card-jump=\"pricing\">Paket</button><button type=\"button\" data-card-jump=\"examples\">Contoh</button><button type=\"button\" data-card-jump=\"results\">Hasil</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode 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-plus\">Sintesis ucapan</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\">Mulai</h3><p class=\"mdesc-full\">Qwen-Audio-3.0-TTS-Plus adalah model teks-ke-ucapan dari Qwen yang berfokus pada audio terperinci, alami, dan ekspresif untuk narasi, buku audio, dan sulih suara. Model ini mendukung suara preset atau klon khusus model, keluaran streaming, serta instruksi atau tag untuk membentuk penyampaian.</p><dl class=\"card-io\" data-card-io><div><dt>Masukan yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>Audio</dd></div></dl><details class=\"card-about\"><summary>Tentang model</summary><p class=\"note-s\" data-model-method-boundary>Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>Qwen-Audio-3.0-TTS-Plus mengubah teks tertulis menjadi ucapan ekspresif, dengan edisi Plus berfokus pada kualitas sintesis, kealamian, dan penyampaian vokal terperinci. Qwen menyebut pembuatan konten, buku audio, sulih suara film dan video, serta produksi ucapan profesional sebagai aplikasi utamanya. Profil model yang diperbarui menjelaskan dukungan lebih luas untuk bahasa dengan sumber daya terbatas dan dialek Tionghoa, peningkatan keaslian dialek, serta kontrol lebih kuat terhadap emosi, nada, karakter, kecepatan berbicara, volume, dan gaya. Pengembang juga melaporkan peningkatan kejernihan, resolusi, dan ketangguhan dalam kondisi akustik bising atau bergema.</p><p>Plus adalah edisi yang berfokus pada kualitas dalam keluarga teks-ke-ucapan ini; Flash diposisikan secara terpisah untuk interaksi waktu nyata. Siapkan narasi sebagai naskah lisan, dengan audiens sasaran, tempo, dan arah emosi yang ditentukan. Untuk bagian buku audio, contoh arahan dapat meminta artikulasi jelas, tempo terukur, dan kehangatan yang terkendali; untuk suara latar video, arahan dapat meminta pembukaan serius diikuti penjelasan lebih bersemangat. Ini adalah pilihan penyampaian untuk kata-kata yang diberikan. Model ini merupakan penyintesis ucapan, bukan layanan transkripsi atau generator seluruh adegan visual.</p><p>Suara sistem resmi untuk Plus mencakup Long An Ling Xin, yang digambarkan hangat dan empatik, serta Long An Lu Feng, yang digambarkan cerah dan ceria. Keduanya tercantum untuk Mandarin dan Inggris. Pengembang juga menyediakan lebih dari 500 suara dasar untuk edisi ini, dengan pratinjau untuk dinilai sebelum memilih. Suara sistem disarankan untuk sintesis lebih konsisten. Pilih suara dari daftar Plus yang tepat dan cocokkan bahasa naskah dengan bahasa yang didukung suara tersebut; suara Flash tidak dapat dipertukarkan hanya karena termasuk dalam keluarga besar yang sama.</p><p>Model mendukung kloning suara berbasis sampel. Bahasa suara klon yang didokumentasikan mencakup Tionghoa, Inggris, Jepang, Korea, Rusia, Prancis, Jerman, Portugis, Thai, Indonesia, Vietnam, Spanyol, Italia, Melayu, Filipino, dan Arab. Varian Tionghoa meliputi Mandarin, Kanton, Chongqing, Timur Laut, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Shanghai, Sichuan, dan Yunnan, dengan dialek dikontrol melalui instruksi. Tabel model pengembang membedakan kloning dari pembuatan suara melalui deskripsi teks: kloning didukung untuk Plus, sedangkan mode desain suara yang terpisah itu tidak didukung.</p><p>Referensi kloning yang sesuai adalah ucapan jelas dengan kecepatan normal, tanpa musik, kebisingan latar, pembicara yang saling menimpa, atau nyanyian. Pengembang menyarankan 10–20 detik dan mengizinkan hingga 60 detik, dalam berkas tidak lebih besar dari 10 MB. Format referensi adalah WAV 16-bit, MP3, dan M4A, dengan laju sampel minimum 16 kHz. Diperlukan setidaknya lima detik ucapan jelas yang berkesinambungan, dan jeda lainnya sebaiknya tidak lebih lama dari dua detik. Untuk stereo, hanya kanal pertama yang diproses. Pengenal suara yang dibuat terikat pada Plus dan digunakan untuk sintesis ketika siap; mereproduksi referensi yang sama melalui Flash membutuhkan suara Flash yang dibuat secara terpisah.</p><p>Instruksi bahasa alami dapat membentuk nada, tempo, emosi, dan warna suara, baik suara sistem maupun klon. Gunakan deskripsi bunyi yang konkret, bukan permintaan samar untuk suara yang bagus. Tag emosi di dalam teks dapat menetapkan gaya dalam naskah, sedangkan tag ekspresi vokal dapat menyisipkan efek suara pada titik yang dipilih. Misalnya, [serious] mengubah penyampaian berikutnya, sedangkan [sighing] menyisipkan desahan tanpa mengubah gaya emosi di sekitarnya. Tag kontrol berlaku hingga tag kontrol berikutnya atau segmentasi kalimat otomatis. Fitur berbasis tag ini didokumentasikan untuk streaming satu arah saja, sehingga cakupannya berbeda dari instruksi yang digunakan dengan masukan teks dua arah.</p><p>Pilihan keluaran pengembang adalah PCM, WAV, MP3, dan Opus, dengan laju sampel yang tercantum yaitu 8.000, 16.000, 22.050, 24.000, 44.100, dan 48.000 Hz. MP3 dan 22.050 Hz adalah pengaturan bawaan yang didokumentasikan. Volume dapat diatur dari 0 hingga 100, sedangkan kecepatan dan tinggi nada dari 0,5 hingga 2,0; MP3 dan Opus juga mengizinkan bitrate dari 6 hingga 510 kbps. Pilih representasi yang dibutuhkan untuk pemutaran atau penyuntingan, lalu pertahankan pengaturan tersebut secara konsisten di seluruh bagian karya yang lebih panjang. Keluaran streaming mencakup bingkai audio dan metadata kalimat, dengan penanda waktu kata tersedia untuk suara yang memenuhi syarat, termasuk suara klon.</p><p>Alur masukan teks WebSocket yang didokumentasikan mengizinkan 20.000 karakter per pesan dan total 200.000 karakter, serta mensyaratkan interval pengiriman tidak lebih dari 23 detik. Alur ini dapat menerima naskah lengkap atau segmen teks berurutan dan selesai ketika masukan lengkap. Pengembang juga mendokumentasikan pembatalan giliran sintesis saat ini. Ini adalah batas dan perilaku protokol tersebut, bukan batas durasi generasi yang universal. Untuk narasi panjang, susun naskah menjadi bagian yang koheren dan simpan urutan serta teksnya bersama audio yang dihasilkan agar karya dapat dirangkai dan ditinjau secara konsisten.</p><p>Untuk pelafalan, pengembang menyediakan petunjuk bahasa sasaran, anotasi pinyin, dan penggantian teks untuk menangani pembacaan yang tidak diinginkan pada digit, singkatan, simbol, atau kata. SSML adalah mode markup terpisah dengan batasan kelayakan: dokumentasi Qwen mendukungnya untuk suara klon dalam pemanggilan non-streaming atau streaming satu arah, dengan hanya satu pengiriman teks ketika diaktifkan. Dokumentasi tersebut tidak menetapkan SSML untuk setiap suara sistem atau streaming dua arah. Alur kerja Plus yang praktis dimulai dengan suara kompatibel dan naskah selesai, lalu menambahkan pilihan penyampaian dan pelafalan yang tepat untuk bagian yang dinarasikan.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · masukan &amp; metode</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Sintesis ucapan</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Masukan</dt><dd><code>text</code></dd></div><div><dt>Keluaran</dt><dd><code>audio</code></dd></div><div><dt>Format keluaran</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kolom</th><th>Jenis</th><th>Persyaratan</th><th>Nilai &amp; batasan</th><th>Bawaan</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>qwen/qwen-audio-3.0-tts-plus</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>Panjang minimum: 1</div><div>Satuan: karakter Unicode</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>longanlingxin, longanlufeng</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Persyaratan\"><span class=\"card-cell-label\">Persyaratan</span>Wajib</td><td data-cell-label=\"Nilai &amp; batasan\"><span class=\"card-cell-label\">Nilai &amp; batasan</span><div>mp3</div></td><td data-cell-label=\"Bawaan\" data-default=\"unspecified\"><span class=\"card-cell-label\">Bawaan</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinasi bahan masukan</summary><p class=\"note-s\"><b>text_to_speech</b> · Wajib: input</p></details><details class=\"note-s\" data-method-contract><summary>Parameter metode dan siklus hidup</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>voice_ids</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>longanlingxin, longanlufeng</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>response_format</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>mp3</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>max_input_characters</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>other_options</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>input</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</td></tr></tbody></table></div><p>Siklus hidup: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id aktual yang dikembalikan atau catatan pustaka media</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\">Pilih suara yang tepat dari profil model ini.</p><p class=\"note-s\">Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Paket</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.</p><dl data-price-conditions><dt>Mode Fast</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode fast dipilih</span></dd><dt>Mode Flex</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat mode flex dipilih</span></dd><dt>Upaya penalaran maksimum</dt><dd>Tidak ditentukan <span class=\"note-s\">Saat upaya penalaran maksimum menggunakan penyesuaian default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarif Ailoot</h4><h4>Harga menurut konfigurasi</h4><p class=\"note-s\">Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadwal tarif</th><th>Jumlah yang ditagihkan</th><th>Satuan penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tarif dasar token</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>Tarif dasar</td><td data-cell-label=\"Jumlah yang ditagihkan\"><span class=\"card-cell-label\">Jumlah yang ditagihkan</span>—</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>—</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Token masukan</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Keluaran · Token keluaran</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Pembacaan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Masukan · Penulisan cache, 1 jam</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Ultra</th><td data-cell-label=\"Jadwal tarif\"><span class=\"card-cell-label\">Jadwal tarif</span>—</td><td data-cell-label=\"Jumlah yang ditagihkan\"><span class=\"card-cell-label\">Jumlah yang ditagihkan</span>Setiap titik kode Unicode dihitung sebagai satu karakter, termasuk karakter Han.</td><td data-cell-label=\"Satuan penagihan\"><span class=\"card-cell-label\">Satuan penagihan</span>per 1K karakter masukan</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · karakter masukan</span> <b>$0.04</b> <span class=\"price-unit\">per 1K karakter masukan</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Detail tarif referensi</h4><p class=\"note-s\">Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Qwen: Qwen-Audio-3.0-TTS Plus</summary><h4>Harga menurut konfigurasi</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Kondisi penagihan</th><th>Biaya</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Qwen: Qwen-Audio-3.0-TTS Plus · Konfigurasi bawaan</th><td data-cell-label=\"Kondisi penagihan\"><span class=\"card-cell-label\">Kondisi penagihan</span>Konfigurasi bawaan</td><td data-cell-label=\"Biaya\"><span class=\"card-cell-label\">Biaya</span><div><span>Masukan · Karakter masukan</span> <b>US$0,00004</b> <span class=\"price-unit\">per karakter masukan</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. <a href=\"/docs/id/billing/reserve/\">Cara kerja cadangan dan penyelesaian tagihan →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Sintesis ucapan</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><button class=\"cg-tab\" id=\"model-code-2362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kode\"><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-2362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2362-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-plus&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;longanlingxin&quot;, &quot;longanlufeng&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\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Sintesis ucapan</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>Pembacaan konten lain</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kode\"><button class=\"cg-tab\" id=\"model-code-2363-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pustaka media</button><button class=\"cg-tab\" id=\"model-code-2363-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Status tugas</button><button class=\"cg-tab\" id=\"model-code-2363-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Detail aset</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kode\"><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-2363-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-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-2363-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-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-2363-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-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>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.</p><p class=\"note-s\">Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asli perlu diperiksa</h5><p class=\"note-s\">Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio.</p></div><details class=\"card-about\" data-output-fields><summary>Kolom respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Kolom</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>bytes</td></tr><tr><th data-cell-label=\"Kolom\" scope=\"row\"><span class=\"card-cell-label\">Kolom</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Kesalahan dan langkah berikutnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Kondisi</th><th>Langkah berikutnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Bidang wajib, representasi materi, atau nilai parameter tidak valid</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code>server_error</code></th><td data-cell-label=\"Kondisi\"><span class=\"card-cell-label\">Kondisi</span>Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa</td><td data-cell-label=\"Langkah berikutnya\"><span class=\"card-cell-label\">Langkah berikutnya</span>Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></span></p><h4>Alias jalur metode</h4><p class=\"note-s\">Gunakan jalur metode yang ditampilkan di atas.</p><h4>ID pemanggil terkait</h4><p class=\"note-s\"><a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-plus",
      "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": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "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": "Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio."
            },
            "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": "Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.",
              "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-plus"
                ],
                "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": "karakter Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "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": [
            "Pilih suara yang tepat dari profil model ini.",
            "Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "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 aktual yang dikembalikan atau catatan pustaka media",
                "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.04000",
                "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.00004",
                "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": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Konfigurasi bawaan"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · Konfigurasi bawaan",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "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-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\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": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "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.00004",
                "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-plus",
        "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.04000",
            "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.00004",
            "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-plus",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "7710c27d69f8ae66fe24e645f23bc2335a2c5e25d0812e05c01fb6c78ce7493b",
    "input_html_sha256": "747ba94ec4177395ee1e76305d748b19b5c66f4add1bd375a07ecb66ac990f16",
    "private_audit_sha256": "e30d08a65bc727599754edf52e2ec14584fc2aed22bbd94b7d4a77f22f37cdd9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/id/qwen-qwen-audio-3-0-tts-plus/",
    "description": "Qwen-Audio-3.0-TTS-Plus adalah model teks-ke-ucapan dari Qwen yang berfokus pada audio terperinci, alami, dan ekspresif untuk narasi, buku audio, dan sulih suara. Model ini mendukung suara preset atau klon khusus model, keluaran streaming, serta instruksi atau tag untuk membentuk penyampaian.",
    "locale": "id",
    "md_url": "https://ailoot.ai/models/id/qwen-qwen-audio-3-0-tts-plus/index.md",
    "title": "Qwen: Qwen-Audio-3.0-TTS Plus — Ailoot",
    "url": "https://ailoot.ai/models/id/qwen-qwen-audio-3-0-tts-plus/"
  },
  "rawModel": {
    "about": "Qwen-Audio-3.0-TTS-Plus mengubah teks tertulis menjadi ucapan ekspresif, dengan edisi Plus berfokus pada kualitas sintesis, kealamian, dan penyampaian vokal terperinci. Qwen menyebut pembuatan konten, buku audio, sulih suara film dan video, serta produksi ucapan profesional sebagai aplikasi utamanya. Profil model yang diperbarui menjelaskan dukungan lebih luas untuk bahasa dengan sumber daya terbatas dan dialek Tionghoa, peningkatan keaslian dialek, serta kontrol lebih kuat terhadap emosi, nada, karakter, kecepatan berbicara, volume, dan gaya. Pengembang juga melaporkan peningkatan kejernihan, resolusi, dan ketangguhan dalam kondisi akustik bising atau bergema.\n\nPlus adalah edisi yang berfokus pada kualitas dalam keluarga teks-ke-ucapan ini; Flash diposisikan secara terpisah untuk interaksi waktu nyata. Siapkan narasi sebagai naskah lisan, dengan audiens sasaran, tempo, dan arah emosi yang ditentukan. Untuk bagian buku audio, contoh arahan dapat meminta artikulasi jelas, tempo terukur, dan kehangatan yang terkendali; untuk suara latar video, arahan dapat meminta pembukaan serius diikuti penjelasan lebih bersemangat. Ini adalah pilihan penyampaian untuk kata-kata yang diberikan. Model ini merupakan penyintesis ucapan, bukan layanan transkripsi atau generator seluruh adegan visual.\n\nSuara sistem resmi untuk Plus mencakup Long An Ling Xin, yang digambarkan hangat dan empatik, serta Long An Lu Feng, yang digambarkan cerah dan ceria. Keduanya tercantum untuk Mandarin dan Inggris. Pengembang juga menyediakan lebih dari 500 suara dasar untuk edisi ini, dengan pratinjau untuk dinilai sebelum memilih. Suara sistem disarankan untuk sintesis lebih konsisten. Pilih suara dari daftar Plus yang tepat dan cocokkan bahasa naskah dengan bahasa yang didukung suara tersebut; suara Flash tidak dapat dipertukarkan hanya karena termasuk dalam keluarga besar yang sama.\n\nModel mendukung kloning suara berbasis sampel. Bahasa suara klon yang didokumentasikan mencakup Tionghoa, Inggris, Jepang, Korea, Rusia, Prancis, Jerman, Portugis, Thai, Indonesia, Vietnam, Spanyol, Italia, Melayu, Filipino, dan Arab. Varian Tionghoa meliputi Mandarin, Kanton, Chongqing, Timur Laut, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Shanghai, Sichuan, dan Yunnan, dengan dialek dikontrol melalui instruksi. Tabel model pengembang membedakan kloning dari pembuatan suara melalui deskripsi teks: kloning didukung untuk Plus, sedangkan mode desain suara yang terpisah itu tidak didukung.\n\nReferensi kloning yang sesuai adalah ucapan jelas dengan kecepatan normal, tanpa musik, kebisingan latar, pembicara yang saling menimpa, atau nyanyian. Pengembang menyarankan 10–20 detik dan mengizinkan hingga 60 detik, dalam berkas tidak lebih besar dari 10 MB. Format referensi adalah WAV 16-bit, MP3, dan M4A, dengan laju sampel minimum 16 kHz. Diperlukan setidaknya lima detik ucapan jelas yang berkesinambungan, dan jeda lainnya sebaiknya tidak lebih lama dari dua detik. Untuk stereo, hanya kanal pertama yang diproses. Pengenal suara yang dibuat terikat pada Plus dan digunakan untuk sintesis ketika siap; mereproduksi referensi yang sama melalui Flash membutuhkan suara Flash yang dibuat secara terpisah.\n\nInstruksi bahasa alami dapat membentuk nada, tempo, emosi, dan warna suara, baik suara sistem maupun klon. Gunakan deskripsi bunyi yang konkret, bukan permintaan samar untuk suara yang bagus. Tag emosi di dalam teks dapat menetapkan gaya dalam naskah, sedangkan tag ekspresi vokal dapat menyisipkan efek suara pada titik yang dipilih. Misalnya, [serious] mengubah penyampaian berikutnya, sedangkan [sighing] menyisipkan desahan tanpa mengubah gaya emosi di sekitarnya. Tag kontrol berlaku hingga tag kontrol berikutnya atau segmentasi kalimat otomatis. Fitur berbasis tag ini didokumentasikan untuk streaming satu arah saja, sehingga cakupannya berbeda dari instruksi yang digunakan dengan masukan teks dua arah.\n\nPilihan keluaran pengembang adalah PCM, WAV, MP3, dan Opus, dengan laju sampel yang tercantum yaitu 8.000, 16.000, 22.050, 24.000, 44.100, dan 48.000 Hz. MP3 dan 22.050 Hz adalah pengaturan bawaan yang didokumentasikan. Volume dapat diatur dari 0 hingga 100, sedangkan kecepatan dan tinggi nada dari 0,5 hingga 2,0; MP3 dan Opus juga mengizinkan bitrate dari 6 hingga 510 kbps. Pilih representasi yang dibutuhkan untuk pemutaran atau penyuntingan, lalu pertahankan pengaturan tersebut secara konsisten di seluruh bagian karya yang lebih panjang. Keluaran streaming mencakup bingkai audio dan metadata kalimat, dengan penanda waktu kata tersedia untuk suara yang memenuhi syarat, termasuk suara klon.\n\nAlur masukan teks WebSocket yang didokumentasikan mengizinkan 20.000 karakter per pesan dan total 200.000 karakter, serta mensyaratkan interval pengiriman tidak lebih dari 23 detik. Alur ini dapat menerima naskah lengkap atau segmen teks berurutan dan selesai ketika masukan lengkap. Pengembang juga mendokumentasikan pembatalan giliran sintesis saat ini. Ini adalah batas dan perilaku protokol tersebut, bukan batas durasi generasi yang universal. Untuk narasi panjang, susun naskah menjadi bagian yang koheren dan simpan urutan serta teksnya bersama audio yang dihasilkan agar karya dapat dirangkai dan ditinjau secara konsisten.\n\nUntuk pelafalan, pengembang menyediakan petunjuk bahasa sasaran, anotasi pinyin, dan penggantian teks untuk menangani pembacaan yang tidak diinginkan pada digit, singkatan, simbol, atau kata. SSML adalah mode markup terpisah dengan batasan kelayakan: dokumentasi Qwen mendukungnya untuk suara klon dalam pemanggilan non-streaming atau streaming satu arah, dengan hanya satu pengiriman teks ketika diaktifkan. Dokumentasi tersebut tidak menetapkan SSML untuk setiap suara sistem atau streaming dua arah. Alur kerja Plus yang praktis dimulai dengan suara kompatibel dan naskah selesai, lalu menambahkan pilihan penyampaian dan pelafalan yang tepat untuk bagian yang dinarasikan.",
    "alias_of": null,
    "aliases": [],
    "author": "Alibaba",
    "available": null,
    "canonical_model": "qwen/qwen-audio-3.0-tts-plus",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.04000",
            "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.00004",
            "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": "Informasi lengkap harga konfigurasi tersedia di bagian detail."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "qwen/qwen-audio-3.0-tts-plus",
    "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": "Bidang wajib, representasi materi, atau nilai parameter tidak valid",
                "http_status": 400,
                "recovery": "Perbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan.",
                "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": "Simpan operation_id/X-Client-Request-ID asli untuk rekonsiliasi tanpa pengiriman ulang; tidak ada rute polling khusus audio."
            },
            "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": "Simpan hasil biner dan header secara lengkap. Jika JSON atau beberapa keluaran dikembalikan, simpan setiap item data dan ambil data dari setiap URL aset bertanda tangan yang benar-benar dikembalikan.",
              "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-plus"
                ],
                "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": "karakter Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "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": [
            "Pilih suara yang tepat dari profil model ini.",
            "Karakter masukan dan detik audio merupakan satuan pengukuran yang berbeda."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 persis; jumlah karakter Unicode tanpa normalisasi",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "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 aktual yang dikembalikan atau catatan pustaka media",
                "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.04000",
                "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.00004",
                "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": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Konfigurasi bawaan"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · Konfigurasi bawaan",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "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-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\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": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "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.00004",
                "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-plus",
        "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.04000",
            "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.00004",
            "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-plus",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      }
    ],
    "name": "Qwen: Qwen-Audio-3.0-TTS Plus",
    "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-plus",
          "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-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.00004",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "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-plus"
            },
            "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-plus",
          "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-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000038506",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "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-plus"
            },
            "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-plus",
    "short": "Qwen-Audio-3.0-TTS-Plus adalah model teks-ke-ucapan dari Qwen yang berfokus pada audio terperinci, alami, dan ekspresif untuk narasi, buku audio, dan sulih suara. Model ini mendukung suara preset atau klon khusus model, keluaran streaming, serta instruksi atau tag untuk membentuk penyampaian."
  },
  "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-Plus adalah model teks-ke-ucapan dari Qwen yang berfokus pada audio terperinci, alami, dan ekspresif untuk narasi, buku audio, dan sulih suara. Model ini mendukung suara preset atau klon khusus model, keluaran streaming, serta instruksi atau tag untuk membentuk penyampaian.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "fcbcd7a113d8d5da346c1f0e6cf8395909dc05d6a76be35dfb165033821bc8ee",
    "renderer_sha256": "2a0471475a29000c23db326ca1e315df73dee7524f6bc2907818ee3458813f2d"
  },
  "sourceRevision": "6ef21b950dc6aad6784764df0a265e9ebd5771f2d84e65840db120449f08e24f"
}
