{
  "aboutHtml": "<p>Google Gemini 3.8 Flash TTS ialah aras persembahan suara kreatif dalam keluarga teks ke pertuturan 3.8 Google. Tumpuannya ialah kesetiaan akustik, julat emosi, loghat serantau dan kesinambungan suara watak sepanjang dialog panjang. Google mengetengahkan buku audio, narasi studio, sebutan sukar dan adegan yang memerlukan banyak lakonan vokal. Output ialah audio pertuturan daripada skrip teks yang disediakan, sesuai untuk menyemak persembahan narator atau menyusun perbualan berskrip bersama elemen produksi lain.</p><p>Mulakan dengan kata-kata tepat yang perlu didengar. Transkrip 3.8 dianggap kata demi kata, manakala penutur dan persembahan berterusan diletakkan dalam metadata pertuturan berasingan. Berikan setiap giliran identiti penutur yang jelas dan, jika berguna, arahan gaya ringkas seperti kebimbangan terkawal atau rasa ingin tahu ceria. Pecahkan satu baris kepada giliran berasingan apabila emosi atau rentak berubah dengan ketara. Ini memudahkan taklimat disemak: transkrip mengandungi dialog, dan arahan yang dilampirkan menerangkan cara bahagian itu perlu dipersembahkan. Arahan bertulis biasa yang diletakkan dalam transkrip mungkin dibaca kuat.</p><p>Sistem suara 3.8 Google merangkumi suara siap bina, pustaka suara diperluas, persona rekaan dan identiti suara direplikasi. Pilih persona asas sebelum menggunakan perubahan lakonan sementara. Loghat serantau yang stabil atau identiti watak merupakan sifat suara terpilih; medan gaya mengawal persembahan semasa. Pembuat menasihatkan penggunaan semula suara itu dengan arahan ringkas daripada mengulangi blok Audio Profile atau Director’s Notes yang panjang. Konfigurasi dialog satu permintaan yang didokumenkan menggabungkan sehingga dua penutur siap bina. Untuk watak rekaan atau direplikasi, panduan mengarahkan penjanaan giliran secara individu semasa membina pertukaran dialog berbilang watak.</p><p>Letakkan bunyi vokal manusia yang ringkas atau jeda pada titik berkaitan menggunakan tag kurungan sudut. Contoh skrip asal ialah “Saya ingat awak sudah pergi. &lt;short pause&gt; &lt;sigh&gt; Saya biarkan lampu menyala.” Lampirkan gaya penyampaian perlahan yang tertahan pada seluruh giliran daripada memasukkan arahan itu di antara kata-kata pertuturan. Tanda baca dan huruf besar boleh membantu membentuk keraguan atau menekankan kata. Google turut mendokumenkan reaksi pendengar bersempadan palang tegak untuk respons sokongan ringkas dan dialog bertindih, serta mengenal pasti Flash TTS sebagai edisi 3.8 pilihan untuk pertindihan yang lebih banyak. Pastikan reaksi tersebut cukup pendek supaya pendengar masih memahami baris utama.</p><p>Pengeluar menyenaraikan 130 bahasa yang disokong untuk Flash TTS dan menekankan liputan dialek serantau serta minoriti. Taklimat persembahan serantau berguna untuk watak buku audio setempat atau narasi yang loghatnya penting kepada khalayak. Sediakan skrip dalam bahasa akhirnya, dengan ejaan konsisten bagi nama berulang dan bacaan singkatan serta nombor yang disengajakan. Sebagai langkah editorial, mulakan semakan pendengaran dengan petikan yang mengandungi nama sukar, perubahan dialek atau peralihan emosi. Loghat dan rentak yang diingini perlu dinilai pada suara terjana, bukannya diandaikan daripada label bahasa sahaja.</p><p>Panduan output 3.8 membezakan fail lengkap daripada audio distrim. Lalai permintaan lengkap ialah fail WAV dengan pengepala RIFF: 24 kHz, mono, PCM little-endian bertanda 16 bit. Lalai penstriman ialah PCM linear mentah tanpa pengepala dengan ciri sampel yang sama. PCM linear mentah, mu-law dan A-law turut didokumenkan sebagai pilihan pengekodan. Gunakan maklumat pengekodan sebenar semasa menyediakan main balik atau mengimport hasil ke penyunting. Untuk urutan fail dialog berasingan, kekalkan format yang konsisten dan semak sambungan untuk perubahan mendadak pada aras bunyi, rentak atau nada ambien bilik.</p><p>Halaman model khusus Google menetapkan had penyajian Gemini API sebanyak 8,192 token input dan 16,384 token output. Ini ialah had token, bukannya tempoh buku audio tetap atau bilangan saat pertuturan yang tepat. Bahagikan skrip panjang pada sempadan bermakna dan kekalkan identiti suara terpilih merentas bahagian. Dalam produksi sepanjang satu bab, dengarkan kesinambungan pada perubahan perenggan dan adegan serta ketepatan perkataan dalam setiap segmen. Semakan praktikal yang baik merekodkan baris yang memerlukan pindaan sebutan atau lakonan, daripada menulis semula seluruh taklimat suara selepas setiap rakaman.</p><p>Flash TTS dan Flash-Lite TTS berkongsi struktur penyediaan 3.8, jadi pilihan edisi boleh mengikut keperluan kerja. Flash TTS menekankan lakonan, dialog kompleks, sebutan sukar dan liputan dialek lebih luas; Flash-Lite menekankan daya pemprosesan untuk kandungan pertuturan rutin. Kawalan ekspresif berkaitan pertuturan manusia dan peristiwa vokal. Kesan latar belakang, skor muzik dan adunan produksi lengkap boleh dirancang sebagai aset berasingan. Penulisan skrip, terjemahan dan pengecaman pertuturan rakaman kekal sebagai peringkat berasingan di sekeliling model teks ke audio ini.</p>",
  "aboutText": "Google Gemini 3.8 Flash TTS ialah aras persembahan suara kreatif dalam keluarga teks ke pertuturan 3.8 Google. Tumpuannya ialah kesetiaan akustik, julat emosi, loghat serantau dan kesinambungan suara watak sepanjang dialog panjang. Google mengetengahkan buku audio, narasi studio, sebutan sukar dan adegan yang memerlukan banyak lakonan vokal. Output ialah audio pertuturan daripada skrip teks yang disediakan, sesuai untuk menyemak persembahan narator atau menyusun perbualan berskrip bersama elemen produksi lain.\n\nMulakan dengan kata-kata tepat yang perlu didengar. Transkrip 3.8 dianggap kata demi kata, manakala penutur dan persembahan berterusan diletakkan dalam metadata pertuturan berasingan. Berikan setiap giliran identiti penutur yang jelas dan, jika berguna, arahan gaya ringkas seperti kebimbangan terkawal atau rasa ingin tahu ceria. Pecahkan satu baris kepada giliran berasingan apabila emosi atau rentak berubah dengan ketara. Ini memudahkan taklimat disemak: transkrip mengandungi dialog, dan arahan yang dilampirkan menerangkan cara bahagian itu perlu dipersembahkan. Arahan bertulis biasa yang diletakkan dalam transkrip mungkin dibaca kuat.\n\nSistem suara 3.8 Google merangkumi suara siap bina, pustaka suara diperluas, persona rekaan dan identiti suara direplikasi. Pilih persona asas sebelum menggunakan perubahan lakonan sementara. Loghat serantau yang stabil atau identiti watak merupakan sifat suara terpilih; medan gaya mengawal persembahan semasa. Pembuat menasihatkan penggunaan semula suara itu dengan arahan ringkas daripada mengulangi blok Audio Profile atau Director’s Notes yang panjang. Konfigurasi dialog satu permintaan yang didokumenkan menggabungkan sehingga dua penutur siap bina. Untuk watak rekaan atau direplikasi, panduan mengarahkan penjanaan giliran secara individu semasa membina pertukaran dialog berbilang watak.\n\nLetakkan bunyi vokal manusia yang ringkas atau jeda pada titik berkaitan menggunakan tag kurungan sudut. Contoh skrip asal ialah “Saya ingat awak sudah pergi. <short pause> <sigh> Saya biarkan lampu menyala.” Lampirkan gaya penyampaian perlahan yang tertahan pada seluruh giliran daripada memasukkan arahan itu di antara kata-kata pertuturan. Tanda baca dan huruf besar boleh membantu membentuk keraguan atau menekankan kata. Google turut mendokumenkan reaksi pendengar bersempadan palang tegak untuk respons sokongan ringkas dan dialog bertindih, serta mengenal pasti Flash TTS sebagai edisi 3.8 pilihan untuk pertindihan yang lebih banyak. Pastikan reaksi tersebut cukup pendek supaya pendengar masih memahami baris utama.\n\nPengeluar menyenaraikan 130 bahasa yang disokong untuk Flash TTS dan menekankan liputan dialek serantau serta minoriti. Taklimat persembahan serantau berguna untuk watak buku audio setempat atau narasi yang loghatnya penting kepada khalayak. Sediakan skrip dalam bahasa akhirnya, dengan ejaan konsisten bagi nama berulang dan bacaan singkatan serta nombor yang disengajakan. Sebagai langkah editorial, mulakan semakan pendengaran dengan petikan yang mengandungi nama sukar, perubahan dialek atau peralihan emosi. Loghat dan rentak yang diingini perlu dinilai pada suara terjana, bukannya diandaikan daripada label bahasa sahaja.\n\nPanduan output 3.8 membezakan fail lengkap daripada audio distrim. Lalai permintaan lengkap ialah fail WAV dengan pengepala RIFF: 24 kHz, mono, PCM little-endian bertanda 16 bit. Lalai penstriman ialah PCM linear mentah tanpa pengepala dengan ciri sampel yang sama. PCM linear mentah, mu-law dan A-law turut didokumenkan sebagai pilihan pengekodan. Gunakan maklumat pengekodan sebenar semasa menyediakan main balik atau mengimport hasil ke penyunting. Untuk urutan fail dialog berasingan, kekalkan format yang konsisten dan semak sambungan untuk perubahan mendadak pada aras bunyi, rentak atau nada ambien bilik.\n\nHalaman model khusus Google menetapkan had penyajian Gemini API sebanyak 8,192 token input dan 16,384 token output. Ini ialah had token, bukannya tempoh buku audio tetap atau bilangan saat pertuturan yang tepat. Bahagikan skrip panjang pada sempadan bermakna dan kekalkan identiti suara terpilih merentas bahagian. Dalam produksi sepanjang satu bab, dengarkan kesinambungan pada perubahan perenggan dan adegan serta ketepatan perkataan dalam setiap segmen. Semakan praktikal yang baik merekodkan baris yang memerlukan pindaan sebutan atau lakonan, daripada menulis semula seluruh taklimat suara selepas setiap rakaman.\n\nFlash TTS dan Flash-Lite TTS berkongsi struktur penyediaan 3.8, jadi pilihan edisi boleh mengikut keperluan kerja. Flash TTS menekankan lakonan, dialog kompleks, sebutan sukar dan liputan dialek lebih luas; Flash-Lite menekankan daya pemprosesan untuk kandungan pertuturan rutin. Kawalan ekspresif berkaitan pertuturan manusia dan peristiwa vokal. Kesan latar belakang, skor muzik dan adunan produksi lengkap boleh dirancang sebagai aset berasingan. Penulisan skrip, terjemahan dan pengecaman pertuturan rakaman kekal sebagai peringkat berasingan di sekeliling model teks ke audio ini.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1ecf7975a6b43d99e5ddea38b176338df84c575ece7f768e316597db61211292",
    "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\">G</span><h2 id=\"sheet-title\">Google: Gemini 3.8 Flash TTS</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-3.8-flash-tts</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|google%2Fgemini-3.8-flash-tts\">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\">Google Gemini 3.8 Flash TTS menghasilkan pertuturan ekspresif untuk buku audio, narasi studio dan dialog watak. Ia menggabungkan skrip kata demi kata dengan arahan penutur dan lakonan berasingan, tag vokal sementara serta liputan 130 bahasa, dengan tumpuan pada sebutan, loghat serantau dan konsistensi suara.</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>Google Gemini 3.8 Flash TTS ialah aras persembahan suara kreatif dalam keluarga teks ke pertuturan 3.8 Google. Tumpuannya ialah kesetiaan akustik, julat emosi, loghat serantau dan kesinambungan suara watak sepanjang dialog panjang. Google mengetengahkan buku audio, narasi studio, sebutan sukar dan adegan yang memerlukan banyak lakonan vokal. Output ialah audio pertuturan daripada skrip teks yang disediakan, sesuai untuk menyemak persembahan narator atau menyusun perbualan berskrip bersama elemen produksi lain.</p><p>Mulakan dengan kata-kata tepat yang perlu didengar. Transkrip 3.8 dianggap kata demi kata, manakala penutur dan persembahan berterusan diletakkan dalam metadata pertuturan berasingan. Berikan setiap giliran identiti penutur yang jelas dan, jika berguna, arahan gaya ringkas seperti kebimbangan terkawal atau rasa ingin tahu ceria. Pecahkan satu baris kepada giliran berasingan apabila emosi atau rentak berubah dengan ketara. Ini memudahkan taklimat disemak: transkrip mengandungi dialog, dan arahan yang dilampirkan menerangkan cara bahagian itu perlu dipersembahkan. Arahan bertulis biasa yang diletakkan dalam transkrip mungkin dibaca kuat.</p><p>Sistem suara 3.8 Google merangkumi suara siap bina, pustaka suara diperluas, persona rekaan dan identiti suara direplikasi. Pilih persona asas sebelum menggunakan perubahan lakonan sementara. Loghat serantau yang stabil atau identiti watak merupakan sifat suara terpilih; medan gaya mengawal persembahan semasa. Pembuat menasihatkan penggunaan semula suara itu dengan arahan ringkas daripada mengulangi blok Audio Profile atau Director’s Notes yang panjang. Konfigurasi dialog satu permintaan yang didokumenkan menggabungkan sehingga dua penutur siap bina. Untuk watak rekaan atau direplikasi, panduan mengarahkan penjanaan giliran secara individu semasa membina pertukaran dialog berbilang watak.</p><p>Letakkan bunyi vokal manusia yang ringkas atau jeda pada titik berkaitan menggunakan tag kurungan sudut. Contoh skrip asal ialah “Saya ingat awak sudah pergi. &lt;short pause&gt; &lt;sigh&gt; Saya biarkan lampu menyala.” Lampirkan gaya penyampaian perlahan yang tertahan pada seluruh giliran daripada memasukkan arahan itu di antara kata-kata pertuturan. Tanda baca dan huruf besar boleh membantu membentuk keraguan atau menekankan kata. Google turut mendokumenkan reaksi pendengar bersempadan palang tegak untuk respons sokongan ringkas dan dialog bertindih, serta mengenal pasti Flash TTS sebagai edisi 3.8 pilihan untuk pertindihan yang lebih banyak. Pastikan reaksi tersebut cukup pendek supaya pendengar masih memahami baris utama.</p><p>Pengeluar menyenaraikan 130 bahasa yang disokong untuk Flash TTS dan menekankan liputan dialek serantau serta minoriti. Taklimat persembahan serantau berguna untuk watak buku audio setempat atau narasi yang loghatnya penting kepada khalayak. Sediakan skrip dalam bahasa akhirnya, dengan ejaan konsisten bagi nama berulang dan bacaan singkatan serta nombor yang disengajakan. Sebagai langkah editorial, mulakan semakan pendengaran dengan petikan yang mengandungi nama sukar, perubahan dialek atau peralihan emosi. Loghat dan rentak yang diingini perlu dinilai pada suara terjana, bukannya diandaikan daripada label bahasa sahaja.</p><p>Panduan output 3.8 membezakan fail lengkap daripada audio distrim. Lalai permintaan lengkap ialah fail WAV dengan pengepala RIFF: 24 kHz, mono, PCM little-endian bertanda 16 bit. Lalai penstriman ialah PCM linear mentah tanpa pengepala dengan ciri sampel yang sama. PCM linear mentah, mu-law dan A-law turut didokumenkan sebagai pilihan pengekodan. Gunakan maklumat pengekodan sebenar semasa menyediakan main balik atau mengimport hasil ke penyunting. Untuk urutan fail dialog berasingan, kekalkan format yang konsisten dan semak sambungan untuk perubahan mendadak pada aras bunyi, rentak atau nada ambien bilik.</p><p>Halaman model khusus Google menetapkan had penyajian Gemini API sebanyak 8,192 token input dan 16,384 token output. Ini ialah had token, bukannya tempoh buku audio tetap atau bilangan saat pertuturan yang tepat. Bahagikan skrip panjang pada sempadan bermakna dan kekalkan identiti suara terpilih merentas bahagian. Dalam produksi sepanjang satu bab, dengarkan kesinambungan pada perubahan perenggan dan adegan serta ketepatan perkataan dalam setiap segmen. Semakan praktikal yang baik merekodkan baris yang memerlukan pindaan sebutan atau lakonan, daripada menulis semula seluruh taklimat suara selepas setiap rakaman.</p><p>Flash TTS dan Flash-Lite TTS berkongsi struktur penyediaan 3.8, jadi pilihan edisi boleh mengikut keperluan kerja. Flash TTS menekankan lakonan, dialog kompleks, sebutan sukar dan liputan dialek lebih luas; Flash-Lite menekankan daya pemprosesan untuk kandungan pertuturan rutin. Kawalan ekspresif berkaitan pertuturan manusia dan peristiwa vokal. Kesan latar belakang, skor muzik dan adunan produksi lengkap boleh dirancang sebagai aset berasingan. Penulisan skrip, terjemahan dan pengecaman pertuturan rakaman kekal sebagai peringkat berasingan di sekeliling model teks ke audio ini.</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 · Pertuturan</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></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><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>google/gemini-3.8-flash-tts</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr><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></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr><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>Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat</div><div>Panjang minimum: 1</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr><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>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>mp3, pcm</div></td><td data-cell-label=\"Lalai\" data-default=\"known\"><span class=\"card-cell-label\">Lalai</span>pcm</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>object</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr></tbody></table></div><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</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></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>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=\"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>token input</th><td data-cell-label=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>—</td><td data-cell-label=\"Unit pengebilan\"><span class=\"card-cell-label\">Unit pengebilan</span>/ 1K token</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input</span> <b>$0.001</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>token output</th><td data-cell-label=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>—</td><td data-cell-label=\"Unit pengebilan\"><span class=\"card-cell-label\">Unit pengebilan</span>/ 1K token</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Output</span> <b>$0.018</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></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 · Pertuturan</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-1478-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1478-panel-0\" aria-selected=\"true\" tabindex=\"0\">Gunakan input sebenar dan simpan hasil lengkap</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-1478-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1478-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;google/gemini-3.8-flash-tts&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;Zephyr&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Pertuturan</h4><p class=\"note-s\">Audio binari lengkap atau respons audio_url asal, pengepala dan setiap aset milik anda.</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-1479-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1479-panel-0\" aria-selected=\"true\" tabindex=\"0\">Baca aset sedia ada yang menjadi milik anda</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-1479-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1479-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>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 respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asal perlu disemak</h5><p class=\"note-s\">Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan.</p></div></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=google%2Fgemini-3.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></span></p><h4>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=google%2Fgemini-3.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.8-flash-tts",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|google%2Fgemini-3.8-flash-tts",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan."
            },
            "outputs": {
              "all_results": "Simpan respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Audio binari lengkap atau respons audio_url asal, pengepala dan setiap aset milik anda."
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.8-flash-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash-tts"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.8-flash-tts",
                "voice": "Zephyr"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Pertuturan",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "input_token": 1e-06,
            "output_token": 1.8e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-3.8-flash-tts",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "bdbdd98181090078fdf99cb3f886a44e49c534afa708cc7ea938443ea7917c16",
    "input_html_sha256": "3cf4a137a75f6285ab426b4acb1ad845cf3cbfdfe8793f4574d15a5ed1f3275c",
    "private_audit_sha256": "0df6ebdd8af0ecef0a1f84eed008186479573baac3c608b6d8bc3223d5f56812",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/google-gemini-3-8-flash-tts/",
    "description": "Google Gemini 3.8 Flash TTS menghasilkan pertuturan ekspresif untuk buku audio, narasi studio dan dialog watak. Ia menggabungkan skrip kata demi kata dengan arahan penutur dan lakonan berasingan, tag vokal sementara serta liputan 130 bahasa, dengan tumpuan pada sebutan, loghat serantau dan konsistensi suara.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/google-gemini-3-8-flash-tts/index.md",
    "title": "Google: Gemini 3.8 Flash TTS — Ailoot",
    "url": "https://ailoot.ai/models/ms/google-gemini-3-8-flash-tts/"
  },
  "rawModel": {
    "about": "Google Gemini 3.8 Flash TTS ialah aras persembahan suara kreatif dalam keluarga teks ke pertuturan 3.8 Google. Tumpuannya ialah kesetiaan akustik, julat emosi, loghat serantau dan kesinambungan suara watak sepanjang dialog panjang. Google mengetengahkan buku audio, narasi studio, sebutan sukar dan adegan yang memerlukan banyak lakonan vokal. Output ialah audio pertuturan daripada skrip teks yang disediakan, sesuai untuk menyemak persembahan narator atau menyusun perbualan berskrip bersama elemen produksi lain.\n\nMulakan dengan kata-kata tepat yang perlu didengar. Transkrip 3.8 dianggap kata demi kata, manakala penutur dan persembahan berterusan diletakkan dalam metadata pertuturan berasingan. Berikan setiap giliran identiti penutur yang jelas dan, jika berguna, arahan gaya ringkas seperti kebimbangan terkawal atau rasa ingin tahu ceria. Pecahkan satu baris kepada giliran berasingan apabila emosi atau rentak berubah dengan ketara. Ini memudahkan taklimat disemak: transkrip mengandungi dialog, dan arahan yang dilampirkan menerangkan cara bahagian itu perlu dipersembahkan. Arahan bertulis biasa yang diletakkan dalam transkrip mungkin dibaca kuat.\n\nSistem suara 3.8 Google merangkumi suara siap bina, pustaka suara diperluas, persona rekaan dan identiti suara direplikasi. Pilih persona asas sebelum menggunakan perubahan lakonan sementara. Loghat serantau yang stabil atau identiti watak merupakan sifat suara terpilih; medan gaya mengawal persembahan semasa. Pembuat menasihatkan penggunaan semula suara itu dengan arahan ringkas daripada mengulangi blok Audio Profile atau Director’s Notes yang panjang. Konfigurasi dialog satu permintaan yang didokumenkan menggabungkan sehingga dua penutur siap bina. Untuk watak rekaan atau direplikasi, panduan mengarahkan penjanaan giliran secara individu semasa membina pertukaran dialog berbilang watak.\n\nLetakkan bunyi vokal manusia yang ringkas atau jeda pada titik berkaitan menggunakan tag kurungan sudut. Contoh skrip asal ialah “Saya ingat awak sudah pergi. <short pause> <sigh> Saya biarkan lampu menyala.” Lampirkan gaya penyampaian perlahan yang tertahan pada seluruh giliran daripada memasukkan arahan itu di antara kata-kata pertuturan. Tanda baca dan huruf besar boleh membantu membentuk keraguan atau menekankan kata. Google turut mendokumenkan reaksi pendengar bersempadan palang tegak untuk respons sokongan ringkas dan dialog bertindih, serta mengenal pasti Flash TTS sebagai edisi 3.8 pilihan untuk pertindihan yang lebih banyak. Pastikan reaksi tersebut cukup pendek supaya pendengar masih memahami baris utama.\n\nPengeluar menyenaraikan 130 bahasa yang disokong untuk Flash TTS dan menekankan liputan dialek serantau serta minoriti. Taklimat persembahan serantau berguna untuk watak buku audio setempat atau narasi yang loghatnya penting kepada khalayak. Sediakan skrip dalam bahasa akhirnya, dengan ejaan konsisten bagi nama berulang dan bacaan singkatan serta nombor yang disengajakan. Sebagai langkah editorial, mulakan semakan pendengaran dengan petikan yang mengandungi nama sukar, perubahan dialek atau peralihan emosi. Loghat dan rentak yang diingini perlu dinilai pada suara terjana, bukannya diandaikan daripada label bahasa sahaja.\n\nPanduan output 3.8 membezakan fail lengkap daripada audio distrim. Lalai permintaan lengkap ialah fail WAV dengan pengepala RIFF: 24 kHz, mono, PCM little-endian bertanda 16 bit. Lalai penstriman ialah PCM linear mentah tanpa pengepala dengan ciri sampel yang sama. PCM linear mentah, mu-law dan A-law turut didokumenkan sebagai pilihan pengekodan. Gunakan maklumat pengekodan sebenar semasa menyediakan main balik atau mengimport hasil ke penyunting. Untuk urutan fail dialog berasingan, kekalkan format yang konsisten dan semak sambungan untuk perubahan mendadak pada aras bunyi, rentak atau nada ambien bilik.\n\nHalaman model khusus Google menetapkan had penyajian Gemini API sebanyak 8,192 token input dan 16,384 token output. Ini ialah had token, bukannya tempoh buku audio tetap atau bilangan saat pertuturan yang tepat. Bahagikan skrip panjang pada sempadan bermakna dan kekalkan identiti suara terpilih merentas bahagian. Dalam produksi sepanjang satu bab, dengarkan kesinambungan pada perubahan perenggan dan adegan serta ketepatan perkataan dalam setiap segmen. Semakan praktikal yang baik merekodkan baris yang memerlukan pindaan sebutan atau lakonan, daripada menulis semula seluruh taklimat suara selepas setiap rakaman.\n\nFlash TTS dan Flash-Lite TTS berkongsi struktur penyediaan 3.8, jadi pilihan edisi boleh mengikut keperluan kerja. Flash TTS menekankan lakonan, dialog kompleks, sebutan sukar dan liputan dialek lebih luas; Flash-Lite menekankan daya pemprosesan untuk kandungan pertuturan rutin. Kawalan ekspresif berkaitan pertuturan manusia dan peristiwa vokal. Kesan latar belakang, skor muzik dan adunan produksi lengkap boleh dirancang sebagai aset berasingan. Penulisan skrip, terjemahan dan pengecaman pertuturan rakaman kekal sebagai peringkat berasingan di sekeliling model teks ke audio ini.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 32768,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Maklumat lengkap tentang harga konfigurasi terdapat dalam butiran."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "google/gemini-3.8-flash-tts",
    "input": [
      "text"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan."
            },
            "outputs": {
              "all_results": "Simpan respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Audio binari lengkap atau respons audio_url asal, pengepala dan setiap aset milik anda."
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.8-flash-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash-tts"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.8-flash-tts",
                "voice": "Zephyr"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Pertuturan",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "input_token": 1e-06,
            "output_token": 1.8e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-3.8-flash-tts",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.8 Flash TTS",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.018,
      "out_label": "/ 1K tokens",
      "sort_in": null,
      "sort_out": 0.018,
      "varies": true
    },
    "short": "Google Gemini 3.8 Flash TTS menghasilkan pertuturan ekspresif untuk buku audio, narasi studio dan dialog watak. Ia menggabungkan skrip kata demi kata dengan arahan penutur dan lakonan berasingan, tag vokal sementara serta liputan 130 bahasa, dengan tumpuan pada sebutan, loghat serantau dan konsistensi suara."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Google Gemini 3.8 Flash TTS menghasilkan pertuturan ekspresif untuk buku audio, narasi studio dan dialog watak. Ia menggabungkan skrip kata demi kata dengan arahan penutur dan lakonan berasingan, tag vokal sementara serta liputan 130 bahasa, dengan tumpuan pada sebutan, loghat serantau dan konsistensi suara.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b6af5723b9b9487e9d791a217f9be97936e8aa37c0f75c80b405dbfa09a6108a",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "6a3163d730b44e9c740ca98e5c11213f59ceabe62af28359bcd1cd1d4383e3e9"
}
