{
  "aboutHtml": "<h4>Suara untuk penyampaian dan bacaan panjang</h4><p>Speech 02 HD menghasilkan pertuturan dengan penekanan pada kualiti, irama dan kestabilan bunyi. Pengeluar menekankan penyampaian suara bahan dan buku audio yang memerlukan suara mengekalkan karakter serta mengalir secara sekata sepanjang teks panjang. Ini ialah model sintesis: model menerima teks dan menukarkannya kepada audio pertuturan.</p><h4>Hubungan antara teks dengan warna suara</h4><p>Asas keluarga Speech 02 ialah seni bina Transformer autoregresif dan pengekod penutur yang boleh dilatih. Pengekstrakan warna suara dan penjanaan pertuturan dilatih bersama untuk menyelaraskan ciri suara dengan kandungan. Keupayaan keluarga ini merangkumi penggunaan suara klon yang telah disediakan serta gabungan bahasa, loghat dan gaya sebutan.</p><h4>Emosi dan bacaan berbilang bahasa</h4><p>Warna emosi boleh ditentukan berdasarkan makna teks atau ditetapkan secara manual. Kegembiraan, kesedihan, kemarahan, ketakutan, rasa jijik, kejutan dan ketenangan tersedia. Model menggunakan bahasa Rusia, Inggeris dan bahasa lain; pengeluar menerangkan pelbagai loghat bahasa Inggeris, bahasa Cina dan Kantonis, Jepun, Korea, bahasa Eropah dan bahasa lain.</p><p>Penerangan Speech 02 semasa mengecualikan bahasa Parsi, Filipina dan Tamil secara berasingan. Senarai bahasa umum generasi Speech yang lebih baharu tidak boleh diterapkan secara automatik kepada versi ini.</p><h4>Tetapan suara</h4><p>Sintesis menyediakan pemilihan suara, perubahan kelajuan <strong>0,5–2</strong>, kelantangan melebihi 0 dan sehingga <strong>10</strong>, serta pic suara dari <strong>−12 hingga 12</strong>. Dalam kamus sebutan, ejaan boleh digantikan dengan bacaan yang dikehendaki; notasi fonetik dan variasi sebutan Jepun disokong. Ini membantu mengawal sebutan nama dan perkataan yang mempunyai beberapa kemungkinan bacaan.</p><h4>Jeda dan audio siap</h4><p>Pengeluar membenarkan jeda antara bahagian yang disebut dengan tempoh <strong>0,01–99,99 saat</strong>. Tempoh jeda ditetapkan dengan ketepatan dua tempat perpuluhan; penanda diletakkan antara bahagian yang disebut dan tidak diletakkan berturut-turut. Teks satu permintaan segerak mesti mengandungi kurang daripada <strong>10 000 aksara</strong>. Audio boleh diterima sekali gus atau secara beransur-ansur; output penstriman disyorkan bagi teks melebihi 3000 aksara.</p><p>Antara format model ialah MP3, WAV, FLAC dan PCM; tetapan sintesis umum turut menerangkan Opus dan varian G.711 μ-law. Mono atau stereo boleh digunakan. Kad ini menyediakan penjanaan suara daripada teks, manakala penyediaan suara berasingan dan tetapan lanjutan terpakai hanya dalam skop kaedah akses melalui Ailoot yang disokong.</p><p>Tetapan audio tambahan merangkumi kadar pensampelan <strong>8, 16, 22,05, 24, 32 dan 44,1 kHz</strong>. Bagi MP3, kadar bit <strong>32, 64, 128 atau 256 kbit/s</strong> disediakan. Warna suara juga boleh diubah dan satu kesan boleh digunakan: gema ruang luas, gema dewan, bunyi telefon atau suara robot. Kesan perubahan suara disokong bagi MP3, WAV dan FLAC apabila audio diterima sekali gus, manakala dalam output penstriman, hanya bagi MP3. Format G.711 μ-law menggunakan kadar 8 kHz. Keupayaan ini merujuk kepada tetapan sintesis MiniMax.</p><p>Pengeluar menyediakan penyegerakan pertuturan dengan teks: cap masa mengikut ayat, perkataan atau perkataan semasa output beransur-ansur. Hasil sebegini membantu menyelaraskan sebutan dengan paparan teks. Keupayaan tambahan ini memerlukan sokongan format respons yang sepadan.</p>",
  "aboutText": "### Suara untuk penyampaian dan bacaan panjang\n\nSpeech 02 HD menghasilkan pertuturan dengan penekanan pada kualiti, irama dan kestabilan bunyi. Pengeluar menekankan penyampaian suara bahan dan buku audio yang memerlukan suara mengekalkan karakter serta mengalir secara sekata sepanjang teks panjang. Ini ialah model sintesis: model menerima teks dan menukarkannya kepada audio pertuturan.\n\n### Hubungan antara teks dengan warna suara\n\nAsas keluarga Speech 02 ialah seni bina Transformer autoregresif dan pengekod penutur yang boleh dilatih. Pengekstrakan warna suara dan penjanaan pertuturan dilatih bersama untuk menyelaraskan ciri suara dengan kandungan. Keupayaan keluarga ini merangkumi penggunaan suara klon yang telah disediakan serta gabungan bahasa, loghat dan gaya sebutan.\n\n### Emosi dan bacaan berbilang bahasa\n\nWarna emosi boleh ditentukan berdasarkan makna teks atau ditetapkan secara manual. Kegembiraan, kesedihan, kemarahan, ketakutan, rasa jijik, kejutan dan ketenangan tersedia. Model menggunakan bahasa Rusia, Inggeris dan bahasa lain; pengeluar menerangkan pelbagai loghat bahasa Inggeris, bahasa Cina dan Kantonis, Jepun, Korea, bahasa Eropah dan bahasa lain.\n\nPenerangan Speech 02 semasa mengecualikan bahasa Parsi, Filipina dan Tamil secara berasingan. Senarai bahasa umum generasi Speech yang lebih baharu tidak boleh diterapkan secara automatik kepada versi ini.\n\n### Tetapan suara\n\nSintesis menyediakan pemilihan suara, perubahan kelajuan **0,5–2**, kelantangan melebihi 0 dan sehingga **10**, serta pic suara dari **−12 hingga 12**. Dalam kamus sebutan, ejaan boleh digantikan dengan bacaan yang dikehendaki; notasi fonetik dan variasi sebutan Jepun disokong. Ini membantu mengawal sebutan nama dan perkataan yang mempunyai beberapa kemungkinan bacaan.\n\n### Jeda dan audio siap\n\nPengeluar membenarkan jeda antara bahagian yang disebut dengan tempoh **0,01–99,99 saat**. Tempoh jeda ditetapkan dengan ketepatan dua tempat perpuluhan; penanda diletakkan antara bahagian yang disebut dan tidak diletakkan berturut-turut. Teks satu permintaan segerak mesti mengandungi kurang daripada **10 000 aksara**. Audio boleh diterima sekali gus atau secara beransur-ansur; output penstriman disyorkan bagi teks melebihi 3000 aksara.\n\nAntara format model ialah MP3, WAV, FLAC dan PCM; tetapan sintesis umum turut menerangkan Opus dan varian G.711 μ-law. Mono atau stereo boleh digunakan. Kad ini menyediakan penjanaan suara daripada teks, manakala penyediaan suara berasingan dan tetapan lanjutan terpakai hanya dalam skop kaedah akses melalui Ailoot yang disokong.\n\nTetapan audio tambahan merangkumi kadar pensampelan **8, 16, 22,05, 24, 32 dan 44,1 kHz**. Bagi MP3, kadar bit **32, 64, 128 atau 256 kbit/s** disediakan. Warna suara juga boleh diubah dan satu kesan boleh digunakan: gema ruang luas, gema dewan, bunyi telefon atau suara robot. Kesan perubahan suara disokong bagi MP3, WAV dan FLAC apabila audio diterima sekali gus, manakala dalam output penstriman, hanya bagi MP3. Format G.711 μ-law menggunakan kadar 8 kHz. Keupayaan ini merujuk kepada tetapan sintesis MiniMax.\n\nPengeluar menyediakan penyegerakan pertuturan dengan teks: cap masa mengikut ayat, perkataan atau perkataan semasa output beransur-ansur. Hasil sebegini membantu menyelaraskan sebutan dengan paparan teks. Keupayaan tambahan ini memerlukan sokongan format respons yang sepadan.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0b2714b65b4d91cdadcfcba7ee120896c7f3af97a0db6e70b3fb6c0acca5b531",
    "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\">MM</span><h2 id=\"sheet-title\">speech-02-hd</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-02-hd</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=\"Core|speech|/v1/audio/speech|speech-02-hd\">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\">Speech-02 HD ialah model sintesis pertuturan dengan penekanan pada kualiti bunyi dan keserupaan suara.</p><dl class=\"card-io\" data-card-io><div><dt>Input yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>speech</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\"><h4>Suara untuk penyampaian dan bacaan panjang</h4><p>Speech 02 HD menghasilkan pertuturan dengan penekanan pada kualiti, irama dan kestabilan bunyi. Pengeluar menekankan penyampaian suara bahan dan buku audio yang memerlukan suara mengekalkan karakter serta mengalir secara sekata sepanjang teks panjang. Ini ialah model sintesis: model menerima teks dan menukarkannya kepada audio pertuturan.</p><h4>Hubungan antara teks dengan warna suara</h4><p>Asas keluarga Speech 02 ialah seni bina Transformer autoregresif dan pengekod penutur yang boleh dilatih. Pengekstrakan warna suara dan penjanaan pertuturan dilatih bersama untuk menyelaraskan ciri suara dengan kandungan. Keupayaan keluarga ini merangkumi penggunaan suara klon yang telah disediakan serta gabungan bahasa, loghat dan gaya sebutan.</p><h4>Emosi dan bacaan berbilang bahasa</h4><p>Warna emosi boleh ditentukan berdasarkan makna teks atau ditetapkan secara manual. Kegembiraan, kesedihan, kemarahan, ketakutan, rasa jijik, kejutan dan ketenangan tersedia. Model menggunakan bahasa Rusia, Inggeris dan bahasa lain; pengeluar menerangkan pelbagai loghat bahasa Inggeris, bahasa Cina dan Kantonis, Jepun, Korea, bahasa Eropah dan bahasa lain.</p><p>Penerangan Speech 02 semasa mengecualikan bahasa Parsi, Filipina dan Tamil secara berasingan. Senarai bahasa umum generasi Speech yang lebih baharu tidak boleh diterapkan secara automatik kepada versi ini.</p><h4>Tetapan suara</h4><p>Sintesis menyediakan pemilihan suara, perubahan kelajuan <strong>0,5–2</strong>, kelantangan melebihi 0 dan sehingga <strong>10</strong>, serta pic suara dari <strong>−12 hingga 12</strong>. Dalam kamus sebutan, ejaan boleh digantikan dengan bacaan yang dikehendaki; notasi fonetik dan variasi sebutan Jepun disokong. Ini membantu mengawal sebutan nama dan perkataan yang mempunyai beberapa kemungkinan bacaan.</p><h4>Jeda dan audio siap</h4><p>Pengeluar membenarkan jeda antara bahagian yang disebut dengan tempoh <strong>0,01–99,99 saat</strong>. Tempoh jeda ditetapkan dengan ketepatan dua tempat perpuluhan; penanda diletakkan antara bahagian yang disebut dan tidak diletakkan berturut-turut. Teks satu permintaan segerak mesti mengandungi kurang daripada <strong>10 000 aksara</strong>. Audio boleh diterima sekali gus atau secara beransur-ansur; output penstriman disyorkan bagi teks melebihi 3000 aksara.</p><p>Antara format model ialah MP3, WAV, FLAC dan PCM; tetapan sintesis umum turut menerangkan Opus dan varian G.711 μ-law. Mono atau stereo boleh digunakan. Kad ini menyediakan penjanaan suara daripada teks, manakala penyediaan suara berasingan dan tetapan lanjutan terpakai hanya dalam skop kaedah akses melalui Ailoot yang disokong.</p><p>Tetapan audio tambahan merangkumi kadar pensampelan <strong>8, 16, 22,05, 24, 32 dan 44,1 kHz</strong>. Bagi MP3, kadar bit <strong>32, 64, 128 atau 256 kbit/s</strong> disediakan. Warna suara juga boleh diubah dan satu kesan boleh digunakan: gema ruang luas, gema dewan, bunyi telefon atau suara robot. Kesan perubahan suara disokong bagi MP3, WAV dan FLAC apabila audio diterima sekali gus, manakala dalam output penstriman, hanya bagi MP3. Format G.711 μ-law menggunakan kadar 8 kHz. Keupayaan ini merujuk kepada tetapan sintesis MiniMax.</p><p>Pengeluar menyediakan penyegerakan pertuturan dengan teks: cap masa mengikut ayat, perkataan atau perkataan semasa output beransur-ansur. Hasil sebegini membantu menyelaraskan sebutan dengan paparan teks. Keupayaan tambahan ini memerlukan sokongan format respons yang sepadan.</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 · Penjanaan suara</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Input</dt><dd><code>text</code></dd></div><div><dt>Output</dt><dd><code>speech</code></dd></div><div><dt>Format output</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Medan</th><th>Jenis</th><th>Keperluan</th><th>Nilai &amp; had</th><th>Lalai</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>speech-02-hd</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Panjang minimum: 1</div><div>Panjang maksimum (tidak termasuk): 10,000</div><div>Unit: aksara Unicode</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Corak: ^[A-Za-z0-9_-]{1,128}$</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>mp3</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Gabungan bahan input</summary><p class=\"note-s\"><b>text_to_speech</b> · Diperlukan: input</p></details><details class=\"note-s\" data-method-contract><summary>Parameter kaedah dan kitar hayat</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</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>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>null</td></tr></tbody></table></div><p>Kitar hayat: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · task_id sebenar yang dikembalikan atau rekod pustaka media</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Pelan harga</h3><h4>Kadar kaedah Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Penjanaan suara</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Input</dt><dd>USD 100.00 <em>bagi setiap 1 juta aksara</em></dd></div></dl></section><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 · Penjanaan suara</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-467-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-467-panel-0\" aria-selected=\"true\" tabindex=\"0\">Contoh pertuturan</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-467-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-467-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}&quot;\nexport AILOOT_TEXT_FILE\n: &quot;${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;speech-02-hd&quot;, &quot;input&quot;: &quot;&quot;}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;input&quot;]=text\nimport re\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nif not re.fullmatch(r&quot;[A-Za-z0-9_-]{1,128}&quot;,voice):raise SystemExit(&quot;Set an actual accepted voice ID&quot;)\np[&quot;voice&quot;]=voice\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Terima dan simpan hasil</h3><h4>Ailoot · Penjanaan suara</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.</p><p class=\"note-s\">Simpan hasil binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asal perlu disemak</h5><p class=\"note-s\">Simpan operation_id/X-Client-Request-ID asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status audio.</p></div><details class=\"card-about\" data-output-fields><summary>Medan respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Medan</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>bytes</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ralat dan langkah seterusnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Syarat</th><th>Langkah seterusnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Medan wajib, perwakilan bahan atau nilai parameter tidak sah</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span><code>server_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=speech-02-hd&amp;route=Core&amp;caller=speech-02-hd&amp;fmt=speech\"><code>speech-02-hd</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=speech-02-hd&amp;route=Core&amp;caller=speech-02-hd&amp;fmt=speech\"><code>speech-02-hd</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-02-hd",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-02-hd",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-02-hd",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan operation_id/X-Client-Request-ID asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Simpan hasil binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-02-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "aksara Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-02-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Penjanaan suara",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-02-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    }
  ],
  "model_id": "speech-02-hd",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "c2595ff7a838568f0fa6f5faa453bd8740624d6d3ac8f4ef0344d3d4a6f60082",
    "input_html_sha256": "0cdef297473f5bef7ef8431a13d6d17be1caab5e18011d9aabbe03c0973a8f8d",
    "private_audit_sha256": "ab2e65ece5af5ffd8456ad32d6ef553189191fbfa788f4fc8d49cae409fa3487",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/speech-02-hd/",
    "description": "Speech-02 HD ialah model sintesis pertuturan dengan penekanan pada kualiti bunyi dan keserupaan suara.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/speech-02-hd/index.md",
    "title": "speech-02-hd — Ailoot",
    "url": "https://ailoot.ai/models/ms/speech-02-hd/"
  },
  "rawModel": {
    "about": "### Suara untuk penyampaian dan bacaan panjang\n\nSpeech 02 HD menghasilkan pertuturan dengan penekanan pada kualiti, irama dan kestabilan bunyi. Pengeluar menekankan penyampaian suara bahan dan buku audio yang memerlukan suara mengekalkan karakter serta mengalir secara sekata sepanjang teks panjang. Ini ialah model sintesis: model menerima teks dan menukarkannya kepada audio pertuturan.\n\n### Hubungan antara teks dengan warna suara\n\nAsas keluarga Speech 02 ialah seni bina Transformer autoregresif dan pengekod penutur yang boleh dilatih. Pengekstrakan warna suara dan penjanaan pertuturan dilatih bersama untuk menyelaraskan ciri suara dengan kandungan. Keupayaan keluarga ini merangkumi penggunaan suara klon yang telah disediakan serta gabungan bahasa, loghat dan gaya sebutan.\n\n### Emosi dan bacaan berbilang bahasa\n\nWarna emosi boleh ditentukan berdasarkan makna teks atau ditetapkan secara manual. Kegembiraan, kesedihan, kemarahan, ketakutan, rasa jijik, kejutan dan ketenangan tersedia. Model menggunakan bahasa Rusia, Inggeris dan bahasa lain; pengeluar menerangkan pelbagai loghat bahasa Inggeris, bahasa Cina dan Kantonis, Jepun, Korea, bahasa Eropah dan bahasa lain.\n\nPenerangan Speech 02 semasa mengecualikan bahasa Parsi, Filipina dan Tamil secara berasingan. Senarai bahasa umum generasi Speech yang lebih baharu tidak boleh diterapkan secara automatik kepada versi ini.\n\n### Tetapan suara\n\nSintesis menyediakan pemilihan suara, perubahan kelajuan **0,5–2**, kelantangan melebihi 0 dan sehingga **10**, serta pic suara dari **−12 hingga 12**. Dalam kamus sebutan, ejaan boleh digantikan dengan bacaan yang dikehendaki; notasi fonetik dan variasi sebutan Jepun disokong. Ini membantu mengawal sebutan nama dan perkataan yang mempunyai beberapa kemungkinan bacaan.\n\n### Jeda dan audio siap\n\nPengeluar membenarkan jeda antara bahagian yang disebut dengan tempoh **0,01–99,99 saat**. Tempoh jeda ditetapkan dengan ketepatan dua tempat perpuluhan; penanda diletakkan antara bahagian yang disebut dan tidak diletakkan berturut-turut. Teks satu permintaan segerak mesti mengandungi kurang daripada **10 000 aksara**. Audio boleh diterima sekali gus atau secara beransur-ansur; output penstriman disyorkan bagi teks melebihi 3000 aksara.\n\nAntara format model ialah MP3, WAV, FLAC dan PCM; tetapan sintesis umum turut menerangkan Opus dan varian G.711 μ-law. Mono atau stereo boleh digunakan. Kad ini menyediakan penjanaan suara daripada teks, manakala penyediaan suara berasingan dan tetapan lanjutan terpakai hanya dalam skop kaedah akses melalui Ailoot yang disokong.\n\nTetapan audio tambahan merangkumi kadar pensampelan **8, 16, 22,05, 24, 32 dan 44,1 kHz**. Bagi MP3, kadar bit **32, 64, 128 atau 256 kbit/s** disediakan. Warna suara juga boleh diubah dan satu kesan boleh digunakan: gema ruang luas, gema dewan, bunyi telefon atau suara robot. Kesan perubahan suara disokong bagi MP3, WAV dan FLAC apabila audio diterima sekali gus, manakala dalam output penstriman, hanya bagi MP3. Format G.711 μ-law menggunakan kadar 8 kHz. Keupayaan ini merujuk kepada tetapan sintesis MiniMax.\n\nPengeluar menyediakan penyegerakan pertuturan dengan teks: cap masa mengikut ayat, perkataan atau perkataan semasa output beransur-ansur. Hasil sebegini membantu menyelaraskan sebutan dengan paparan teks. Keupayaan tambahan ini memerlukan sokongan format respons yang sepadan.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-02-hd",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Medan wajib, perwakilan bahan atau nilai parameter tidak sah",
                "http_status": 400,
                "recovery": "Betulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Respons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan",
                "http_status": null,
                "recovery": "Simpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Simpan operation_id/X-Client-Request-ID asal untuk penyelarasan rekod tanpa penghantaran semula; tiada laluan khusus untuk meninjau status audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Simpan hasil binari dan pengepala yang lengkap. Jika JSON atau berbilang output dikembalikan, simpan setiap item data dan dapatkan setiap URL aset bertandatangan yang sebenar.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-02-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "aksara Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "task_id sebenar yang dikembalikan atau rekod pustaka media",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-02-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Penjanaan suara",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-02-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-02-hd",
        "request_model_id": "speech-02-hd",
        "route_label": "Core"
      }
    ],
    "name": "speech-02-hd",
    "price": {
      "in": 100,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Speech-02 HD ialah model sintesis pertuturan dengan penekanan pada kualiti bunyi dan keserupaan suara."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Speech-02 HD ialah model sintesis pertuturan dengan penekanan pada kualiti bunyi dan keserupaan suara.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "629a270d16cea8e0e8d3760c9277ab892b402fb6689dbe08cc2a1cedd9cac79d",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "78771de086a16ae43ffd2a0ee1ab680eb42ff642a585abd4cf8feeaba1cd7b13"
}
