{
  "aboutHtml": "<p>Google Gemini 3.8 Flash TTS là cấp diễn xuất giọng nói sáng tạo trong dòng chuyển văn bản thành giọng nói 3.8 của Google. Trọng tâm là độ trung thực âm thanh, dải cảm xúc, giọng vùng miền và sự liên tục của giọng nhân vật qua đối thoại dài. Google nhấn mạnh sách nói, lời dẫn thu âm, phát âm khó và cảnh cần diễn xuất giọng đáng kể. Đầu ra là âm thanh lời nói từ kịch bản đã chuẩn bị, phù hợp để kiểm tra phần thể hiện của người dẫn hoặc sắp xếp hội thoại có kịch bản cùng các yếu tố sản xuất khác.</p><p>Bắt đầu bằng đúng những từ cần nghe. Bản lời thoại 3.8 được xử lý nguyên văn, còn người nói và cách thể hiện xuyên suốt thuộc siêu dữ liệu lời nói riêng. Gán định danh người nói rõ ràng cho mỗi lượt và khi hữu ích, thêm chỉ dẫn phong cách ngắn như lo lắng kìm nén hoặc tò mò vui vẻ. Tách một câu thành các lượt riêng khi cảm xúc hoặc nhịp thay đổi đáng kể. Nhờ vậy, đề bài dễ kiểm tra hơn: bản lời thoại chứa đối thoại, còn chỉ dẫn đính kèm giải thích cách thể hiện phần đó. Chỉ dẫn viết thông thường đặt trong bản lời thoại có thể bị đọc thành tiếng.</p><p>Hệ thống giọng 3.8 của Google gồm giọng dựng sẵn, thư viện giọng mở rộng, hình tượng giọng được thiết kế và định danh giọng được sao chép. Chọn hình tượng nền tảng trước khi áp dụng thay đổi diễn xuất tạm thời. Giọng vùng miền ổn định hoặc định danh nhân vật thuộc giọng đã chọn; trường style điều khiển phần thể hiện hiện tại. Nhà sản xuất khuyên tái sử dụng giọng đó với chỉ dẫn ngắn thay vì lặp các khối Audio Profile hoặc Director’s Notes dài. Cấu hình đối thoại trong một yêu cầu được ghi trong tài liệu kết hợp tối đa 2 người nói dựng sẵn. Với nhân vật được thiết kế hoặc sao chép, hướng dẫn yêu cầu tạo từng lượt riêng khi lắp ghép trao đổi nhiều nhân vật.</p><p>Đặt tiếng phát âm ngắn của con người hoặc khoảng dừng ở điểm liên quan bằng thẻ trong dấu ngoặc góc (&lt; &gt;). Ví dụ kịch bản minh họa là “Tôi tưởng anh đã đi rồi. &lt;short pause&gt; &lt;sigh&gt; Tôi vẫn để đèn sáng.” Gắn cách nói trầm lắng cho cả lượt thay vì đặt chỉ dẫn đó giữa các từ được đọc. Dấu câu và chữ hoa có thể giúp diễn đạt sự ngập ngừng hoặc nhấn mạnh từ. Google còn mô tả phản ứng người nghe phân cách bằng dấu gạch đứng cho lời hưởng ứng và đối thoại chồng lấn, đồng thời xác định Flash TTS là phiên bản 3.8 ưu tiên cho mức chồng lấn nhiều hơn. Giữ phản ứng đủ ngắn để người nghe vẫn hiểu lời chính.</p><p>Nhà sản xuất liệt kê 130 ngôn ngữ được hỗ trợ cho Flash TTS và nhấn mạnh độ bao phủ phương ngữ vùng miền và thiểu số. Đề bài thể hiện giọng vùng hữu ích cho nhân vật sách nói bản địa hóa hoặc lời dẫn có giọng quan trọng với khán giả. Chuẩn bị kịch bản bằng ngôn ngữ cuối, dùng cách viết nhất quán cho tên lặp lại và xác định cách đọc chữ viết tắt, con số. Trong bước biên tập, bắt đầu nghe kiểm tra từ đoạn có tên khó, đổi phương ngữ hoặc chuyển cảm xúc. Cần đánh giá giọng và nhịp mong muốn trên âm thanh tạo ra thay vì chỉ suy từ nhãn ngôn ngữ.</p><p>Hướng dẫn đầu ra 3.8 phân biệt tệp hoàn chỉnh với âm thanh truyền phát. Mặc định của yêu cầu hoàn tất là tệp WAV có phần đầu RIFF: 24 kHz, mono, PCM little-endian 16-bit có dấu. Mặc định truyền phát là PCM tuyến tính thô không có phần đầu, cùng các đặc tính mẫu. PCM tuyến tính thô, mu-law và A-law cũng là những lựa chọn mã hóa được ghi trong tài liệu. Dùng thông tin mã hóa thực tế khi chuẩn bị phát hoặc nhập kết quả vào trình biên tập. Với chuỗi tệp đối thoại riêng, giữ định dạng nhất quán và kiểm tra điểm nối xem có thay đổi đột ngột về mức âm, nhịp hoặc âm nền phòng không.</p><p>Trang mô hình cụ thể của Google quy định giới hạn phục vụ Gemini API là 8,192 token đầu vào và 16,384 token đầu ra. Đây là giới hạn token, không phải thời lượng sách nói cố định hoặc số giây lời nói chính xác. Chia kịch bản dài tại ranh giới có ý nghĩa và giữ định danh giọng đã chọn qua các phần. Với sản xuất dài một chương, nghe kiểm tra tính liên tục tại chỗ đổi đoạn và cảnh, cũng như độ chính xác từ trong mỗi phân đoạn. Kiểm tra thực tế tốt sẽ ghi những câu cần sửa phát âm hoặc diễn xuất thay vì viết lại toàn bộ đề bài giọng sau mỗi lần thu.</p><p>Flash TTS và Flash-Lite TTS dùng chung cấu trúc chuẩn bị 3.8, nên lựa chọn phiên bản có thể theo nhu cầu công việc. Flash TTS chú trọng diễn xuất, đối thoại phức tạp, phát âm khó và bao phủ phương ngữ rộng hơn; Flash-Lite chú trọng thông lượng cho nội dung lời nói thông thường. Các tùy chọn biểu cảm liên quan đến lời nói con người và sự kiện giọng. Hiệu ứng nền, nhạc và bản hòa âm hoàn chỉnh có thể được lập kế hoạch thành tài sản riêng. Viết kịch bản, dịch và nhận dạng lời nói đã ghi vẫn là các giai đoạn riêng xung quanh mô hình văn bản thành âm thanh này.</p>",
  "aboutText": "Google Gemini 3.8 Flash TTS là cấp diễn xuất giọng nói sáng tạo trong dòng chuyển văn bản thành giọng nói 3.8 của Google. Trọng tâm là độ trung thực âm thanh, dải cảm xúc, giọng vùng miền và sự liên tục của giọng nhân vật qua đối thoại dài. Google nhấn mạnh sách nói, lời dẫn thu âm, phát âm khó và cảnh cần diễn xuất giọng đáng kể. Đầu ra là âm thanh lời nói từ kịch bản đã chuẩn bị, phù hợp để kiểm tra phần thể hiện của người dẫn hoặc sắp xếp hội thoại có kịch bản cùng các yếu tố sản xuất khác.\n\nBắt đầu bằng đúng những từ cần nghe. Bản lời thoại 3.8 được xử lý nguyên văn, còn người nói và cách thể hiện xuyên suốt thuộc siêu dữ liệu lời nói riêng. Gán định danh người nói rõ ràng cho mỗi lượt và khi hữu ích, thêm chỉ dẫn phong cách ngắn như lo lắng kìm nén hoặc tò mò vui vẻ. Tách một câu thành các lượt riêng khi cảm xúc hoặc nhịp thay đổi đáng kể. Nhờ vậy, đề bài dễ kiểm tra hơn: bản lời thoại chứa đối thoại, còn chỉ dẫn đính kèm giải thích cách thể hiện phần đó. Chỉ dẫn viết thông thường đặt trong bản lời thoại có thể bị đọc thành tiếng.\n\nHệ thống giọng 3.8 của Google gồm giọng dựng sẵn, thư viện giọng mở rộng, hình tượng giọng được thiết kế và định danh giọng được sao chép. Chọn hình tượng nền tảng trước khi áp dụng thay đổi diễn xuất tạm thời. Giọng vùng miền ổn định hoặc định danh nhân vật thuộc giọng đã chọn; trường style điều khiển phần thể hiện hiện tại. Nhà sản xuất khuyên tái sử dụng giọng đó với chỉ dẫn ngắn thay vì lặp các khối Audio Profile hoặc Director’s Notes dài. Cấu hình đối thoại trong một yêu cầu được ghi trong tài liệu kết hợp tối đa 2 người nói dựng sẵn. Với nhân vật được thiết kế hoặc sao chép, hướng dẫn yêu cầu tạo từng lượt riêng khi lắp ghép trao đổi nhiều nhân vật.\n\nĐặt tiếng phát âm ngắn của con người hoặc khoảng dừng ở điểm liên quan bằng thẻ trong dấu ngoặc góc (< >). Ví dụ kịch bản minh họa là “Tôi tưởng anh đã đi rồi. <short pause> <sigh> Tôi vẫn để đèn sáng.” Gắn cách nói trầm lắng cho cả lượt thay vì đặt chỉ dẫn đó giữa các từ được đọc. Dấu câu và chữ hoa có thể giúp diễn đạt sự ngập ngừng hoặc nhấn mạnh từ. Google còn mô tả phản ứng người nghe phân cách bằng dấu gạch đứng cho lời hưởng ứng và đối thoại chồng lấn, đồng thời xác định Flash TTS là phiên bản 3.8 ưu tiên cho mức chồng lấn nhiều hơn. Giữ phản ứng đủ ngắn để người nghe vẫn hiểu lời chính.\n\nNhà sản xuất liệt kê 130 ngôn ngữ được hỗ trợ cho Flash TTS và nhấn mạnh độ bao phủ phương ngữ vùng miền và thiểu số. Đề bài thể hiện giọng vùng hữu ích cho nhân vật sách nói bản địa hóa hoặc lời dẫn có giọng quan trọng với khán giả. Chuẩn bị kịch bản bằng ngôn ngữ cuối, dùng cách viết nhất quán cho tên lặp lại và xác định cách đọc chữ viết tắt, con số. Trong bước biên tập, bắt đầu nghe kiểm tra từ đoạn có tên khó, đổi phương ngữ hoặc chuyển cảm xúc. Cần đánh giá giọng và nhịp mong muốn trên âm thanh tạo ra thay vì chỉ suy từ nhãn ngôn ngữ.\n\nHướng dẫn đầu ra 3.8 phân biệt tệp hoàn chỉnh với âm thanh truyền phát. Mặc định của yêu cầu hoàn tất là tệp WAV có phần đầu RIFF: 24 kHz, mono, PCM little-endian 16-bit có dấu. Mặc định truyền phát là PCM tuyến tính thô không có phần đầu, cùng các đặc tính mẫu. PCM tuyến tính thô, mu-law và A-law cũng là những lựa chọn mã hóa được ghi trong tài liệu. Dùng thông tin mã hóa thực tế khi chuẩn bị phát hoặc nhập kết quả vào trình biên tập. Với chuỗi tệp đối thoại riêng, giữ định dạng nhất quán và kiểm tra điểm nối xem có thay đổi đột ngột về mức âm, nhịp hoặc âm nền phòng không.\n\nTrang mô hình cụ thể của Google quy định giới hạn phục vụ Gemini API là 8,192 token đầu vào và 16,384 token đầu ra. Đây là giới hạn token, không phải thời lượng sách nói cố định hoặc số giây lời nói chính xác. Chia kịch bản dài tại ranh giới có ý nghĩa và giữ định danh giọng đã chọn qua các phần. Với sản xuất dài một chương, nghe kiểm tra tính liên tục tại chỗ đổi đoạn và cảnh, cũng như độ chính xác từ trong mỗi phân đoạn. Kiểm tra thực tế tốt sẽ ghi những câu cần sửa phát âm hoặc diễn xuất thay vì viết lại toàn bộ đề bài giọng sau mỗi lần thu.\n\nFlash TTS và Flash-Lite TTS dùng chung cấu trúc chuẩn bị 3.8, nên lựa chọn phiên bản có thể theo nhu cầu công việc. Flash TTS chú trọng diễn xuất, đối thoại phức tạp, phát âm khó và bao phủ phương ngữ rộng hơn; Flash-Lite chú trọng thông lượng cho nội dung lời nói thông thường. Các tùy chọn biểu cảm liên quan đến lời nói con người và sự kiện giọng. Hiệu ứng nền, nhạc và bản hòa âm hoàn chỉnh có thể được lập kế hoạch thành tài sản riêng. Viết kịch bản, dịch và nhận dạng lời nói đã ghi vẫn là các giai đoạn riêng xung quanh mô hình văn bản thành âm thanh này.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "7f7b1d39300faa27e251c4e614203c44bbf4a4b5a01aa71c7234b39bc6c7faa2",
    "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\">Google: Gemini 3.8 Flash TTS</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-3.8-flash-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=\"Ultra|speech|/v1/audio/speech|google%2Fgemini-3.8-flash-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\">Google Gemini 3.8 Flash TTS tạo giọng nói giàu biểu cảm cho sách nói, lời dẫn thu âm và đối thoại nhân vật. Mô hình kết hợp kịch bản nguyên văn với chỉ dẫn riêng về người nói và diễn xuất, thẻ giọng nói tức thời cùng hỗ trợ 130 ngôn ngữ, chú trọng phát âm, giọng vùng miền và tính nhất quán giọ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>Google Gemini 3.8 Flash TTS là cấp diễn xuất giọng nói sáng tạo trong dòng chuyển văn bản thành giọng nói 3.8 của Google. Trọng tâm là độ trung thực âm thanh, dải cảm xúc, giọng vùng miền và sự liên tục của giọng nhân vật qua đối thoại dài. Google nhấn mạnh sách nói, lời dẫn thu âm, phát âm khó và cảnh cần diễn xuất giọng đáng kể. Đầu ra là âm thanh lời nói từ kịch bản đã chuẩn bị, phù hợp để kiểm tra phần thể hiện của người dẫn hoặc sắp xếp hội thoại có kịch bản cùng các yếu tố sản xuất khác.</p><p>Bắt đầu bằng đúng những từ cần nghe. Bản lời thoại 3.8 được xử lý nguyên văn, còn người nói và cách thể hiện xuyên suốt thuộc siêu dữ liệu lời nói riêng. Gán định danh người nói rõ ràng cho mỗi lượt và khi hữu ích, thêm chỉ dẫn phong cách ngắn như lo lắng kìm nén hoặc tò mò vui vẻ. Tách một câu thành các lượt riêng khi cảm xúc hoặc nhịp thay đổi đáng kể. Nhờ vậy, đề bài dễ kiểm tra hơn: bản lời thoại chứa đối thoại, còn chỉ dẫn đính kèm giải thích cách thể hiện phần đó. Chỉ dẫn viết thông thường đặt trong bản lời thoại có thể bị đọc thành tiếng.</p><p>Hệ thống giọng 3.8 của Google gồm giọng dựng sẵn, thư viện giọng mở rộng, hình tượng giọng được thiết kế và định danh giọng được sao chép. Chọn hình tượng nền tảng trước khi áp dụng thay đổi diễn xuất tạm thời. Giọng vùng miền ổn định hoặc định danh nhân vật thuộc giọng đã chọn; trường style điều khiển phần thể hiện hiện tại. Nhà sản xuất khuyên tái sử dụng giọng đó với chỉ dẫn ngắn thay vì lặp các khối Audio Profile hoặc Director’s Notes dài. Cấu hình đối thoại trong một yêu cầu được ghi trong tài liệu kết hợp tối đa 2 người nói dựng sẵn. Với nhân vật được thiết kế hoặc sao chép, hướng dẫn yêu cầu tạo từng lượt riêng khi lắp ghép trao đổi nhiều nhân vật.</p><p>Đặt tiếng phát âm ngắn của con người hoặc khoảng dừng ở điểm liên quan bằng thẻ trong dấu ngoặc góc (&lt; &gt;). Ví dụ kịch bản minh họa là “Tôi tưởng anh đã đi rồi. &lt;short pause&gt; &lt;sigh&gt; Tôi vẫn để đèn sáng.” Gắn cách nói trầm lắng cho cả lượt thay vì đặt chỉ dẫn đó giữa các từ được đọc. Dấu câu và chữ hoa có thể giúp diễn đạt sự ngập ngừng hoặc nhấn mạnh từ. Google còn mô tả phản ứng người nghe phân cách bằng dấu gạch đứng cho lời hưởng ứng và đối thoại chồng lấn, đồng thời xác định Flash TTS là phiên bản 3.8 ưu tiên cho mức chồng lấn nhiều hơn. Giữ phản ứng đủ ngắn để người nghe vẫn hiểu lời chính.</p><p>Nhà sản xuất liệt kê 130 ngôn ngữ được hỗ trợ cho Flash TTS và nhấn mạnh độ bao phủ phương ngữ vùng miền và thiểu số. Đề bài thể hiện giọng vùng hữu ích cho nhân vật sách nói bản địa hóa hoặc lời dẫn có giọng quan trọng với khán giả. Chuẩn bị kịch bản bằng ngôn ngữ cuối, dùng cách viết nhất quán cho tên lặp lại và xác định cách đọc chữ viết tắt, con số. Trong bước biên tập, bắt đầu nghe kiểm tra từ đoạn có tên khó, đổi phương ngữ hoặc chuyển cảm xúc. Cần đánh giá giọng và nhịp mong muốn trên âm thanh tạo ra thay vì chỉ suy từ nhãn ngôn ngữ.</p><p>Hướng dẫn đầu ra 3.8 phân biệt tệp hoàn chỉnh với âm thanh truyền phát. Mặc định của yêu cầu hoàn tất là tệp WAV có phần đầu RIFF: 24 kHz, mono, PCM little-endian 16-bit có dấu. Mặc định truyền phát là PCM tuyến tính thô không có phần đầu, cùng các đặc tính mẫu. PCM tuyến tính thô, mu-law và A-law cũng là những lựa chọn mã hóa được ghi trong tài liệu. Dùng thông tin mã hóa thực tế khi chuẩn bị phát hoặc nhập kết quả vào trình biên tập. Với chuỗi tệp đối thoại riêng, giữ định dạng nhất quán và kiểm tra điểm nối xem có thay đổi đột ngột về mức âm, nhịp hoặc âm nền phòng không.</p><p>Trang mô hình cụ thể của Google quy định giới hạn phục vụ Gemini API là 8,192 token đầu vào và 16,384 token đầu ra. Đây là giới hạn token, không phải thời lượng sách nói cố định hoặc số giây lời nói chính xác. Chia kịch bản dài tại ranh giới có ý nghĩa và giữ định danh giọng đã chọn qua các phần. Với sản xuất dài một chương, nghe kiểm tra tính liên tục tại chỗ đổi đoạn và cảnh, cũng như độ chính xác từ trong mỗi phân đoạn. Kiểm tra thực tế tốt sẽ ghi những câu cần sửa phát âm hoặc diễn xuất thay vì viết lại toàn bộ đề bài giọng sau mỗi lần thu.</p><p>Flash TTS và Flash-Lite TTS dùng chung cấu trúc chuẩn bị 3.8, nên lựa chọn phiên bản có thể theo nhu cầu công việc. Flash TTS chú trọng diễn xuất, đối thoại phức tạp, phát âm khó và bao phủ phương ngữ rộng hơn; Flash-Lite chú trọng thông lượng cho nội dung lời nói thông thường. Các tùy chọn biểu cảm liên quan đến lời nói con người và sự kiện giọng. Hiệu ứng nền, nhạc và bản hòa âm hoàn chỉnh có thể được lập kế hoạch thành tài sản riêng. Viết kịch bản, dịch và nhận dạng lời nói đã ghi vẫn là các giai đoạn riêng xung quanh mô hình văn bản thành âm thanh này.</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 Ultra · 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></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><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>google/gemini-3.8-flash-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><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><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>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>Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algieba, Despina, Erinome, Algenib, Rasalgethi, Laomedeia, Achernar, Alnilam, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat</div><div>Độ 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><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>mp3, pcm</div></td><td data-cell-label=\"Mặc định\" data-default=\"known\"><span class=\"card-cell-label\">Mặc định</span>pcm</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>object</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></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=\"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>content_type</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>application/json</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>model, input, voice</td></tr><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></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></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Bảng giá</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.</p><dl data-price-conditions><dt>Chế độ nhanh</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ nhanh</span></dd><dt>Chế độ Flex</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ flex</span></dd><dt>Mức độ suy luận tối đa</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa</span></dd></dl></div><div data-declared-tariff-pricing><h4>Mức phí Ailoot</h4><h4>Giá theo cấu hình</h4><p class=\"note-s\">Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Cấu hình</th><th>Biểu mức phí</th><th>Đơn vị tính phí</th><th>Phí</th></tr></thead><tbody><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>Giá cơ sở cho token</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>Mức phí cơ bản</td><td data-cell-label=\"Đơn vị tính phí\"><span class=\"card-cell-label\">Đơn vị tính phí</span>—</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Token đầu vào</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu ra · Token đầu ra</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Đọc bộ nhớ đệm</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm, 1 giờ</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>token đầu vào</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>—</td><td data-cell-label=\"Đơn vị tính phí\"><span class=\"card-cell-label\">Đơn vị tính phí</span>/ 1K token</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào</span> <b>$0.001</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>token đầu ra</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>—</td><td data-cell-label=\"Đơn vị tính phí\"><span class=\"card-cell-label\">Đơn vị tính phí</span>/ 1K token</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu ra</span> <b>$0.018</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><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 Ultra · 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-1478-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1478-panel-0\" aria-selected=\"true\" tabindex=\"0\">Sử dụng đầu vào thực tế và giữ lại kết quả đầy đủ</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-1478-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1478-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;google/gemini-3.8-flash-tts&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;Zephyr&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#39;]\nPath(&#39;request.json&#39;).write_text(json.dumps(request,ensure_ascii=False),encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Nhận và lưu kết quả</h3><h4>Ailoot Ultra · Giọng nói</h4><p class=\"note-s\">Toàn bộ âm thanh nhị phân hoặc phản hồi audio_url gốc, tiêu đề và mọi tài sản thuộc quyền sở hữu.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Lượt đọc nội dung khác</summary><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-1479-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1479-panel-0\" aria-selected=\"true\" tabindex=\"0\">Đọc tài nguyên hiện có thuộc về bạn</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-1479-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1479-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>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\">Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.</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 X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo.</p></div></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=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fgemini-3.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></span></p><h4>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=google%2Fgemini-3.8-flash-tts&amp;route=Ultra&amp;caller=google%2Fgemini-3.8-flash-tts&amp;fmt=speech\"><code>google/gemini-3.8-flash-tts</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-3.8-flash-tts",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|google%2Fgemini-3.8-flash-tts",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo."
            },
            "outputs": {
              "all_results": "Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Toàn bộ âm thanh nhị phân hoặc phản hồi audio_url gốc, tiêu đề và mọi tài sản thuộc quyền sở hữu."
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.8-flash-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash-tts"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.8-flash-tts",
                "voice": "Zephyr"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "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": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Giọng nói",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "input_token": 1e-06,
            "output_token": 1.8e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-3.8-flash-tts",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "5c9c52de7dcd65366232a70c2925822d808bc1c9f687d326cc18be4110d0653c",
    "input_html_sha256": "0af4924639b8efc5f9ed8c6e1e07c2c1303f7a5e542835a5a49e1fa654b41698",
    "private_audit_sha256": "c3d0fa10137871a3644efb18841d4528abb92810b1948c10cc91533ed853a51b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/google-gemini-3-8-flash-tts/",
    "description": "Google Gemini 3.8 Flash TTS tạo giọng nói giàu biểu cảm cho sách nói, lời dẫn thu âm và đối thoại nhân vật. Mô hình kết hợp kịch bản nguyên văn với chỉ dẫn riêng về người nói và diễn xuất, thẻ giọng nói tức thời cùng hỗ trợ 130 ngôn ngữ, chú trọng phát âm, giọng vùng miền và tính nhất quán giọng.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/google-gemini-3-8-flash-tts/index.md",
    "title": "Google: Gemini 3.8 Flash TTS — Ailoot",
    "url": "https://ailoot.ai/models/vi/google-gemini-3-8-flash-tts/"
  },
  "rawModel": {
    "about": "Google Gemini 3.8 Flash TTS là cấp diễn xuất giọng nói sáng tạo trong dòng chuyển văn bản thành giọng nói 3.8 của Google. Trọng tâm là độ trung thực âm thanh, dải cảm xúc, giọng vùng miền và sự liên tục của giọng nhân vật qua đối thoại dài. Google nhấn mạnh sách nói, lời dẫn thu âm, phát âm khó và cảnh cần diễn xuất giọng đáng kể. Đầu ra là âm thanh lời nói từ kịch bản đã chuẩn bị, phù hợp để kiểm tra phần thể hiện của người dẫn hoặc sắp xếp hội thoại có kịch bản cùng các yếu tố sản xuất khác.\n\nBắt đầu bằng đúng những từ cần nghe. Bản lời thoại 3.8 được xử lý nguyên văn, còn người nói và cách thể hiện xuyên suốt thuộc siêu dữ liệu lời nói riêng. Gán định danh người nói rõ ràng cho mỗi lượt và khi hữu ích, thêm chỉ dẫn phong cách ngắn như lo lắng kìm nén hoặc tò mò vui vẻ. Tách một câu thành các lượt riêng khi cảm xúc hoặc nhịp thay đổi đáng kể. Nhờ vậy, đề bài dễ kiểm tra hơn: bản lời thoại chứa đối thoại, còn chỉ dẫn đính kèm giải thích cách thể hiện phần đó. Chỉ dẫn viết thông thường đặt trong bản lời thoại có thể bị đọc thành tiếng.\n\nHệ thống giọng 3.8 của Google gồm giọng dựng sẵn, thư viện giọng mở rộng, hình tượng giọng được thiết kế và định danh giọng được sao chép. Chọn hình tượng nền tảng trước khi áp dụng thay đổi diễn xuất tạm thời. Giọng vùng miền ổn định hoặc định danh nhân vật thuộc giọng đã chọn; trường style điều khiển phần thể hiện hiện tại. Nhà sản xuất khuyên tái sử dụng giọng đó với chỉ dẫn ngắn thay vì lặp các khối Audio Profile hoặc Director’s Notes dài. Cấu hình đối thoại trong một yêu cầu được ghi trong tài liệu kết hợp tối đa 2 người nói dựng sẵn. Với nhân vật được thiết kế hoặc sao chép, hướng dẫn yêu cầu tạo từng lượt riêng khi lắp ghép trao đổi nhiều nhân vật.\n\nĐặt tiếng phát âm ngắn của con người hoặc khoảng dừng ở điểm liên quan bằng thẻ trong dấu ngoặc góc (< >). Ví dụ kịch bản minh họa là “Tôi tưởng anh đã đi rồi. <short pause> <sigh> Tôi vẫn để đèn sáng.” Gắn cách nói trầm lắng cho cả lượt thay vì đặt chỉ dẫn đó giữa các từ được đọc. Dấu câu và chữ hoa có thể giúp diễn đạt sự ngập ngừng hoặc nhấn mạnh từ. Google còn mô tả phản ứng người nghe phân cách bằng dấu gạch đứng cho lời hưởng ứng và đối thoại chồng lấn, đồng thời xác định Flash TTS là phiên bản 3.8 ưu tiên cho mức chồng lấn nhiều hơn. Giữ phản ứng đủ ngắn để người nghe vẫn hiểu lời chính.\n\nNhà sản xuất liệt kê 130 ngôn ngữ được hỗ trợ cho Flash TTS và nhấn mạnh độ bao phủ phương ngữ vùng miền và thiểu số. Đề bài thể hiện giọng vùng hữu ích cho nhân vật sách nói bản địa hóa hoặc lời dẫn có giọng quan trọng với khán giả. Chuẩn bị kịch bản bằng ngôn ngữ cuối, dùng cách viết nhất quán cho tên lặp lại và xác định cách đọc chữ viết tắt, con số. Trong bước biên tập, bắt đầu nghe kiểm tra từ đoạn có tên khó, đổi phương ngữ hoặc chuyển cảm xúc. Cần đánh giá giọng và nhịp mong muốn trên âm thanh tạo ra thay vì chỉ suy từ nhãn ngôn ngữ.\n\nHướng dẫn đầu ra 3.8 phân biệt tệp hoàn chỉnh với âm thanh truyền phát. Mặc định của yêu cầu hoàn tất là tệp WAV có phần đầu RIFF: 24 kHz, mono, PCM little-endian 16-bit có dấu. Mặc định truyền phát là PCM tuyến tính thô không có phần đầu, cùng các đặc tính mẫu. PCM tuyến tính thô, mu-law và A-law cũng là những lựa chọn mã hóa được ghi trong tài liệu. Dùng thông tin mã hóa thực tế khi chuẩn bị phát hoặc nhập kết quả vào trình biên tập. Với chuỗi tệp đối thoại riêng, giữ định dạng nhất quán và kiểm tra điểm nối xem có thay đổi đột ngột về mức âm, nhịp hoặc âm nền phòng không.\n\nTrang mô hình cụ thể của Google quy định giới hạn phục vụ Gemini API là 8,192 token đầu vào và 16,384 token đầu ra. Đây là giới hạn token, không phải thời lượng sách nói cố định hoặc số giây lời nói chính xác. Chia kịch bản dài tại ranh giới có ý nghĩa và giữ định danh giọng đã chọn qua các phần. Với sản xuất dài một chương, nghe kiểm tra tính liên tục tại chỗ đổi đoạn và cảnh, cũng như độ chính xác từ trong mỗi phân đoạn. Kiểm tra thực tế tốt sẽ ghi những câu cần sửa phát âm hoặc diễn xuất thay vì viết lại toàn bộ đề bài giọng sau mỗi lần thu.\n\nFlash TTS và Flash-Lite TTS dùng chung cấu trúc chuẩn bị 3.8, nên lựa chọn phiên bản có thể theo nhu cầu công việc. Flash TTS chú trọng diễn xuất, đối thoại phức tạp, phát âm khó và bao phủ phương ngữ rộng hơn; Flash-Lite chú trọng thông lượng cho nội dung lời nói thông thường. Các tùy chọn biểu cảm liên quan đến lời nói con người và sự kiện giọng. Hiệu ứng nền, nhạc và bản hòa âm hoàn chỉnh có thể được lập kế hoạch thành tài sản riêng. Viết kịch bản, dịch và nhận dạng lời nói đã ghi vẫn là các giai đoạn riêng xung quanh mô hình văn bản thành âm thanh này.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "capabilities": {
      "context_length": 32768,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Giá theo cấu hình được trình bày đầy đủ trong phần chi tiết."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "google/gemini-3.8-flash-tts",
    "input": [
      "text"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo."
            },
            "outputs": {
              "all_results": "Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Toàn bộ âm thanh nhị phân hoặc phản hồi audio_url gốc, tiêu đề và mọi tài sản thuộc quyền sở hữu."
            },
            "parameters": [
              {
                "enum": [
                  "google/gemini-3.8-flash-tts"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "Zephyr",
                  "Puck",
                  "Charon",
                  "Kore",
                  "Fenrir",
                  "Leda",
                  "Orus",
                  "Aoede",
                  "Callirrhoe",
                  "Autonoe",
                  "Enceladus",
                  "Iapetus",
                  "Umbriel",
                  "Algieba",
                  "Despina",
                  "Erinome",
                  "Algenib",
                  "Rasalgethi",
                  "Laomedeia",
                  "Achernar",
                  "Alnilam",
                  "Schedar",
                  "Gacrux",
                  "Pulcherrima",
                  "Achird",
                  "Zubenelgenubi",
                  "Vindemiatrix",
                  "Sadachbia",
                  "Sadaltager",
                  "Sulafat"
                ],
                "enum_known": true,
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "google/gemini-3.8-flash-tts"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "enum": [
                    "Zephyr",
                    "Puck",
                    "Charon",
                    "Kore",
                    "Fenrir",
                    "Leda",
                    "Orus",
                    "Aoede",
                    "Callirrhoe",
                    "Autonoe",
                    "Enceladus",
                    "Iapetus",
                    "Umbriel",
                    "Algieba",
                    "Despina",
                    "Erinome",
                    "Algenib",
                    "Rasalgethi",
                    "Laomedeia",
                    "Achernar",
                    "Alnilam",
                    "Schedar",
                    "Gacrux",
                    "Pulcherrima",
                    "Achird",
                    "Zubenelgenubi",
                    "Vindemiatrix",
                    "Sadachbia",
                    "Sadaltager",
                    "Sulafat"
                  ],
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "google/gemini-3.8-flash-tts",
                "voice": "Zephyr"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "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": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'google/gemini-3.8-flash-tts', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': 'Zephyr'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nPath('request.json').write_text(json.dumps(request,ensure_ascii=False),encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Giọng nói",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "input_token": 1e-06,
            "output_token": 1.8e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "input token",
            "units": [
              {
                "amount": "0.001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_token",
                "label": "input token",
                "native_amount_usd_per_unit": "0.000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K tokens"
            },
            "label": "output token",
            "units": [
              {
                "amount": "0.018000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_token",
                "label": "output token",
                "native_amount_usd_per_unit": "0.000018",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_token",
            "label": "input token",
            "native_amount_usd_per_unit": "0.000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.018000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_token",
            "label": "output token",
            "native_amount_usd_per_unit": "0.000018",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-3.8-flash-tts",
        "request_model_id": "google/gemini-3.8-flash-tts",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini 3.8 Flash TTS",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.018,
      "out_label": "/ 1K tokens",
      "sort_in": null,
      "sort_out": 0.018,
      "varies": true
    },
    "short": "Google Gemini 3.8 Flash TTS tạo giọng nói giàu biểu cảm cho sách nói, lời dẫn thu âm và đối thoại nhân vật. Mô hình kết hợp kịch bản nguyên văn với chỉ dẫn riêng về người nói và diễn xuất, thẻ giọng nói tức thời cùng hỗ trợ 130 ngôn ngữ, chú trọng phát âm, giọng vùng miền và tính nhất quán giọ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": "Google Gemini 3.8 Flash TTS tạo giọng nói giàu biểu cảm cho sách nói, lời dẫn thu âm và đối thoại nhân vật. Mô hình kết hợp kịch bản nguyên văn với chỉ dẫn riêng về người nói và diễn xuất, thẻ giọng nói tức thời cùng hỗ trợ 130 ngôn ngữ, chú trọng phát âm, giọng vùng miền và tính nhất quán giọng.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "bb692446e24c8db2193ab63d1ec5b5bbe35e0ddfa06286a69bc123a652666b35",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "b4044e57ada782c4e9dfc437fe5b6afd52d592163316c2a7ac525642a04b5849"
}
