{
  "aboutHtml": "<p>Gemini 3.8 Flash-Lite TTS được thiết kế cho số lượng lớn thao tác giọng nói: đọc văn bản, đọc các lượt lời liên tiếp và những kịch bản giọng nói hằng ngày. Theo Google, đặc trưng của mô hình là độ trễ thấp và xử lý hàng loạt hiệu quả.</p><h4>Chọn giọng</h4><p>Mô hình hỗ trợ <strong>101 ngôn ngữ</strong>, gồm tiếng Nga. Các lựa chọn gồm <strong>30 giọng có sẵn</strong>, thư viện mở rộng, tạo giọng riêng và tái tạo giọng theo mẫu. Giọng, phong cách và lời cần đọc được đặt riêng, nên không cần trộn văn bản đọc với mô tả cách thể hiện.</p><p>Flash-Lite dùng cùng định dạng điều khiển lời nói với Gemini 3.8 Flash TTS. Trong hội thoại, các lượt lời thuộc những người nói cụ thể. Số giọng có sẵn trong một yêu cầu nhiều giọng bị giới hạn ở hai; các giọng tạo theo mô tả hoặc mẫu được dùng cho từng lượt lời riêng lẻ.</p><h4>Dữ liệu đầu vào</h4><p>Đầu vào là <strong>văn bản tối đa 8 192 token</strong>, đầu ra được tạo là <strong>âm thanh với giới hạn 16 384 token</strong>. Cài đặt cách đọc điều khiển phong cách thể hiện, còn những sự kiện giọng ngắn và khoảng dừng được đặt bằng thẻ âm thanh đặc biệt trong văn bản. Đây là tổng hợp giọng nói cho lượt lời đã cho, không phải tạo câu trả lời văn bản cho câu hỏi.</p><h4>Định dạng và xử lý</h4><p>Câu trả lời thông thường dùng <strong>WAV</strong> theo mặc định. Định dạng truyền luồng mặc định là <strong>PCM không có phần đầu</strong>. Thông số âm thanh gốc là <strong>24 kHz, một kênh và 16 bit</strong>. Nhà sản xuất còn cung cấp PCM, mu-law và A-law. Lưu đệm ngữ cảnh và xử lý theo lô được hỗ trợ. Cần xét riêng các khả năng định dạng âm thanh với cách nhận tệp thực tế qua phương thức giọng nói đã chọn.</p><h4>Giới hạn của mô hình</h4><p>Phiên bản này không công bố Thinking, gọi hàm, thực thi mã, tìm kiếm trong tệp, bổ sung căn cứ từ tìm kiếm, Google Maps, câu trả lời văn bản có cấu trúc, tạo ảnh hoặc sử dụng nội dung địa chỉ web. Mục đích của mô hình là đọc nhanh tư liệu đã chuẩn bị.</p><p>Định hướng độ trễ thấp không xác định thời hạn hoàn thành cho mọi yêu cầu. Phạm vi ngôn ngữ, cách chọn giọng và điều khiển cách thể hiện mô tả khả năng của chính mô hình, không có nghĩa mọi cài đặt tự động sẵn có trong bất kỳ phương thức giọng nói nào.</p>",
  "aboutText": "Gemini 3.8 Flash-Lite TTS được thiết kế cho số lượng lớn thao tác giọng nói: đọc văn bản, đọc các lượt lời liên tiếp và những kịch bản giọng nói hằng ngày. Theo Google, đặc trưng của mô hình là độ trễ thấp và xử lý hàng loạt hiệu quả.\n\n### Chọn giọng\n\nMô hình hỗ trợ **101 ngôn ngữ**, gồm tiếng Nga. Các lựa chọn gồm **30 giọng có sẵn**, thư viện mở rộng, tạo giọng riêng và tái tạo giọng theo mẫu. Giọng, phong cách và lời cần đọc được đặt riêng, nên không cần trộn văn bản đọc với mô tả cách thể hiện.\n\nFlash-Lite dùng cùng định dạng điều khiển lời nói với Gemini 3.8 Flash TTS. Trong hội thoại, các lượt lời thuộc những người nói cụ thể. Số giọng có sẵn trong một yêu cầu nhiều giọng bị giới hạn ở hai; các giọng tạo theo mô tả hoặc mẫu được dùng cho từng lượt lời riêng lẻ.\n\n### Dữ liệu đầu vào\n\nĐầu vào là **văn bản tối đa 8 192 token**, đầu ra được tạo là **âm thanh với giới hạn 16 384 token**. Cài đặt cách đọc điều khiển phong cách thể hiện, còn những sự kiện giọng ngắn và khoảng dừng được đặt bằng thẻ âm thanh đặc biệt trong văn bản. Đây là tổng hợp giọng nói cho lượt lời đã cho, không phải tạo câu trả lời văn bản cho câu hỏi.\n\n### Định dạng và xử lý\n\nCâu trả lời thông thường dùng **WAV** theo mặc định. Định dạng truyền luồng mặc định là **PCM không có phần đầu**. Thông số âm thanh gốc là **24 kHz, một kênh và 16 bit**. Nhà sản xuất còn cung cấp PCM, mu-law và A-law. Lưu đệm ngữ cảnh và xử lý theo lô được hỗ trợ. Cần xét riêng các khả năng định dạng âm thanh với cách nhận tệp thực tế qua phương thức giọng nói đã chọn.\n\n### Giới hạn của mô hình\n\nPhiên bản này không công bố Thinking, gọi hàm, thực thi mã, tìm kiếm trong tệp, bổ sung căn cứ từ tìm kiếm, Google Maps, câu trả lời văn bản có cấu trúc, tạo ảnh hoặc sử dụng nội dung địa chỉ web. Mục đích của mô hình là đọc nhanh tư liệu đã chuẩn bị.\n\nĐịnh hướng độ trễ thấp không xác định thời hạn hoàn thành cho mọi yêu cầu. Phạm vi ngôn ngữ, cách chọn giọng và điều khiển cách thể hiện mô tả khả năng của chính mô hình, không có nghĩa mọi cài đặt tự động sẵn có trong bất kỳ phương thức giọng nói nào.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "92d134352651078c7427453384f76992e5363334f0aeae4b51c5a0d09e97cfe7",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "vi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Gemini 3.8 Flash Lite Tts</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Google /</span><code>gemini-3.8-flash-lite-tts</code><button type=\"button\" id=\"copy-id\">Sao chép ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Các phần của thẻ mô hình\"><button type=\"button\" data-card-jump=\"overview\">Bắt đầu</button><button type=\"button\" data-card-jump=\"methods\">Đầu vào &amp; phương thức</button><button type=\"button\" data-card-jump=\"pricing\">Bảng giá</button><button type=\"button\" data-card-jump=\"examples\">Ví dụ</button><button type=\"button\" data-card-jump=\"results\">Kết quả</button><button type=\"button\" data-card-jump=\"aliases\">Bí danh</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Phương thức 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|gemini-3.8-flash-lite-tts\">Tổng hợp giọng nói</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\">Bắt đầu</h3><p class=\"mdesc-full\">Mô hình giọng nói của Google dành cho đọc văn bản quy mô lớn, các lượt lời liên tiếp và kịch bản giọng nói bằng 101 ngôn ngữ.</p><dl class=\"card-io\" data-card-io><div><dt>Đầu vào được chấp nhận</dt><dd>Văn bản</dd></div><div><dt>Kết quả</dt><dd>Âm thanh</dd></div></dl><details class=\"card-about\"><summary>Về mô hình</summary><p class=\"note-s\" data-model-method-boundary>Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.</p><div class=\"mabout\" id=\"m-about\"><p>Gemini 3.8 Flash-Lite TTS được thiết kế cho số lượng lớn thao tác giọng nói: đọc văn bản, đọc các lượt lời liên tiếp và những kịch bản giọng nói hằng ngày. Theo Google, đặc trưng của mô hình là độ trễ thấp và xử lý hàng loạt hiệu quả.</p><h4>Chọn giọng</h4><p>Mô hình hỗ trợ <strong>101 ngôn ngữ</strong>, gồm tiếng Nga. Các lựa chọn gồm <strong>30 giọng có sẵn</strong>, thư viện mở rộng, tạo giọng riêng và tái tạo giọng theo mẫu. Giọng, phong cách và lời cần đọc được đặt riêng, nên không cần trộn văn bản đọc với mô tả cách thể hiện.</p><p>Flash-Lite dùng cùng định dạng điều khiển lời nói với Gemini 3.8 Flash TTS. Trong hội thoại, các lượt lời thuộc những người nói cụ thể. Số giọng có sẵn trong một yêu cầu nhiều giọng bị giới hạn ở hai; các giọng tạo theo mô tả hoặc mẫu được dùng cho từng lượt lời riêng lẻ.</p><h4>Dữ liệu đầu vào</h4><p>Đầu vào là <strong>văn bản tối đa 8 192 token</strong>, đầu ra được tạo là <strong>âm thanh với giới hạn 16 384 token</strong>. Cài đặt cách đọc điều khiển phong cách thể hiện, còn những sự kiện giọng ngắn và khoảng dừng được đặt bằng thẻ âm thanh đặc biệt trong văn bản. Đây là tổng hợp giọng nói cho lượt lời đã cho, không phải tạo câu trả lời văn bản cho câu hỏi.</p><h4>Định dạng và xử lý</h4><p>Câu trả lời thông thường dùng <strong>WAV</strong> theo mặc định. Định dạng truyền luồng mặc định là <strong>PCM không có phần đầu</strong>. Thông số âm thanh gốc là <strong>24 kHz, một kênh và 16 bit</strong>. Nhà sản xuất còn cung cấp PCM, mu-law và A-law. Lưu đệm ngữ cảnh và xử lý theo lô được hỗ trợ. Cần xét riêng các khả năng định dạng âm thanh với cách nhận tệp thực tế qua phương thức giọng nói đã chọn.</p><h4>Giới hạn của mô hình</h4><p>Phiên bản này không công bố Thinking, gọi hàm, thực thi mã, tìm kiếm trong tệp, bổ sung căn cứ từ tìm kiếm, Google Maps, câu trả lời văn bản có cấu trúc, tạo ảnh hoặc sử dụng nội dung địa chỉ web. Mục đích của mô hình là đọc nhanh tư liệu đã chuẩn bị.</p><p>Định hướng độ trễ thấp không xác định thời hạn hoàn thành cho mọi yêu cầu. Phạm vi ngôn ngữ, cách chọn giọng và điều khiển cách thể hiện mô tả khả năng của chính mô hình, không có nghĩa mọi cài đặt tự động sẵn có trong bất kỳ phương thức giọng nói nào.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Có trên Ailoot · đầu vào &amp; phương thức</h3><details class=\"card-method\" open><summary><b>Ailoot · Tổng hợp giọng nói</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>text</code></dd></div><div><dt>Đầu ra</dt><dd><code>audio</code></dd></div><div><dt>Ngữ cảnh</dt><dd>8.192 tokens</dd></div><div><dt>Đầu ra tối đa</dt><dd>16.384 tokens</dd></div><div><dt>Định dạng đầu ra</dt><dd>byte âm thanh gốc hoặc liên kết tài sản JSON</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Trường</th><th>Loại</th><th>Yêu cầu</th><th>Giá trị &amp; giới hạn</th><th>Mặc định</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>gemini-3.8-flash-lite-tts</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Độ dài tối thiểu: 1</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Achernar, Achird, Algenib, Algieba, Alnilam, Aoede, Arlo, Autonoe, Bodi, Brio, Callirrhoe, Charon, Cleo, Cruz, Daro, Despina, Elio, Enceladus, Enya, Enzo, Erinome, Fenrir, Finn, Fola, Gacrux, Gero, Hali, Iapetus, Jett, Jori, Kira, Knox, Koda, Kore, Laomedeia, Leda, Lora, Ludo, Lumi, Mako, Milo, Neno, Nika, Nyla, Olin, Orus, Puck, Pulcherrima, Rami, Rasalgethi, Riko, Rina, Sadachbia, Sadaltager, Sami, Schedar, Sola, Sulafat, Tari, Tavi, Tova, Umbriel, Varo, Veda, Vindemiatrix, Zali, Zeno, Zephyr, Zubenelgenubi, Zuri</div></td><td data-cell-label=\"Mặc định\" data-default=\"known\"><span class=\"card-cell-label\">Mặc định</span>Kore</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>, wav, json</div></td><td data-cell-label=\"Mặc định\" data-default=\"known\"><span class=\"card-cell-label\">Mặc định</span></td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">stream_format</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>audio</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Tổ hợp tư liệu đầu vào</summary><p class=\"note-s\"><b>text_to_speech</b> · Bắt buộc: input</p></details><details class=\"note-s\" data-method-contract><summary>Tham số phương thức và vòng đời</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Tham số</th><th>Hợp đồng</th></tr></thead><tbody><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>material_types</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>text</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>required</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>null</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>optional_controls</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>null</td></tr></tbody></table></div><p>Vòng đời: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện</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\">Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Bảng giá</h3><h4>Mức phí phương thức Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Tổng hợp giọng nói</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Đầu vào</dt><dd>0,0005 US$ <em>/ 1K</em></dd></div><div><dt>Đầu ra</dt><dd>0,006 US$ <em>/ 1K</em></dd></div><div><dt>Đọc bộ nhớ đệm</dt><dd>0,000125 US$ <em>/ 1K</em></dd></div></dl></section><p class=\"note-s\">Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. <a href=\"/docs/vi/billing/reserve/\">Cách hoạt động của cơ chế tạm giữ và quyết toán →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot · Tổng hợp giọng nói</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-344-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-344-panel-0\" aria-selected=\"true\" tabindex=\"0\">Ví dụ giọng nói</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><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-344-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-344-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\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;gemini-3.8-flash-lite-tts&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\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.wav\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Nhận và lưu kết quả</h3><h4>Ailoot · Tổng hợp giọng nói</h4><p class=\"note-s\">byte âm thanh gốc hoặc liên kết tài sản JSON</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>Lưu tất cả kết quả đã hoàn tất</h5><p class=\"note-s\">Lưu mọi phản hồi hoàn chỉnh, tệp và phần nội dung được trả về.</p><p class=\"note-s\">Một đầu ra mặc định trả về byte âm thanh gốc với Content-Type thực tế; response_format=json hoặc nhiều đầu ra sẽ trả về tất cả liên kết thuộc quyền sở hữu. Không thực hiện chuyển đổi MP3/Opus/AAC/FLAC/PCM theo yêu cầu hoặc SSE.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Nếu cần kiểm tra phản hồi gốc</h5><p class=\"note-s\">Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh.</p></div><details class=\"card-about\" data-output-fields><summary>Trường phản hồi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Trường</th><th>Loại</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">binary native audio</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>bytes</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">response_id</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">actual_count</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>integer</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>owned audio asset link</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Lỗi và bước tiếp theo</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Phản hồi</th><th>Điều kiện</th><th>Bước tiếp theo</th></tr></thead><tbody><tr><th data-cell-label=\"Phản hồi\" scope=\"row\"><span class=\"card-cell-label\">Phản hồi</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Điều kiện\"><span class=\"card-cell-label\">Điều kiện</span>Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ</td><td data-cell-label=\"Bước tiếp theo\"><span class=\"card-cell-label\">Bước tiếp theo</span>Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.</td></tr><tr><th data-cell-label=\"Phản hồi\" scope=\"row\"><span class=\"card-cell-label\">Phản hồi</span><code>server_error</code></th><td data-cell-label=\"Điều kiện\"><span class=\"card-cell-label\">Điều kiện</span>Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra</td><td data-cell-label=\"Bước tiếp theo\"><span class=\"card-cell-label\">Bước tiếp theo</span>Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Bí danh</h3><h4>Bí danh mô hình</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=gemini-3.8-flash-lite-tts&amp;route=Core&amp;caller=gemini-3.8-flash-lite-tts&amp;fmt=speech\"><code>gemini-3.8-flash-lite-tts</code></a></span></p><h4>Bí danh đường dẫn phương thức</h4><p class=\"note-s\">Dùng các đường dẫn phương thức hiển thị ở trên.</p><h4>ID gọi liên quan</h4><p class=\"note-s\"><a href=\"#m=gemini-3.8-flash-lite-tts&amp;route=Core&amp;caller=gemini-3.8-flash-lite-tts&amp;fmt=speech\"><code>gemini-3.8-flash-lite-tts</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "gemini-3.8-flash-lite-tts",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "gemini-3.8-flash-lite-tts",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|gemini-3.8-flash-lite-tts",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": 0.125,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "A single output defaults to native audio bytes with actualContent-Type; response_format=json or multiple outputs returns all owned links. No requested MP3/Opus/AAC/FLAC/PCM conversion or SSE.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "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": "Một đầu ra mặc định trả về byte âm thanh gốc với Content-Type thực tế; response_format=json hoặc nhiều đầu ra sẽ trả về tất cả liên kết thuộc quyền sở hữu. Không thực hiện chuyển đổi MP3/Opus/AAC/FLAC/PCM theo yêu cầu hoặc SSE.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary native audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "response_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "actual_count",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "owned audio asset link"
                }
              ],
              "format": "byte âm thanh gốc hoặc liên kết tài sản JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "gemini-3.8-flash-lite-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "Kore",
                "default_known": true,
                "enum": [
                  "Achernar",
                  "Achird",
                  "Algenib",
                  "Algieba",
                  "Alnilam",
                  "Aoede",
                  "Arlo",
                  "Autonoe",
                  "Bodi",
                  "Brio",
                  "Callirrhoe",
                  "Charon",
                  "Cleo",
                  "Cruz",
                  "Daro",
                  "Despina",
                  "Elio",
                  "Enceladus",
                  "Enya",
                  "Enzo",
                  "Erinome",
                  "Fenrir",
                  "Finn",
                  "Fola",
                  "Gacrux",
                  "Gero",
                  "Hali",
                  "Iapetus",
                  "Jett",
                  "Jori",
                  "Kira",
                  "Knox",
                  "Koda",
                  "Kore",
                  "Laomedeia",
                  "Leda",
                  "Lora",
                  "Ludo",
                  "Lumi",
                  "Mako",
                  "Milo",
                  "Neno",
                  "Nika",
                  "Nyla",
                  "Olin",
                  "Orus",
                  "Puck",
                  "Pulcherrima",
                  "Rami",
                  "Rasalgethi",
                  "Riko",
                  "Rina",
                  "Sadachbia",
                  "Sadaltager",
                  "Sami",
                  "Schedar",
                  "Sola",
                  "Sulafat",
                  "Tari",
                  "Tavi",
                  "Tova",
                  "Umbriel",
                  "Varo",
                  "Veda",
                  "Vindemiatrix",
                  "Zali",
                  "Zeno",
                  "Zephyr",
                  "Zubenelgenubi",
                  "Zuri"
                ],
                "enum_known": true,
                "name": "voice",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "",
                "default_known": true,
                "enum": [
                  "",
                  "wav",
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "audio"
                ],
                "enum_known": true,
                "name": "stream_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "SSE",
              "mp3/opus/aac/flac/pcm requestedtranscoding"
            ]
          },
          "hints": [
            "Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu."
          ],
          "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": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "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": [
              "audio"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 8192,
        "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\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"gemini-3.8-flash-lite-tts\", \"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\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.wav\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": 0.5,
        "input": [
          "text"
        ],
        "label": "Tổng hợp giọng nói",
        "max_out": 16384,
        "max_tool_calls": null,
        "out": 6,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.5,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 6,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.125,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "gemini-3.8-flash-lite-tts",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    }
  ],
  "model_id": "gemini-3.8-flash-lite-tts",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "eda0950c13426f0832fe9af936df29effa1028e0442cd331bd0c98b7dd3252c1",
    "input_html_sha256": "3b935c6277102065f7740b233f93eeb66d99af89ef6b825fbd9170242d519120",
    "private_audit_sha256": "451aab4265f5f8f8591a4a415b1b288b774859b7bb1c37ce4f7e914465ce634f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/gemini-3-8-flash-lite-tts/",
    "description": "Mô hình giọng nói của Google dành cho đọc văn bản quy mô lớn, các lượt lời liên tiếp và kịch bản giọng nói bằng 101 ngôn ngữ.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/gemini-3-8-flash-lite-tts/index.md",
    "title": "Gemini 3.8 Flash Lite Tts — Ailoot",
    "url": "https://ailoot.ai/models/vi/gemini-3-8-flash-lite-tts/"
  },
  "rawModel": {
    "about": "Gemini 3.8 Flash-Lite TTS được thiết kế cho số lượng lớn thao tác giọng nói: đọc văn bản, đọc các lượt lời liên tiếp và những kịch bản giọng nói hằng ngày. Theo Google, đặc trưng của mô hình là độ trễ thấp và xử lý hàng loạt hiệu quả.\n\n### Chọn giọng\n\nMô hình hỗ trợ **101 ngôn ngữ**, gồm tiếng Nga. Các lựa chọn gồm **30 giọng có sẵn**, thư viện mở rộng, tạo giọng riêng và tái tạo giọng theo mẫu. Giọng, phong cách và lời cần đọc được đặt riêng, nên không cần trộn văn bản đọc với mô tả cách thể hiện.\n\nFlash-Lite dùng cùng định dạng điều khiển lời nói với Gemini 3.8 Flash TTS. Trong hội thoại, các lượt lời thuộc những người nói cụ thể. Số giọng có sẵn trong một yêu cầu nhiều giọng bị giới hạn ở hai; các giọng tạo theo mô tả hoặc mẫu được dùng cho từng lượt lời riêng lẻ.\n\n### Dữ liệu đầu vào\n\nĐầu vào là **văn bản tối đa 8 192 token**, đầu ra được tạo là **âm thanh với giới hạn 16 384 token**. Cài đặt cách đọc điều khiển phong cách thể hiện, còn những sự kiện giọng ngắn và khoảng dừng được đặt bằng thẻ âm thanh đặc biệt trong văn bản. Đây là tổng hợp giọng nói cho lượt lời đã cho, không phải tạo câu trả lời văn bản cho câu hỏi.\n\n### Định dạng và xử lý\n\nCâu trả lời thông thường dùng **WAV** theo mặc định. Định dạng truyền luồng mặc định là **PCM không có phần đầu**. Thông số âm thanh gốc là **24 kHz, một kênh và 16 bit**. Nhà sản xuất còn cung cấp PCM, mu-law và A-law. Lưu đệm ngữ cảnh và xử lý theo lô được hỗ trợ. Cần xét riêng các khả năng định dạng âm thanh với cách nhận tệp thực tế qua phương thức giọng nói đã chọn.\n\n### Giới hạn của mô hình\n\nPhiên bản này không công bố Thinking, gọi hàm, thực thi mã, tìm kiếm trong tệp, bổ sung căn cứ từ tìm kiếm, Google Maps, câu trả lời văn bản có cấu trúc, tạo ảnh hoặc sử dụng nội dung địa chỉ web. Mục đích của mô hình là đọc nhanh tư liệu đã chuẩn bị.\n\nĐịnh hướng độ trễ thấp không xác định thời hạn hoàn thành cho mọi yêu cầu. Phạm vi ngôn ngữ, cách chọn giọng và điều khiển cách thể hiện mô tả khả năng của chính mô hình, không có nghĩa mọi cài đặt tự động sẵn có trong bất kỳ phương thức giọng nói nào.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "ctx": 8192,
    "formats": [
      "speech"
    ],
    "id": "gemini-3.8-flash-lite-tts",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": 16384,
    "methods": [
      {
        "cache_read": 0.125,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "A single output defaults to native audio bytes with actualContent-Type; response_format=json or multiple outputs returns all owned links. No requested MP3/Opus/AAC/FLAC/PCM conversion or SSE.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "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": "Một đầu ra mặc định trả về byte âm thanh gốc với Content-Type thực tế; response_format=json hoặc nhiều đầu ra sẽ trả về tất cả liên kết thuộc quyền sở hữu. Không thực hiện chuyển đổi MP3/Opus/AAC/FLAC/PCM theo yêu cầu hoặc SSE.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary native audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "response_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "actual_count",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "owned audio asset link"
                }
              ],
              "format": "byte âm thanh gốc hoặc liên kết tài sản JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "gemini-3.8-flash-lite-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "Kore",
                "default_known": true,
                "enum": [
                  "Achernar",
                  "Achird",
                  "Algenib",
                  "Algieba",
                  "Alnilam",
                  "Aoede",
                  "Arlo",
                  "Autonoe",
                  "Bodi",
                  "Brio",
                  "Callirrhoe",
                  "Charon",
                  "Cleo",
                  "Cruz",
                  "Daro",
                  "Despina",
                  "Elio",
                  "Enceladus",
                  "Enya",
                  "Enzo",
                  "Erinome",
                  "Fenrir",
                  "Finn",
                  "Fola",
                  "Gacrux",
                  "Gero",
                  "Hali",
                  "Iapetus",
                  "Jett",
                  "Jori",
                  "Kira",
                  "Knox",
                  "Koda",
                  "Kore",
                  "Laomedeia",
                  "Leda",
                  "Lora",
                  "Ludo",
                  "Lumi",
                  "Mako",
                  "Milo",
                  "Neno",
                  "Nika",
                  "Nyla",
                  "Olin",
                  "Orus",
                  "Puck",
                  "Pulcherrima",
                  "Rami",
                  "Rasalgethi",
                  "Riko",
                  "Rina",
                  "Sadachbia",
                  "Sadaltager",
                  "Sami",
                  "Schedar",
                  "Sola",
                  "Sulafat",
                  "Tari",
                  "Tavi",
                  "Tova",
                  "Umbriel",
                  "Varo",
                  "Veda",
                  "Vindemiatrix",
                  "Zali",
                  "Zeno",
                  "Zephyr",
                  "Zubenelgenubi",
                  "Zuri"
                ],
                "enum_known": true,
                "name": "voice",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "",
                "default_known": true,
                "enum": [
                  "",
                  "wav",
                  "json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "audio"
                ],
                "enum_known": true,
                "name": "stream_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "SSE",
              "mp3/opus/aac/flac/pcm requestedtranscoding"
            ]
          },
          "hints": [
            "Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu."
          ],
          "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": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "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": [
              "audio"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 8192,
        "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\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"gemini-3.8-flash-lite-tts\", \"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\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.wav\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": 0.5,
        "input": [
          "text"
        ],
        "label": "Tổng hợp giọng nói",
        "max_out": 16384,
        "max_tool_calls": null,
        "out": 6,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.5,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 6,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.125,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "gemini-3.8-flash-lite-tts",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "gemini-3.8-flash-lite-tts",
        "request_model_id": "gemini-3.8-flash-lite-tts",
        "route_label": "Core"
      }
    ],
    "name": "Gemini 3.8 Flash Lite Tts",
    "price": {
      "in": 0.5,
      "in_label": null,
      "out": 6,
      "out_label": null,
      "sort_in": 0.5,
      "sort_out": 6,
      "varies": false
    },
    "short": "Mô hình giọng nói của Google dành cho đọc văn bản quy mô lớn, các lượt lời liên tiếp và kịch bản giọng nói bằng 101 ngôn ngữ."
  },
  "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": "Mô hình giọng nói của Google dành cho đọc văn bản quy mô lớn, các lượt lời liên tiếp và kịch bản giọng nói bằng 101 ngôn ngữ.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "e4b5ea7b443e1c02b8f8abcbc723aa62acd1f3690226170e4e7428e1f5afad6f",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "9d0d7142052fac12ac18f20e1d0feb3b166a4c1be146419fa63b1ebdb4b39028"
}
