{
  "aboutHtml": "<p>Google Gemini 3.1 Flash TTS Preview ialah edisi teks ke pertuturan keluarga Gemini 3.1 Flash Audio. Ia menerima teks dan menghasilkan audio pertuturan dengan ekspresi yang diarahkan prom. Google menerangkan generasi ini sebagai penambahbaikan yang menjadikan pertuturan lebih semula jadi serta meningkatkan kebolehkawalan dan prestasi berbilang bahasa, dengan dialog berbilang penutur secara asal serta lebih daripada 70 bahasa. Kegunaan praktikal ialah pelajaran bernarasi ringkas, pertukaran dialog watak atau petikan lisan yang penyampaiannya sama penting dengan ungkapannya.</p><p>Sediakan skrip lengkap dan taklimat persembahan. Generasi ini menggunakan arahan bahasa semula jadi dalam input teks untuk membimbing gaya vokal, rentak dan penyampaian. Keluaran Google memperkenalkan arahan adegan untuk menetapkan situasi, Audio Profiles penutur untuk mentakrif watak dan Director’s Notes untuk membimbing rentak, nada serta loghat. Pastikan bahagian itu dapat dikenal pasti semasa menyediakan prom supaya kata-kata yang dimaksudkan dan arahan persembahan boleh disemak secara bebas. Taklimat padat lebih mudah dipinda daripada beberapa huraian bersaing bagi suara sama.</p><p>Contohnya, taklimat latihan asal boleh menerangkan narator tenang yang menjelaskan bahan pameran muzium, dengan ungkapan bertempo terkawal dan nada lebih mesra pada ayat akhir. Skrip yang mengiringinya perlu mengandungi nama sebenar bahan pameran dan ungkapan tepat yang perlu disuarakan. Untuk dialog, berikan watak profil berbeza dan urutan giliran jelas. Gunakan konteks adegan untuk menerangkan sama ada seorang penutur menenangkan yang lain, bertanya soalan ikhlas atau membalas dengan kejutan terkawal. Artifak terjana yang perlu dinilai ialah persembahan skrip tersebut yang boleh didengar.</p><p>Tag audio sebaris menambah kawalan setempat dalam teks, membolehkan ekspresi penutur berubah dalam ayat daripada bergantung sepenuhnya pada arahan pembukaan. Google menerangkan tag sebagai kawalan gaya vokal, rentak dan penyampaian. Gunakannya apabila persembahan memerlukan perubahan tertentu dan kekalkan ungkapan lain semula jadi untuk dituturkan. Perbezaan berguna edisi ini ialah antara taklimat watak atau adegan aras tinggi dengan perubahan penyampaian setempat. Petikan neutral ringkas boleh menetapkan suara asas sebelum skrip menambah arahan emosi.</p><p>Untuk kerja berbilang bahasa, bekalkan skrip dalam bahasa akhir dan nyatakan loghat serta gaya pertuturan yang dikehendaki dalam taklimat. Pengumuman Google mendokumenkan sokongan lebih daripada 70 bahasa. Sebagai persediaan editorial praktikal, gunakan satu ejaan konsisten bagi nama berulang, kembangkan singkatan kabur apabila satu bacaan diperlukan dan semak nombor dalam hasil lisan. Label bahasa sahaja tidak menentukan cara nama jenama atau istilah pinjaman perlu dibunyikan. Bandingkan petikan yang mengandungi istilah itu dengan bacaan yang dimaksudkan sebelum menerima narasi panjang.</p><p>Halaman model Gemini API khusus menyenaraikan had input 8,192 token dan had output 16,384 token bagi model pratonton ini. Kad model TTS asal DeepMind pula menyenaraikan input teks sehingga 16K token dan output audio 32K token; angka kad model itu berbeza daripada had penyajian Gemini API. Kira arahan persembahan serta skrip sebagai sebahagian input yang disediakan. Peruntukan output dinyatakan dalam token audio, jadi ia tidak menjamin tempoh rakaman tertentu. Susun pelajaran atau cerita panjang kepada bahagian koheren, kekalkan taklimat watak sama dan dengarkan sambungannya. Untuk dialog berskrip, semak atribusi serta turutan giliran selain perkataan dituturkan dan penyampaian emosi.</p><p>Dokumentasi migrasi Google mengenal pasti output lalai 3.1 sebagai PCM mentah tanpa pengepala dengan jenis audio/l16. Bait audio memerlukan maklumat main balik atau bekas yang sesuai semasa menyediakan rakaman boleh sunting; menambah nama fail WAV sahaja tidak menghasilkan pengepala WAV. Semak format sebenar yang dikembalikan sebelum mengimport hasil. Google turut menyatakan bahawa audio terjana Gemini 3.1 Flash TTS mempunyai tera air SynthID yang tidak dapat dikesan oleh deria. Tera air berkaitan pengenalpastian audio terjana dan tidak menggantikan transkrip, label penutur atau semakan pendengaran.</p><p>Gaya penyediaan 3.1 berbeza dengan ketara daripada 3.8. Gemini 3.8 memindahkan arahan berterusan dan identiti penutur ke metadata pertuturan berstruktur, menggunakan tag berkurungan sudut untuk peristiwa pada titik tertentu serta menukar lalai permintaan lengkap kepada WAV. Kekalkan prom 3.1 sebagai prom 3.1 daripada mencampurkan struktur permintaan lebih baharu itu. Jadual model disokong Google menyenaraikan sintesis satu dan berbilang penutur bagi 3.1, manakala kawalan suara rekaan serta replikasi suara tergolong dalam entri 3.8. Edisi Flash Live berasingan mengendalikan input audio interaktif; edisi TTS ini menyediakan produksi teks ke audio yang disiapkan.</p><p>Semak rakaman berdasarkan skrip bertulis untuk perkataan tertinggal atau berulang, nama, pemasaan giliran dan perubahan emosi yang dimaksudkan. Jika satu ayat memerlukan penekanan berbeza, pinda arahan setempat itu dan semak peralihan terjejas. Aliran kerja ini menjadikan taklimat persembahan berguna: ia merekodkan perkara tentang penutur yang perlu kekal stabil dan perkara yang perlu berubah dalam petikan itu, manakala skrip mengekalkan kandungan yang perlu didengar khalayak.</p>",
  "aboutText": "Google Gemini 3.1 Flash TTS Preview ialah edisi teks ke pertuturan keluarga Gemini 3.1 Flash Audio. Ia menerima teks dan menghasilkan audio pertuturan dengan ekspresi yang diarahkan prom. Google menerangkan generasi ini sebagai penambahbaikan yang menjadikan pertuturan lebih semula jadi serta meningkatkan kebolehkawalan dan prestasi berbilang bahasa, dengan dialog berbilang penutur secara asal serta lebih daripada 70 bahasa. Kegunaan praktikal ialah pelajaran bernarasi ringkas, pertukaran dialog watak atau petikan lisan yang penyampaiannya sama penting dengan ungkapannya.\n\nSediakan skrip lengkap dan taklimat persembahan. Generasi ini menggunakan arahan bahasa semula jadi dalam input teks untuk membimbing gaya vokal, rentak dan penyampaian. Keluaran Google memperkenalkan arahan adegan untuk menetapkan situasi, Audio Profiles penutur untuk mentakrif watak dan Director’s Notes untuk membimbing rentak, nada serta loghat. Pastikan bahagian itu dapat dikenal pasti semasa menyediakan prom supaya kata-kata yang dimaksudkan dan arahan persembahan boleh disemak secara bebas. Taklimat padat lebih mudah dipinda daripada beberapa huraian bersaing bagi suara sama.\n\nContohnya, taklimat latihan asal boleh menerangkan narator tenang yang menjelaskan bahan pameran muzium, dengan ungkapan bertempo terkawal dan nada lebih mesra pada ayat akhir. Skrip yang mengiringinya perlu mengandungi nama sebenar bahan pameran dan ungkapan tepat yang perlu disuarakan. Untuk dialog, berikan watak profil berbeza dan urutan giliran jelas. Gunakan konteks adegan untuk menerangkan sama ada seorang penutur menenangkan yang lain, bertanya soalan ikhlas atau membalas dengan kejutan terkawal. Artifak terjana yang perlu dinilai ialah persembahan skrip tersebut yang boleh didengar.\n\nTag audio sebaris menambah kawalan setempat dalam teks, membolehkan ekspresi penutur berubah dalam ayat daripada bergantung sepenuhnya pada arahan pembukaan. Google menerangkan tag sebagai kawalan gaya vokal, rentak dan penyampaian. Gunakannya apabila persembahan memerlukan perubahan tertentu dan kekalkan ungkapan lain semula jadi untuk dituturkan. Perbezaan berguna edisi ini ialah antara taklimat watak atau adegan aras tinggi dengan perubahan penyampaian setempat. Petikan neutral ringkas boleh menetapkan suara asas sebelum skrip menambah arahan emosi.\n\nUntuk kerja berbilang bahasa, bekalkan skrip dalam bahasa akhir dan nyatakan loghat serta gaya pertuturan yang dikehendaki dalam taklimat. Pengumuman Google mendokumenkan sokongan lebih daripada 70 bahasa. Sebagai persediaan editorial praktikal, gunakan satu ejaan konsisten bagi nama berulang, kembangkan singkatan kabur apabila satu bacaan diperlukan dan semak nombor dalam hasil lisan. Label bahasa sahaja tidak menentukan cara nama jenama atau istilah pinjaman perlu dibunyikan. Bandingkan petikan yang mengandungi istilah itu dengan bacaan yang dimaksudkan sebelum menerima narasi panjang.\n\nHalaman model Gemini API khusus menyenaraikan had input 8,192 token dan had output 16,384 token bagi model pratonton ini. Kad model TTS asal DeepMind pula menyenaraikan input teks sehingga 16K token dan output audio 32K token; angka kad model itu berbeza daripada had penyajian Gemini API. Kira arahan persembahan serta skrip sebagai sebahagian input yang disediakan. Peruntukan output dinyatakan dalam token audio, jadi ia tidak menjamin tempoh rakaman tertentu. Susun pelajaran atau cerita panjang kepada bahagian koheren, kekalkan taklimat watak sama dan dengarkan sambungannya. Untuk dialog berskrip, semak atribusi serta turutan giliran selain perkataan dituturkan dan penyampaian emosi.\n\nDokumentasi migrasi Google mengenal pasti output lalai 3.1 sebagai PCM mentah tanpa pengepala dengan jenis audio/l16. Bait audio memerlukan maklumat main balik atau bekas yang sesuai semasa menyediakan rakaman boleh sunting; menambah nama fail WAV sahaja tidak menghasilkan pengepala WAV. Semak format sebenar yang dikembalikan sebelum mengimport hasil. Google turut menyatakan bahawa audio terjana Gemini 3.1 Flash TTS mempunyai tera air SynthID yang tidak dapat dikesan oleh deria. Tera air berkaitan pengenalpastian audio terjana dan tidak menggantikan transkrip, label penutur atau semakan pendengaran.\n\nGaya penyediaan 3.1 berbeza dengan ketara daripada 3.8. Gemini 3.8 memindahkan arahan berterusan dan identiti penutur ke metadata pertuturan berstruktur, menggunakan tag berkurungan sudut untuk peristiwa pada titik tertentu serta menukar lalai permintaan lengkap kepada WAV. Kekalkan prom 3.1 sebagai prom 3.1 daripada mencampurkan struktur permintaan lebih baharu itu. Jadual model disokong Google menyenaraikan sintesis satu dan berbilang penutur bagi 3.1, manakala kawalan suara rekaan serta replikasi suara tergolong dalam entri 3.8. Edisi Flash Live berasingan mengendalikan input audio interaktif; edisi TTS ini menyediakan produksi teks ke audio yang disiapkan.\n\nSemak rakaman berdasarkan skrip bertulis untuk perkataan tertinggal atau berulang, nama, pemasaan giliran dan perubahan emosi yang dimaksudkan. Jika satu ayat memerlukan penekanan berbeza, pinda arahan setempat itu dan semak peralihan terjejas. Aliran kerja ini menjadikan taklimat persembahan berguna: ia merekodkan perkara tentang penutur yang perlu kekal stabil dan perkara yang perlu berubah dalam petikan itu, manakala skrip mengekalkan kandungan yang perlu didengar khalayak.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "9e3cc823cabae357c4b70baaacf3b2e254a524ece98b724d9af0a01d2bc3e33c",
    "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.1 Flash TTS Preview</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.1-flash-tts-preview</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.1-flash-tts-preview\">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.1 Flash TTS Preview menukar skrip bertulis kepada audio pertuturan ekspresif. Arahan bahasa semula jadi, Audio Profiles penutur, Director’s Notes dan tag audio sebaris membentuk rentak, nada serta loghat. Ia menyokong dialog secara asal dan lebih daripada 70 bahasa, menggunakan format prom serta audio 3.1.</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.1 Flash TTS Preview ialah edisi teks ke pertuturan keluarga Gemini 3.1 Flash Audio. Ia menerima teks dan menghasilkan audio pertuturan dengan ekspresi yang diarahkan prom. Google menerangkan generasi ini sebagai penambahbaikan yang menjadikan pertuturan lebih semula jadi serta meningkatkan kebolehkawalan dan prestasi berbilang bahasa, dengan dialog berbilang penutur secara asal serta lebih daripada 70 bahasa. Kegunaan praktikal ialah pelajaran bernarasi ringkas, pertukaran dialog watak atau petikan lisan yang penyampaiannya sama penting dengan ungkapannya.</p><p>Sediakan skrip lengkap dan taklimat persembahan. Generasi ini menggunakan arahan bahasa semula jadi dalam input teks untuk membimbing gaya vokal, rentak dan penyampaian. Keluaran Google memperkenalkan arahan adegan untuk menetapkan situasi, Audio Profiles penutur untuk mentakrif watak dan Director’s Notes untuk membimbing rentak, nada serta loghat. Pastikan bahagian itu dapat dikenal pasti semasa menyediakan prom supaya kata-kata yang dimaksudkan dan arahan persembahan boleh disemak secara bebas. Taklimat padat lebih mudah dipinda daripada beberapa huraian bersaing bagi suara sama.</p><p>Contohnya, taklimat latihan asal boleh menerangkan narator tenang yang menjelaskan bahan pameran muzium, dengan ungkapan bertempo terkawal dan nada lebih mesra pada ayat akhir. Skrip yang mengiringinya perlu mengandungi nama sebenar bahan pameran dan ungkapan tepat yang perlu disuarakan. Untuk dialog, berikan watak profil berbeza dan urutan giliran jelas. Gunakan konteks adegan untuk menerangkan sama ada seorang penutur menenangkan yang lain, bertanya soalan ikhlas atau membalas dengan kejutan terkawal. Artifak terjana yang perlu dinilai ialah persembahan skrip tersebut yang boleh didengar.</p><p>Tag audio sebaris menambah kawalan setempat dalam teks, membolehkan ekspresi penutur berubah dalam ayat daripada bergantung sepenuhnya pada arahan pembukaan. Google menerangkan tag sebagai kawalan gaya vokal, rentak dan penyampaian. Gunakannya apabila persembahan memerlukan perubahan tertentu dan kekalkan ungkapan lain semula jadi untuk dituturkan. Perbezaan berguna edisi ini ialah antara taklimat watak atau adegan aras tinggi dengan perubahan penyampaian setempat. Petikan neutral ringkas boleh menetapkan suara asas sebelum skrip menambah arahan emosi.</p><p>Untuk kerja berbilang bahasa, bekalkan skrip dalam bahasa akhir dan nyatakan loghat serta gaya pertuturan yang dikehendaki dalam taklimat. Pengumuman Google mendokumenkan sokongan lebih daripada 70 bahasa. Sebagai persediaan editorial praktikal, gunakan satu ejaan konsisten bagi nama berulang, kembangkan singkatan kabur apabila satu bacaan diperlukan dan semak nombor dalam hasil lisan. Label bahasa sahaja tidak menentukan cara nama jenama atau istilah pinjaman perlu dibunyikan. Bandingkan petikan yang mengandungi istilah itu dengan bacaan yang dimaksudkan sebelum menerima narasi panjang.</p><p>Halaman model Gemini API khusus menyenaraikan had input 8,192 token dan had output 16,384 token bagi model pratonton ini. Kad model TTS asal DeepMind pula menyenaraikan input teks sehingga 16K token dan output audio 32K token; angka kad model itu berbeza daripada had penyajian Gemini API. Kira arahan persembahan serta skrip sebagai sebahagian input yang disediakan. Peruntukan output dinyatakan dalam token audio, jadi ia tidak menjamin tempoh rakaman tertentu. Susun pelajaran atau cerita panjang kepada bahagian koheren, kekalkan taklimat watak sama dan dengarkan sambungannya. Untuk dialog berskrip, semak atribusi serta turutan giliran selain perkataan dituturkan dan penyampaian emosi.</p><p>Dokumentasi migrasi Google mengenal pasti output lalai 3.1 sebagai PCM mentah tanpa pengepala dengan jenis audio/l16. Bait audio memerlukan maklumat main balik atau bekas yang sesuai semasa menyediakan rakaman boleh sunting; menambah nama fail WAV sahaja tidak menghasilkan pengepala WAV. Semak format sebenar yang dikembalikan sebelum mengimport hasil. Google turut menyatakan bahawa audio terjana Gemini 3.1 Flash TTS mempunyai tera air SynthID yang tidak dapat dikesan oleh deria. Tera air berkaitan pengenalpastian audio terjana dan tidak menggantikan transkrip, label penutur atau semakan pendengaran.</p><p>Gaya penyediaan 3.1 berbeza dengan ketara daripada 3.8. Gemini 3.8 memindahkan arahan berterusan dan identiti penutur ke metadata pertuturan berstruktur, menggunakan tag berkurungan sudut untuk peristiwa pada titik tertentu serta menukar lalai permintaan lengkap kepada WAV. Kekalkan prom 3.1 sebagai prom 3.1 daripada mencampurkan struktur permintaan lebih baharu itu. Jadual model disokong Google menyenaraikan sintesis satu dan berbilang penutur bagi 3.1, manakala kawalan suara rekaan serta replikasi suara tergolong dalam entri 3.8. Edisi Flash Live berasingan mengendalikan input audio interaktif; edisi TTS ini menyediakan produksi teks ke audio yang disiapkan.</p><p>Semak rakaman berdasarkan skrip bertulis untuk perkataan tertinggal atau berulang, nama, pemasaan giliran dan perubahan emosi yang dimaksudkan. Jika satu ayat memerlukan penekanan berbeza, pinda arahan setempat itu dan semak peralihan terjejas. Aliran kerja ini menjadikan taklimat persembahan berguna: ia merekodkan perkara tentang penutur yang perlu kekal stabil dan perkara yang perlu berubah dalam petikan itu, manakala skrip mengekalkan kandungan yang perlu didengar khalayak.</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.1-flash-tts-preview</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.002</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.04</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-1460-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1460-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-1460-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1460-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.1-flash-tts-preview&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;Orus&#39;, &#39;response_format&#39;: &#39;pcm&#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-1461-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1461-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-1461-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1461-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.1-flash-tts-preview&amp;route=Ultra&amp;caller=google%2Fgemini-3.1-flash-tts-preview&amp;fmt=speech\"><code>google/gemini-3.1-flash-tts-preview</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.1-flash-tts-preview&amp;route=Ultra&amp;caller=google%2Fgemini-3.1-flash-tts-preview&amp;fmt=speech\"><code>google/gemini-3.1-flash-tts-preview</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.1-flash-tts-preview",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|google%2Fgemini-3.1-flash-tts-preview",
      "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.1-flash-tts-preview"
                ],
                "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.1-flash-tts-preview"
                  ],
                  "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.1-flash-tts-preview",
                "response_format": "pcm",
                "voice": "Orus"
              },
              "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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.1-flash-tts-preview', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Orus', 'response_format': 'pcm'}\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": 2e-06,
            "output_token": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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.1-flash-tts-preview",
        "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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.1-flash-tts-preview",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5ab88043c1c3b36305e382cf6f3f2ed6fe2050522613b33039b2b4a25d8d758f",
    "input_html_sha256": "ef451e01172d06367b12e1c657516aa7ed09212fe8103ac01a34d507c2dd80e3",
    "private_audit_sha256": "f0b731b07d316d8bad87e3b7254c4c41416db5de3306be9cabf481d9d19a3605",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/google-gemini-3-1-flash-tts-preview/",
    "description": "Google Gemini 3.1 Flash TTS Preview menukar skrip bertulis kepada audio pertuturan ekspresif. Arahan bahasa semula jadi, Audio Profiles penutur, Director’s Notes dan tag audio sebaris membentuk rentak, nada serta loghat. Ia menyokong dialog secara asal dan lebih daripada 70 bahasa, menggunakan format prom serta audio 3.1.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/google-gemini-3-1-flash-tts-preview/index.md",
    "title": "Google: Gemini 3.1 Flash TTS Preview — Ailoot",
    "url": "https://ailoot.ai/models/ms/google-gemini-3-1-flash-tts-preview/"
  },
  "rawModel": {
    "about": "Google Gemini 3.1 Flash TTS Preview ialah edisi teks ke pertuturan keluarga Gemini 3.1 Flash Audio. Ia menerima teks dan menghasilkan audio pertuturan dengan ekspresi yang diarahkan prom. Google menerangkan generasi ini sebagai penambahbaikan yang menjadikan pertuturan lebih semula jadi serta meningkatkan kebolehkawalan dan prestasi berbilang bahasa, dengan dialog berbilang penutur secara asal serta lebih daripada 70 bahasa. Kegunaan praktikal ialah pelajaran bernarasi ringkas, pertukaran dialog watak atau petikan lisan yang penyampaiannya sama penting dengan ungkapannya.\n\nSediakan skrip lengkap dan taklimat persembahan. Generasi ini menggunakan arahan bahasa semula jadi dalam input teks untuk membimbing gaya vokal, rentak dan penyampaian. Keluaran Google memperkenalkan arahan adegan untuk menetapkan situasi, Audio Profiles penutur untuk mentakrif watak dan Director’s Notes untuk membimbing rentak, nada serta loghat. Pastikan bahagian itu dapat dikenal pasti semasa menyediakan prom supaya kata-kata yang dimaksudkan dan arahan persembahan boleh disemak secara bebas. Taklimat padat lebih mudah dipinda daripada beberapa huraian bersaing bagi suara sama.\n\nContohnya, taklimat latihan asal boleh menerangkan narator tenang yang menjelaskan bahan pameran muzium, dengan ungkapan bertempo terkawal dan nada lebih mesra pada ayat akhir. Skrip yang mengiringinya perlu mengandungi nama sebenar bahan pameran dan ungkapan tepat yang perlu disuarakan. Untuk dialog, berikan watak profil berbeza dan urutan giliran jelas. Gunakan konteks adegan untuk menerangkan sama ada seorang penutur menenangkan yang lain, bertanya soalan ikhlas atau membalas dengan kejutan terkawal. Artifak terjana yang perlu dinilai ialah persembahan skrip tersebut yang boleh didengar.\n\nTag audio sebaris menambah kawalan setempat dalam teks, membolehkan ekspresi penutur berubah dalam ayat daripada bergantung sepenuhnya pada arahan pembukaan. Google menerangkan tag sebagai kawalan gaya vokal, rentak dan penyampaian. Gunakannya apabila persembahan memerlukan perubahan tertentu dan kekalkan ungkapan lain semula jadi untuk dituturkan. Perbezaan berguna edisi ini ialah antara taklimat watak atau adegan aras tinggi dengan perubahan penyampaian setempat. Petikan neutral ringkas boleh menetapkan suara asas sebelum skrip menambah arahan emosi.\n\nUntuk kerja berbilang bahasa, bekalkan skrip dalam bahasa akhir dan nyatakan loghat serta gaya pertuturan yang dikehendaki dalam taklimat. Pengumuman Google mendokumenkan sokongan lebih daripada 70 bahasa. Sebagai persediaan editorial praktikal, gunakan satu ejaan konsisten bagi nama berulang, kembangkan singkatan kabur apabila satu bacaan diperlukan dan semak nombor dalam hasil lisan. Label bahasa sahaja tidak menentukan cara nama jenama atau istilah pinjaman perlu dibunyikan. Bandingkan petikan yang mengandungi istilah itu dengan bacaan yang dimaksudkan sebelum menerima narasi panjang.\n\nHalaman model Gemini API khusus menyenaraikan had input 8,192 token dan had output 16,384 token bagi model pratonton ini. Kad model TTS asal DeepMind pula menyenaraikan input teks sehingga 16K token dan output audio 32K token; angka kad model itu berbeza daripada had penyajian Gemini API. Kira arahan persembahan serta skrip sebagai sebahagian input yang disediakan. Peruntukan output dinyatakan dalam token audio, jadi ia tidak menjamin tempoh rakaman tertentu. Susun pelajaran atau cerita panjang kepada bahagian koheren, kekalkan taklimat watak sama dan dengarkan sambungannya. Untuk dialog berskrip, semak atribusi serta turutan giliran selain perkataan dituturkan dan penyampaian emosi.\n\nDokumentasi migrasi Google mengenal pasti output lalai 3.1 sebagai PCM mentah tanpa pengepala dengan jenis audio/l16. Bait audio memerlukan maklumat main balik atau bekas yang sesuai semasa menyediakan rakaman boleh sunting; menambah nama fail WAV sahaja tidak menghasilkan pengepala WAV. Semak format sebenar yang dikembalikan sebelum mengimport hasil. Google turut menyatakan bahawa audio terjana Gemini 3.1 Flash TTS mempunyai tera air SynthID yang tidak dapat dikesan oleh deria. Tera air berkaitan pengenalpastian audio terjana dan tidak menggantikan transkrip, label penutur atau semakan pendengaran.\n\nGaya penyediaan 3.1 berbeza dengan ketara daripada 3.8. Gemini 3.8 memindahkan arahan berterusan dan identiti penutur ke metadata pertuturan berstruktur, menggunakan tag berkurungan sudut untuk peristiwa pada titik tertentu serta menukar lalai permintaan lengkap kepada WAV. Kekalkan prom 3.1 sebagai prom 3.1 daripada mencampurkan struktur permintaan lebih baharu itu. Jadual model disokong Google menyenaraikan sintesis satu dan berbilang penutur bagi 3.1, manakala kawalan suara rekaan serta replikasi suara tergolong dalam entri 3.8. Edisi Flash Live berasingan mengendalikan input audio interaktif; edisi TTS ini menyediakan produksi teks ke audio yang disiapkan.\n\nSemak rakaman berdasarkan skrip bertulis untuk perkataan tertinggal atau berulang, nama, pemasaan giliran dan perubahan emosi yang dimaksudkan. Jika satu ayat memerlukan penekanan berbeza, pinda arahan setempat itu dan semak peralihan terjejas. Aliran kerja ini menjadikan taklimat persembahan berguna: ia merekodkan perkara tentang penutur yang perlu kekal stabil dan perkara yang perlu berubah dalam petikan itu, manakala skrip mengekalkan kandungan yang perlu didengar khalayak.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 32768,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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.1-flash-tts-preview",
    "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.1-flash-tts-preview"
                ],
                "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.1-flash-tts-preview"
                  ],
                  "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.1-flash-tts-preview",
                "response_format": "pcm",
                "voice": "Orus"
              },
              "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.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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.1-flash-tts-preview', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Orus', 'response_format': 'pcm'}\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": 2e-06,
            "output_token": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.002000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000002",
                "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.04000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.00004",
                "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.1-flash-tts-preview",
        "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.002000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000002",
            "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.04000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.00004",
            "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.1-flash-tts-preview",
        "request_model_id": "google/gemini-3.1-flash-tts-preview",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.1 Flash TTS Preview",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.04,
      "out_label": "/ 1K tokens",
      "sort_in": null,
      "sort_out": 0.04,
      "varies": true
    },
    "short": "Google Gemini 3.1 Flash TTS Preview menukar skrip bertulis kepada audio pertuturan ekspresif. Arahan bahasa semula jadi, Audio Profiles penutur, Director’s Notes dan tag audio sebaris membentuk rentak, nada serta loghat. Ia menyokong dialog secara asal dan lebih daripada 70 bahasa, menggunakan format prom serta audio 3.1."
  },
  "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.1 Flash TTS Preview menukar skrip bertulis kepada audio pertuturan ekspresif. Arahan bahasa semula jadi, Audio Profiles penutur, Director’s Notes dan tag audio sebaris membentuk rentak, nada serta loghat. Ia menyokong dialog secara asal dan lebih daripada 70 bahasa, menggunakan format prom serta audio 3.1.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "4674691fe943601aa9fbad230479182bc25cf76dba6ce6f42427fac45aa508b3",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "f469f6b5a12fa16c9bce6d1e6f288c0ce3b10a521fc81521760a746bde2e7298"
}
