{
  "aboutHtml": "<p>Kokoro 82M ialah model teks ke pertuturan berpemberat terbuka daripada hexgrad dengan lapan puluh dua juta parameter. Kad modelnya menerangkan seni bina kompak yang hanya menggunakan penyahkod, berasaskan StyleTTS 2 dan iSTFTNet. Teks bertulis ditukar kepada maklumat sebutan, kemudian kepada pertuturan dengan suara pilihan. Keluaran v1.0 yang didokumenkan menyediakan lima puluh empat suara dalam lapan bahasa; profil itu berbeza daripada keluaran v0.19 terdahulu yang khusus untuk bahasa Inggeris.</p><h4>Pilih bahasa dan suara yang sepadan</h4><p>Katalog suara meliputi bahasa Inggeris Amerika dan British, Jepun, Cina Mandarin, Sepanyol, Perancis, Hindi, Itali dan Portugis Brazil. Kedua-dua loghat bahasa Inggeris ialah varian satu bahasa. Nama suara dan tetapan bahasa perlu dipadankan: af_heart ialah contoh bahasa Inggeris Amerika dalam aliran kerja rasmi, manakala katalog mempunyai kumpulan berasingan untuk bahasa dan loghat lain.</p><p>Pilih penutur berdasarkan bahan sebenar yang akan dibacanya. Narasi kursus ringkas boleh menggunakan satu suara pratetap yang konsisten merentas bahagiannya; koleksi berbilang bahasa boleh memilih suara daripada setiap kumpulan bahasa yang diperlukan. Liputan katalog berbeza antara kumpulan. Bahasa Perancis, misalnya, diwakili oleh satu suara yang disenaraikan dan bukannya pilihan lebih besar yang tersedia untuk bahasa Inggeris.</p><h4>Sediakan sebutan dan petikan</h4><p>Saluran pemprosesan rujukan Kokoro menukar bentuk bertulis kepada fonem. Contohnya membenarkan bacaan fonetik yang eksplisit untuk sesuatu istilah, supaya nama yang sukar boleh disediakan dan bukannya dibiarkan bergantung pada ejaan yang mengelirukan. Pastikan ayat sekeliling semula jadi dan kekalkan perkataan yang patut didengar oleh pendengar.</p><p>Petikan praktikal ialah: “Panduan ini mempunyai tiga bahagian. Pertama, pilih bahan. Seterusnya, bandingkan contoh. Akhir sekali, simpan versi yang anda mahu gunakan.” Tulis frasa lengkap dan kekalkan jeda yang dibayangkan oleh tanda baca. Untuk karya yang panjang, susun input menjadi perenggan yang koheren dan bukannya menganggap seluruh dokumen sebagai satu ujaran tanpa henti.</p><p>Panduan suara menyatakan bahawa ramai penutur berprestasi terbaik dengan petikan kira-kira 100–200 token dalam rentang sekitar 500 token. Ia menyatakan kelemahan pada ujaran yang sangat pendek, khususnya di bawah 10–20 token, dan kecenderungan untuk tergesa-gesa pada petikan yang lebih panjang, terutama melebihi 400 token. Ini ialah pemerhatian penyediaan berdasarkan token, bukannya had bilangan perkataan atau tempoh rakaman. Menggabungkan fragmen pendek atau membahagikan petikan panjang boleh memberikan unit pertuturan yang lebih sesuai.</p><h4>Output audio dan rentak</h4><p>Aliran kerja rasmi menghasilkan teks yang diproses, fonem dan hasil audio bagi setiap segmen yang dijana. Ia menyimpan segmen tersebut sebagai WAV pada 24,000 Hz dan menyediakan tetapan speed dalam saluran pemprosesan rujukan. Pastikan teks segmen dan susunannya dikaitkan dengan audio supaya narasi yang dicantumkan mengikuti skrip yang dimaksudkan.</p><p>Pemeriksaan penyuntingan yang berguna ialah mendengar merentas sempadan antara dua petikan, kemudian memeriksa nama berulang dan rentak senarai. Output audio dan paparan fonem mempunyai tujuan berbeza: satu ialah rakaman yang didengar oleh pendengar, satu lagi membantu memeriksa cara teks bertulis disebut.</p><h4>Liputan bahasa dan batasan yang berguna</h4><p>Pengeluar secara jelas menyatakan bahawa sokongan bukan bahasa Inggeris boleh terhad kerana pemprosesan sebutan atau data latihan suara adalah terhad. Oleh itu, kumpulan pratetapnya tidak patut dianggap memberikan jaminan penyampaian yang sama untuk setiap petikan. Pilih penutur yang sesuai dan semak nama serta ungkapan sebenar yang diperlukan oleh tugas.</p><p>Hasil yang berguna ialah petikan pertuturan atau narasi yang dicantumkan menggunakan suara pratetap yang didokumenkan, dengan teks disediakan mengikut keperluan sebutan dan panjang petikannya. Profil ini mengikuti bahan Kokoro 82M v1.0 pengeluar; checkpoint lain, pelaksanaan yang dikuantumkan atau suara yang diubah suai secara luaran mempunyai skop teknikalnya sendiri.</p>",
  "aboutText": "Kokoro 82M ialah model teks ke pertuturan berpemberat terbuka daripada hexgrad dengan lapan puluh dua juta parameter. Kad modelnya menerangkan seni bina kompak yang hanya menggunakan penyahkod, berasaskan StyleTTS 2 dan iSTFTNet. Teks bertulis ditukar kepada maklumat sebutan, kemudian kepada pertuturan dengan suara pilihan. Keluaran v1.0 yang didokumenkan menyediakan lima puluh empat suara dalam lapan bahasa; profil itu berbeza daripada keluaran v0.19 terdahulu yang khusus untuk bahasa Inggeris.\n\n### Pilih bahasa dan suara yang sepadan\n\nKatalog suara meliputi bahasa Inggeris Amerika dan British, Jepun, Cina Mandarin, Sepanyol, Perancis, Hindi, Itali dan Portugis Brazil. Kedua-dua loghat bahasa Inggeris ialah varian satu bahasa. Nama suara dan tetapan bahasa perlu dipadankan: af_heart ialah contoh bahasa Inggeris Amerika dalam aliran kerja rasmi, manakala katalog mempunyai kumpulan berasingan untuk bahasa dan loghat lain.\n\nPilih penutur berdasarkan bahan sebenar yang akan dibacanya. Narasi kursus ringkas boleh menggunakan satu suara pratetap yang konsisten merentas bahagiannya; koleksi berbilang bahasa boleh memilih suara daripada setiap kumpulan bahasa yang diperlukan. Liputan katalog berbeza antara kumpulan. Bahasa Perancis, misalnya, diwakili oleh satu suara yang disenaraikan dan bukannya pilihan lebih besar yang tersedia untuk bahasa Inggeris.\n\n### Sediakan sebutan dan petikan\n\nSaluran pemprosesan rujukan Kokoro menukar bentuk bertulis kepada fonem. Contohnya membenarkan bacaan fonetik yang eksplisit untuk sesuatu istilah, supaya nama yang sukar boleh disediakan dan bukannya dibiarkan bergantung pada ejaan yang mengelirukan. Pastikan ayat sekeliling semula jadi dan kekalkan perkataan yang patut didengar oleh pendengar.\n\nPetikan praktikal ialah: “Panduan ini mempunyai tiga bahagian. Pertama, pilih bahan. Seterusnya, bandingkan contoh. Akhir sekali, simpan versi yang anda mahu gunakan.” Tulis frasa lengkap dan kekalkan jeda yang dibayangkan oleh tanda baca. Untuk karya yang panjang, susun input menjadi perenggan yang koheren dan bukannya menganggap seluruh dokumen sebagai satu ujaran tanpa henti.\n\nPanduan suara menyatakan bahawa ramai penutur berprestasi terbaik dengan petikan kira-kira 100–200 token dalam rentang sekitar 500 token. Ia menyatakan kelemahan pada ujaran yang sangat pendek, khususnya di bawah 10–20 token, dan kecenderungan untuk tergesa-gesa pada petikan yang lebih panjang, terutama melebihi 400 token. Ini ialah pemerhatian penyediaan berdasarkan token, bukannya had bilangan perkataan atau tempoh rakaman. Menggabungkan fragmen pendek atau membahagikan petikan panjang boleh memberikan unit pertuturan yang lebih sesuai.\n\n### Output audio dan rentak\n\nAliran kerja rasmi menghasilkan teks yang diproses, fonem dan hasil audio bagi setiap segmen yang dijana. Ia menyimpan segmen tersebut sebagai WAV pada 24,000 Hz dan menyediakan tetapan speed dalam saluran pemprosesan rujukan. Pastikan teks segmen dan susunannya dikaitkan dengan audio supaya narasi yang dicantumkan mengikuti skrip yang dimaksudkan.\n\nPemeriksaan penyuntingan yang berguna ialah mendengar merentas sempadan antara dua petikan, kemudian memeriksa nama berulang dan rentak senarai. Output audio dan paparan fonem mempunyai tujuan berbeza: satu ialah rakaman yang didengar oleh pendengar, satu lagi membantu memeriksa cara teks bertulis disebut.\n\n### Liputan bahasa dan batasan yang berguna\n\nPengeluar secara jelas menyatakan bahawa sokongan bukan bahasa Inggeris boleh terhad kerana pemprosesan sebutan atau data latihan suara adalah terhad. Oleh itu, kumpulan pratetapnya tidak patut dianggap memberikan jaminan penyampaian yang sama untuk setiap petikan. Pilih penutur yang sesuai dan semak nama serta ungkapan sebenar yang diperlukan oleh tugas.\n\nHasil yang berguna ialah petikan pertuturan atau narasi yang dicantumkan menggunakan suara pratetap yang didokumenkan, dengan teks disediakan mengikut keperluan sebutan dan panjang petikannya. Profil ini mengikuti bahan Kokoro 82M v1.0 pengeluar; checkpoint lain, pelaksanaan yang dikuantumkan atau suara yang diubah suai secara luaran mempunyai skop teknikalnya sendiri.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "7180814894ffd63b0368cd6143ddbeac0a68f85b13fbecae136f505915386f5f",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ms",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">hexgrad: Kokoro 82M</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>hexgrad /</span><code>hexgrad/kokoro-82m</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bahagian kad model\"><button type=\"button\" data-card-jump=\"overview\">Pengenalan</button><button type=\"button\" data-card-jump=\"methods\">Input &amp; kaedah</button><button type=\"button\" data-card-jump=\"pricing\">Pelan harga</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=\"Kaedah 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|hexgrad%2Fkokoro-82m\">Penjanaan suara</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\">Pengenalan</h3><p class=\"mdesc-full\">Kokoro 82M daripada hexgrad menjana pertuturan dengan model kompak berparameter 82 juta dan suara pratetap khusus bahasa. Profil v1.0 yang didokumenkan merangkumi lapan bahasa, 54 suara dan output audio 24 kHz.</p><dl class=\"card-io\" data-card-io><div><dt>Input 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>Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>Kokoro 82M ialah model teks ke pertuturan berpemberat terbuka daripada hexgrad dengan lapan puluh dua juta parameter. Kad modelnya menerangkan seni bina kompak yang hanya menggunakan penyahkod, berasaskan StyleTTS 2 dan iSTFTNet. Teks bertulis ditukar kepada maklumat sebutan, kemudian kepada pertuturan dengan suara pilihan. Keluaran v1.0 yang didokumenkan menyediakan lima puluh empat suara dalam lapan bahasa; profil itu berbeza daripada keluaran v0.19 terdahulu yang khusus untuk bahasa Inggeris.</p><h4>Pilih bahasa dan suara yang sepadan</h4><p>Katalog suara meliputi bahasa Inggeris Amerika dan British, Jepun, Cina Mandarin, Sepanyol, Perancis, Hindi, Itali dan Portugis Brazil. Kedua-dua loghat bahasa Inggeris ialah varian satu bahasa. Nama suara dan tetapan bahasa perlu dipadankan: af_heart ialah contoh bahasa Inggeris Amerika dalam aliran kerja rasmi, manakala katalog mempunyai kumpulan berasingan untuk bahasa dan loghat lain.</p><p>Pilih penutur berdasarkan bahan sebenar yang akan dibacanya. Narasi kursus ringkas boleh menggunakan satu suara pratetap yang konsisten merentas bahagiannya; koleksi berbilang bahasa boleh memilih suara daripada setiap kumpulan bahasa yang diperlukan. Liputan katalog berbeza antara kumpulan. Bahasa Perancis, misalnya, diwakili oleh satu suara yang disenaraikan dan bukannya pilihan lebih besar yang tersedia untuk bahasa Inggeris.</p><h4>Sediakan sebutan dan petikan</h4><p>Saluran pemprosesan rujukan Kokoro menukar bentuk bertulis kepada fonem. Contohnya membenarkan bacaan fonetik yang eksplisit untuk sesuatu istilah, supaya nama yang sukar boleh disediakan dan bukannya dibiarkan bergantung pada ejaan yang mengelirukan. Pastikan ayat sekeliling semula jadi dan kekalkan perkataan yang patut didengar oleh pendengar.</p><p>Petikan praktikal ialah: “Panduan ini mempunyai tiga bahagian. Pertama, pilih bahan. Seterusnya, bandingkan contoh. Akhir sekali, simpan versi yang anda mahu gunakan.” Tulis frasa lengkap dan kekalkan jeda yang dibayangkan oleh tanda baca. Untuk karya yang panjang, susun input menjadi perenggan yang koheren dan bukannya menganggap seluruh dokumen sebagai satu ujaran tanpa henti.</p><p>Panduan suara menyatakan bahawa ramai penutur berprestasi terbaik dengan petikan kira-kira 100–200 token dalam rentang sekitar 500 token. Ia menyatakan kelemahan pada ujaran yang sangat pendek, khususnya di bawah 10–20 token, dan kecenderungan untuk tergesa-gesa pada petikan yang lebih panjang, terutama melebihi 400 token. Ini ialah pemerhatian penyediaan berdasarkan token, bukannya had bilangan perkataan atau tempoh rakaman. Menggabungkan fragmen pendek atau membahagikan petikan panjang boleh memberikan unit pertuturan yang lebih sesuai.</p><h4>Output audio dan rentak</h4><p>Aliran kerja rasmi menghasilkan teks yang diproses, fonem dan hasil audio bagi setiap segmen yang dijana. Ia menyimpan segmen tersebut sebagai WAV pada 24,000 Hz dan menyediakan tetapan speed dalam saluran pemprosesan rujukan. Pastikan teks segmen dan susunannya dikaitkan dengan audio supaya narasi yang dicantumkan mengikuti skrip yang dimaksudkan.</p><p>Pemeriksaan penyuntingan yang berguna ialah mendengar merentas sempadan antara dua petikan, kemudian memeriksa nama berulang dan rentak senarai. Output audio dan paparan fonem mempunyai tujuan berbeza: satu ialah rakaman yang didengar oleh pendengar, satu lagi membantu memeriksa cara teks bertulis disebut.</p><h4>Liputan bahasa dan batasan yang berguna</h4><p>Pengeluar secara jelas menyatakan bahawa sokongan bukan bahasa Inggeris boleh terhad kerana pemprosesan sebutan atau data latihan suara adalah terhad. Oleh itu, kumpulan pratetapnya tidak patut dianggap memberikan jaminan penyampaian yang sama untuk setiap petikan. Pilih penutur yang sesuai dan semak nama serta ungkapan sebenar yang diperlukan oleh tugas.</p><p>Hasil yang berguna ialah petikan pertuturan atau narasi yang dicantumkan menggunakan suara pratetap yang didokumenkan, dengan teks disediakan mengikut keperluan sebutan dan panjang petikannya. Profil ini mengikuti bahan Kokoro 82M v1.0 pengeluar; checkpoint lain, pelaksanaan yang dikuantumkan atau suara yang diubah suai secara luaran mempunyai skop teknikalnya sendiri.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · input &amp; kaedah</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Penjanaan suara</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Input</dt><dd><code>text</code></dd></div><div><dt>Output</dt><dd><code>audio</code></dd></div><div><dt>Format output</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Medan</th><th>Jenis</th><th>Keperluan</th><th>Nilai &amp; had</th><th>Lalai</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>hexgrad/kokoro-82m</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Panjang minimum: 1</div><div>Unit: aksara Unicode</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>mp3</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Gabungan bahan input</summary><p class=\"note-s\"><b>text_to_speech</b> · Diperlukan: input</p></details><details class=\"note-s\" data-method-contract><summary>Parameter kaedah dan kitar hayat</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>af_alloy, af_aoede, af_bella, af_heart, af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky, am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa, bf_alice, bf_emma, bf_isabella, bf_lily, bm_daniel, bm_fable, bm_george, bm_lewis, ef_dora, em_alex, em_santa, ff_siwis, hf_alpha, hf_beta, hm_omega, hm_psi, if_sara, im_nicola, jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro, jm_kumo, pf_dora, pm_alex, pm_santa, zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi, zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang</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 tepat; kiraan aksara Unicode tanpa penormalan</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>Kitar hayat: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id sebenar yang dikembalikan atau rekod 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 daripada profil model ini.</p><p class=\"note-s\">Aksara input dan saat audio ialah ukuran penggunaan yang berbeza.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Pelan harga</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.</p><dl data-price-conditions><dt>Mod pantas</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila mod pantas dipilih</span></dd><dt>Mod flex</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila mod flex dipilih</span></dd><dt>Usaha penaakulan maksimum</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila usaha penaakulan maksimum menggunakan pelarasan default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Kadar Ailoot</h4><h4>Harga mengikut konfigurasi</h4><p class=\"note-s\">Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadual kadar</th><th>Kuantiti yang boleh dibilkan</th><th>Unit pengebilan</th><th>Caj</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Kadar asas token</th><td data-cell-label=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>Kadar asas</td><td data-cell-label=\"Kuantiti yang boleh dibilkan\"><span class=\"card-cell-label\">Kuantiti yang boleh dibilkan</span>—</td><td data-cell-label=\"Unit pengebilan\"><span class=\"card-cell-label\">Unit pengebilan</span>—</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input · Token input</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token output</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Bacaan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · 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=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>—</td><td data-cell-label=\"Kuantiti yang boleh dibilkan\"><span class=\"card-cell-label\">Kuantiti yang boleh dibilkan</span>Setiap titik kod Unicode dikira sebagai satu aksara, termasuk aksara Han.</td><td data-cell-label=\"Unit pengebilan\"><span class=\"card-cell-label\">Unit pengebilan</span>bagi setiap 1K aksara masukan</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input · aksara input</span> <b>$0.008</b> <span class=\"price-unit\">bagi setiap 1K aksara masukan</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Butiran tarif rujukan</h4><p class=\"note-s\">Jadual rujukan peringkat model tidak mengubah pemilihan kaedah, sebut harga atau caj. Caj aktif menggunakan kadar kaedah Ailoot yang dipilih.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>hexgrad: Kokoro 82M</summary><h4>Harga mengikut konfigurasi</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Syarat pengebilan</th><th>Caj</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>hexgrad: Kokoro 82M · Konfigurasi lalai</th><td data-cell-label=\"Syarat pengebilan\"><span class=\"card-cell-label\">Syarat pengebilan</span>Konfigurasi lalai</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input · Aksara input</span> <b>USD 0.00000124</b> <span class=\"price-unit\">bagi setiap aksara masukan</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. <a href=\"/docs/ms/billing/reserve/\">Cara rizab dan penyelesaian caj berfungsi →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Penjanaan suara</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-1709-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1709-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 kod\"><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-1709-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1709-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;hexgrad/kokoro-82m&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;af_alloy&quot;, &quot;af_aoede&quot;, &quot;af_bella&quot;, &quot;af_heart&quot;, &quot;af_jessica&quot;, &quot;af_kore&quot;, &quot;af_nicole&quot;, &quot;af_nova&quot;, &quot;af_river&quot;, &quot;af_sarah&quot;, &quot;af_sky&quot;, &quot;am_adam&quot;, &quot;am_echo&quot;, &quot;am_eric&quot;, &quot;am_fenrir&quot;, &quot;am_liam&quot;, &quot;am_michael&quot;, &quot;am_onyx&quot;, &quot;am_puck&quot;, &quot;am_santa&quot;, &quot;bf_alice&quot;, &quot;bf_emma&quot;, &quot;bf_isabella&quot;, &quot;bf_lily&quot;, &quot;bm_daniel&quot;, &quot;bm_fable&quot;, &quot;bm_george&quot;, &quot;bm_lewis&quot;, &quot;ef_dora&quot;, &quot;em_alex&quot;, &quot;em_santa&quot;, &quot;ff_siwis&quot;, &quot;hf_alpha&quot;, &quot;hf_beta&quot;, &quot;hm_omega&quot;, &quot;hm_psi&quot;, &quot;if_sara&quot;, &quot;im_nicola&quot;, &quot;jf_alpha&quot;, &quot;jf_gongitsune&quot;, &quot;jf_nezumi&quot;, &quot;jf_tebukuro&quot;, &quot;jm_kumo&quot;, &quot;pf_dora&quot;, &quot;pm_alex&quot;, &quot;pm_santa&quot;, &quot;zf_xiaobei&quot;, &quot;zf_xiaoni&quot;, &quot;zf_xiaoxiao&quot;, &quot;zf_xiaoyi&quot;, &quot;zm_yunjian&quot;, &quot;zm_yunxi&quot;, &quot;zm_yunxia&quot;, &quot;zm_yunyang&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 · Penjanaan suara</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 kandungan lain</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-1710-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-panel-0\" aria-selected=\"true\" tabindex=\"0\">Pustaka media</button><button class=\"cg-tab\" id=\"model-code-1710-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Status tugas</button><button class=\"cg-tab\" id=\"model-code-1710-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1710-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Butiran aset</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kod\"><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-1710-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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-1710-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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-1710-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1710-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, fail dan bahagian kandungan yang dikembalikan.</p><p class=\"note-s\">Simpan hasil binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asal perlu disemak</h5><p class=\"note-s\">Simpan operation_id/X-Client-Request-ID asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status audio.</p></div><details class=\"card-about\" data-output-fields><summary>Medan respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Medan</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</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>Ralat dan langkah seterusnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Syarat</th><th>Langkah seterusnya</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=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Medan wajib, perwakilan bahan atau nilai parameter tidak sah</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.</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=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.</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=hexgrad%2Fkokoro-82m&amp;route=Ultra&amp;caller=hexgrad%2Fkokoro-82m&amp;fmt=speech\"><code>hexgrad/kokoro-82m</code></a></span></p><h4>Alias laluan kaedah</h4><p class=\"note-s\">Gunakan laluan kaedah yang dipaparkan di atas.</p><h4>ID pemanggil berkaitan</h4><p class=\"note-s\"><a href=\"#m=hexgrad%2Fkokoro-82m&amp;route=Ultra&amp;caller=hexgrad%2Fkokoro-82m&amp;fmt=speech\"><code>hexgrad/kokoro-82m</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "hexgrad/kokoro-82m",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "hexgrad/kokoro-82m",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|hexgrad%2Fkokoro-82m",
      "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": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "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 asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status 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 binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.",
              "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": [
                  "hexgrad/kokoro-82m"
                ],
                "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": "aksara Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "af_alloy",
                  "af_aoede",
                  "af_bella",
                  "af_heart",
                  "af_jessica",
                  "af_kore",
                  "af_nicole",
                  "af_nova",
                  "af_river",
                  "af_sarah",
                  "af_sky",
                  "am_adam",
                  "am_echo",
                  "am_eric",
                  "am_fenrir",
                  "am_liam",
                  "am_michael",
                  "am_onyx",
                  "am_puck",
                  "am_santa",
                  "bf_alice",
                  "bf_emma",
                  "bf_isabella",
                  "bf_lily",
                  "bm_daniel",
                  "bm_fable",
                  "bm_george",
                  "bm_lewis",
                  "ef_dora",
                  "em_alex",
                  "em_santa",
                  "ff_siwis",
                  "hf_alpha",
                  "hf_beta",
                  "hm_omega",
                  "hm_psi",
                  "if_sara",
                  "im_nicola",
                  "jf_alpha",
                  "jf_gongitsune",
                  "jf_nezumi",
                  "jf_tebukuro",
                  "jm_kumo",
                  "pf_dora",
                  "pm_alex",
                  "pm_santa",
                  "zf_xiaobei",
                  "zf_xiaoni",
                  "zf_xiaoxiao",
                  "zf_xiaoyi",
                  "zm_yunjian",
                  "zm_yunxi",
                  "zm_yunxia",
                  "zm_yunyang"
                ],
                "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 daripada profil model ini.",
            "Aksara input dan saat audio ialah ukuran penggunaan yang berbeza."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 tepat; kiraan aksara Unicode tanpa penormalan",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "af_alloy",
              "af_aoede",
              "af_bella",
              "af_heart",
              "af_jessica",
              "af_kore",
              "af_nicole",
              "af_nova",
              "af_river",
              "af_sarah",
              "af_sky",
              "am_adam",
              "am_echo",
              "am_eric",
              "am_fenrir",
              "am_liam",
              "am_michael",
              "am_onyx",
              "am_puck",
              "am_santa",
              "bf_alice",
              "bf_emma",
              "bf_isabella",
              "bf_lily",
              "bm_daniel",
              "bm_fable",
              "bm_george",
              "bm_lewis",
              "ef_dora",
              "em_alex",
              "em_santa",
              "ff_siwis",
              "hf_alpha",
              "hf_beta",
              "hm_omega",
              "hm_psi",
              "if_sara",
              "im_nicola",
              "jf_alpha",
              "jf_gongitsune",
              "jf_nezumi",
              "jf_tebukuro",
              "jm_kumo",
              "pf_dora",
              "pm_alex",
              "pm_santa",
              "zf_xiaobei",
              "zf_xiaoni",
              "zf_xiaoxiao",
              "zf_xiaoyi",
              "zm_yunjian",
              "zm_yunxi",
              "zm_yunxia",
              "zm_yunyang"
            ]
          },
          "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 sebenar yang dikembalikan atau rekod 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.008000",
                "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.000008",
                "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": "e43e93397bc0f4d8af3d",
            "label": "hexgrad: Kokoro 82M",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Konfigurasi lalai"
                },
                "label": "hexgrad: Kokoro 82M · Konfigurasi lalai",
                "units": [
                  {
                    "amount": "0.00000124",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "2e6b47581d2d5355918a9389",
                    "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\": \"hexgrad/kokoro-82m\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"af_alloy\", \"af_aoede\", \"af_bella\", \"af_heart\", \"af_jessica\", \"af_kore\", \"af_nicole\", \"af_nova\", \"af_river\", \"af_sarah\", \"af_sky\", \"am_adam\", \"am_echo\", \"am_eric\", \"am_fenrir\", \"am_liam\", \"am_michael\", \"am_onyx\", \"am_puck\", \"am_santa\", \"bf_alice\", \"bf_emma\", \"bf_isabella\", \"bf_lily\", \"bm_daniel\", \"bm_fable\", \"bm_george\", \"bm_lewis\", \"ef_dora\", \"em_alex\", \"em_santa\", \"ff_siwis\", \"hf_alpha\", \"hf_beta\", \"hm_omega\", \"hm_psi\", \"if_sara\", \"im_nicola\", \"jf_alpha\", \"jf_gongitsune\", \"jf_nezumi\", \"jf_tebukuro\", \"jm_kumo\", \"pf_dora\", \"pm_alex\", \"pm_santa\", \"zf_xiaobei\", \"zf_xiaoni\", \"zf_xiaoxiao\", \"zf_xiaoyi\", \"zm_yunjian\", \"zm_yunxi\", \"zm_yunxia\", \"zm_yunyang\"]')\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": 8e-06
          }
        },
        "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.008000",
                "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.000008",
                "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": "hexgrad/kokoro-82m",
        "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.008000",
            "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.000008",
            "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": "hexgrad/kokoro-82m",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "0153e4660bcbd898926b62ec7633e08f2feee1eeb87e2204095cd9773da44030",
    "input_html_sha256": "02561d37608131c6b4bae11c58b21e70fe83919b7056d92ed74daa67f5fc08a0",
    "private_audit_sha256": "70ea104f94d9d095ca9398160f98fde8a38811e313c47eeb404c8acaf7d8f5d2",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/hexgrad-kokoro-82m/",
    "description": "Kokoro 82M daripada hexgrad menjana pertuturan dengan model kompak berparameter 82 juta dan suara pratetap khusus bahasa. Profil v1.0 yang didokumenkan merangkumi lapan bahasa, 54 suara dan output audio 24 kHz.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/hexgrad-kokoro-82m/index.md",
    "title": "hexgrad: Kokoro 82M — Ailoot",
    "url": "https://ailoot.ai/models/ms/hexgrad-kokoro-82m/"
  },
  "rawModel": {
    "about": "Kokoro 82M ialah model teks ke pertuturan berpemberat terbuka daripada hexgrad dengan lapan puluh dua juta parameter. Kad modelnya menerangkan seni bina kompak yang hanya menggunakan penyahkod, berasaskan StyleTTS 2 dan iSTFTNet. Teks bertulis ditukar kepada maklumat sebutan, kemudian kepada pertuturan dengan suara pilihan. Keluaran v1.0 yang didokumenkan menyediakan lima puluh empat suara dalam lapan bahasa; profil itu berbeza daripada keluaran v0.19 terdahulu yang khusus untuk bahasa Inggeris.\n\n### Pilih bahasa dan suara yang sepadan\n\nKatalog suara meliputi bahasa Inggeris Amerika dan British, Jepun, Cina Mandarin, Sepanyol, Perancis, Hindi, Itali dan Portugis Brazil. Kedua-dua loghat bahasa Inggeris ialah varian satu bahasa. Nama suara dan tetapan bahasa perlu dipadankan: af_heart ialah contoh bahasa Inggeris Amerika dalam aliran kerja rasmi, manakala katalog mempunyai kumpulan berasingan untuk bahasa dan loghat lain.\n\nPilih penutur berdasarkan bahan sebenar yang akan dibacanya. Narasi kursus ringkas boleh menggunakan satu suara pratetap yang konsisten merentas bahagiannya; koleksi berbilang bahasa boleh memilih suara daripada setiap kumpulan bahasa yang diperlukan. Liputan katalog berbeza antara kumpulan. Bahasa Perancis, misalnya, diwakili oleh satu suara yang disenaraikan dan bukannya pilihan lebih besar yang tersedia untuk bahasa Inggeris.\n\n### Sediakan sebutan dan petikan\n\nSaluran pemprosesan rujukan Kokoro menukar bentuk bertulis kepada fonem. Contohnya membenarkan bacaan fonetik yang eksplisit untuk sesuatu istilah, supaya nama yang sukar boleh disediakan dan bukannya dibiarkan bergantung pada ejaan yang mengelirukan. Pastikan ayat sekeliling semula jadi dan kekalkan perkataan yang patut didengar oleh pendengar.\n\nPetikan praktikal ialah: “Panduan ini mempunyai tiga bahagian. Pertama, pilih bahan. Seterusnya, bandingkan contoh. Akhir sekali, simpan versi yang anda mahu gunakan.” Tulis frasa lengkap dan kekalkan jeda yang dibayangkan oleh tanda baca. Untuk karya yang panjang, susun input menjadi perenggan yang koheren dan bukannya menganggap seluruh dokumen sebagai satu ujaran tanpa henti.\n\nPanduan suara menyatakan bahawa ramai penutur berprestasi terbaik dengan petikan kira-kira 100–200 token dalam rentang sekitar 500 token. Ia menyatakan kelemahan pada ujaran yang sangat pendek, khususnya di bawah 10–20 token, dan kecenderungan untuk tergesa-gesa pada petikan yang lebih panjang, terutama melebihi 400 token. Ini ialah pemerhatian penyediaan berdasarkan token, bukannya had bilangan perkataan atau tempoh rakaman. Menggabungkan fragmen pendek atau membahagikan petikan panjang boleh memberikan unit pertuturan yang lebih sesuai.\n\n### Output audio dan rentak\n\nAliran kerja rasmi menghasilkan teks yang diproses, fonem dan hasil audio bagi setiap segmen yang dijana. Ia menyimpan segmen tersebut sebagai WAV pada 24,000 Hz dan menyediakan tetapan speed dalam saluran pemprosesan rujukan. Pastikan teks segmen dan susunannya dikaitkan dengan audio supaya narasi yang dicantumkan mengikuti skrip yang dimaksudkan.\n\nPemeriksaan penyuntingan yang berguna ialah mendengar merentas sempadan antara dua petikan, kemudian memeriksa nama berulang dan rentak senarai. Output audio dan paparan fonem mempunyai tujuan berbeza: satu ialah rakaman yang didengar oleh pendengar, satu lagi membantu memeriksa cara teks bertulis disebut.\n\n### Liputan bahasa dan batasan yang berguna\n\nPengeluar secara jelas menyatakan bahawa sokongan bukan bahasa Inggeris boleh terhad kerana pemprosesan sebutan atau data latihan suara adalah terhad. Oleh itu, kumpulan pratetapnya tidak patut dianggap memberikan jaminan penyampaian yang sama untuk setiap petikan. Pilih penutur yang sesuai dan semak nama serta ungkapan sebenar yang diperlukan oleh tugas.\n\nHasil yang berguna ialah petikan pertuturan atau narasi yang dicantumkan menggunakan suara pratetap yang didokumenkan, dengan teks disediakan mengikut keperluan sebutan dan panjang petikannya. Profil ini mengikuti bahan Kokoro 82M v1.0 pengeluar; checkpoint lain, pelaksanaan yang dikuantumkan atau suara yang diubah suai secara luaran mempunyai skop teknikalnya sendiri.",
    "alias_of": null,
    "aliases": [],
    "author": "hexgrad",
    "available": null,
    "canonical_model": "hexgrad/kokoro-82m",
    "capabilities": {
      "context_length": 4096,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.008000",
            "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.000008",
            "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": "Maklumat lengkap tentang harga konfigurasi terdapat dalam butiran."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "hexgrad/kokoro-82m",
    "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": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "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 asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status 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 binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.",
              "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": [
                  "hexgrad/kokoro-82m"
                ],
                "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": "aksara Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "af_alloy",
                  "af_aoede",
                  "af_bella",
                  "af_heart",
                  "af_jessica",
                  "af_kore",
                  "af_nicole",
                  "af_nova",
                  "af_river",
                  "af_sarah",
                  "af_sky",
                  "am_adam",
                  "am_echo",
                  "am_eric",
                  "am_fenrir",
                  "am_liam",
                  "am_michael",
                  "am_onyx",
                  "am_puck",
                  "am_santa",
                  "bf_alice",
                  "bf_emma",
                  "bf_isabella",
                  "bf_lily",
                  "bm_daniel",
                  "bm_fable",
                  "bm_george",
                  "bm_lewis",
                  "ef_dora",
                  "em_alex",
                  "em_santa",
                  "ff_siwis",
                  "hf_alpha",
                  "hf_beta",
                  "hm_omega",
                  "hm_psi",
                  "if_sara",
                  "im_nicola",
                  "jf_alpha",
                  "jf_gongitsune",
                  "jf_nezumi",
                  "jf_tebukuro",
                  "jm_kumo",
                  "pf_dora",
                  "pm_alex",
                  "pm_santa",
                  "zf_xiaobei",
                  "zf_xiaoni",
                  "zf_xiaoxiao",
                  "zf_xiaoyi",
                  "zm_yunjian",
                  "zm_yunxi",
                  "zm_yunxia",
                  "zm_yunyang"
                ],
                "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 daripada profil model ini.",
            "Aksara input dan saat audio ialah ukuran penggunaan yang berbeza."
          ],
          "input": {
            "content_type": "application/json",
            "input": "teks UTF-8 tepat; kiraan aksara Unicode tanpa penormalan",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "af_alloy",
              "af_aoede",
              "af_bella",
              "af_heart",
              "af_jessica",
              "af_kore",
              "af_nicole",
              "af_nova",
              "af_river",
              "af_sarah",
              "af_sky",
              "am_adam",
              "am_echo",
              "am_eric",
              "am_fenrir",
              "am_liam",
              "am_michael",
              "am_onyx",
              "am_puck",
              "am_santa",
              "bf_alice",
              "bf_emma",
              "bf_isabella",
              "bf_lily",
              "bm_daniel",
              "bm_fable",
              "bm_george",
              "bm_lewis",
              "ef_dora",
              "em_alex",
              "em_santa",
              "ff_siwis",
              "hf_alpha",
              "hf_beta",
              "hm_omega",
              "hm_psi",
              "if_sara",
              "im_nicola",
              "jf_alpha",
              "jf_gongitsune",
              "jf_nezumi",
              "jf_tebukuro",
              "jm_kumo",
              "pf_dora",
              "pm_alex",
              "pm_santa",
              "zf_xiaobei",
              "zf_xiaoni",
              "zf_xiaoxiao",
              "zf_xiaoyi",
              "zm_yunjian",
              "zm_yunxi",
              "zm_yunxia",
              "zm_yunyang"
            ]
          },
          "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 sebenar yang dikembalikan atau rekod 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.008000",
                "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.000008",
                "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": "e43e93397bc0f4d8af3d",
            "label": "hexgrad: Kokoro 82M",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Konfigurasi lalai"
                },
                "label": "hexgrad: Kokoro 82M · Konfigurasi lalai",
                "units": [
                  {
                    "amount": "0.00000124",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "2e6b47581d2d5355918a9389",
                    "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\": \"hexgrad/kokoro-82m\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"af_alloy\", \"af_aoede\", \"af_bella\", \"af_heart\", \"af_jessica\", \"af_kore\", \"af_nicole\", \"af_nova\", \"af_river\", \"af_sarah\", \"af_sky\", \"am_adam\", \"am_echo\", \"am_eric\", \"am_fenrir\", \"am_liam\", \"am_michael\", \"am_onyx\", \"am_puck\", \"am_santa\", \"bf_alice\", \"bf_emma\", \"bf_isabella\", \"bf_lily\", \"bm_daniel\", \"bm_fable\", \"bm_george\", \"bm_lewis\", \"ef_dora\", \"em_alex\", \"em_santa\", \"ff_siwis\", \"hf_alpha\", \"hf_beta\", \"hm_omega\", \"hm_psi\", \"if_sara\", \"im_nicola\", \"jf_alpha\", \"jf_gongitsune\", \"jf_nezumi\", \"jf_tebukuro\", \"jm_kumo\", \"pf_dora\", \"pm_alex\", \"pm_santa\", \"zf_xiaobei\", \"zf_xiaoni\", \"zf_xiaoxiao\", \"zf_xiaoyi\", \"zm_yunjian\", \"zm_yunxi\", \"zm_yunxia\", \"zm_yunyang\"]')\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": 8e-06
          }
        },
        "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.008000",
                "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.000008",
                "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": "hexgrad/kokoro-82m",
        "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.008000",
            "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.000008",
            "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": "hexgrad/kokoro-82m",
        "request_model_id": "hexgrad/kokoro-82m",
        "route_label": "Ultra"
      }
    ],
    "name": "hexgrad: Kokoro 82M",
    "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": "hosted_reference"
        },
        "dimensions": {
          "variant": null
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000008",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "variant": null
            },
            "key": "pricing.prompt",
            "label": "prompt",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_not_separately_charged_output",
            "conditions": {
              "variant": null
            },
            "key": "pricing.completion",
            "label": "completion",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "not_separately_charged_output"
          }
        ]
      }
    ],
    "public_id": "hexgrad/kokoro-82m",
    "short": "Kokoro 82M daripada hexgrad menjana pertuturan dengan model kompak berparameter 82 juta dan suara pratetap khusus bahasa. Profil v1.0 yang didokumenkan merangkumi lapan bahasa, 54 suara dan output audio 24 kHz."
  },
  "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": "Kokoro 82M daripada hexgrad menjana pertuturan dengan model kompak berparameter 82 juta dan suara pratetap khusus bahasa. Profil v1.0 yang didokumenkan merangkumi lapan bahasa, 54 suara dan output audio 24 kHz.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "c143793746723e2194924590d3be71bab5d6439717a37f8b2df4d73b8d6183a1",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "cca08c2b56642c645bb0d3cac54905583efbce969cdace0020a69f44de48427e"
}
