{
  "aboutHtml": "<p>S1 là mô hình chuyển văn bản thành giọng nói thế hệ trước của Fish Audio cho lời dẫn giàu biểu cảm và đầu ra giọng của một người nói. Mô hình đọc kịch bản được cung cấp và trả về âm thanh, dùng giọng đã chọn hoặc giọng được điều kiện hóa theo mẫu tham chiếu. Mô hình S1 đầy đủ tách biệt với S1-mini, mô hình chưng cất nhỏ hơn; nhà sản xuất giới thiệu chúng lần lượt là các biến thể 4 tỷ và 0,5 tỷ tham số. Hồ sơ này bao quát mô hình có tên S1.</p><p>Với lời dẫn, soạn các từ thực sự cần được đọc và đánh dấu nơi cách thể hiện nên thay đổi. Kịch bản giải thích hữu ích nêu ý chính trước, phát triển từng ý một và dùng dấu câu tách các cụm lời cần khoảng nghỉ tự nhiên. Với chỉ dẫn ngắn, giữ câu chữ rõ khi nghe mà không có màn hình. Giữ cách đọc dự kiến của tên, chữ viết tắt và đơn vị, đồng thời kiểm tra số trong đầu ra lời nói thay vì cho rằng chuỗi dễ đọc bằng mắt chỉ có một cách phát âm.</p><p>S1 dùng tín hiệu cảm xúc và cách thể hiện trong ngoặc tròn, chẳng hạn (angry), (sad), (in a hurry) hoặc (chuckling). Đặt tín hiệu trước câu hoặc cụm lời cần tác động, với lời nói thực tế ở sau. Cách thể hiện áp dụng cho văn bản theo sau, nên thay đổi cảm xúc cần xuất hiện tại nơi phần thể hiện cần đổi. Đây là cú pháp khác với chỉ dẫn ngoặc vuông của S2; giữ kịch bản được viết cho thế hệ đã chọn thay vì coi hai dạng đánh dấu là có thể thay thế cho nhau.</p><p>Có thể chọn giọng qua mã định danh giọng đã lưu hoặc điều kiện hóa từ bản ghi tham chiếu cùng văn bản chép lời của nó. Với quy trình tham chiếu tức thì, hướng dẫn giọng nói chung khuyến nghị mẫu sạch dài 10–30 giây. Chọn mẫu có phong cách nói và chất lượng ghi âm phù hợp với kết quả dự kiến, đồng thời bảo đảm văn bản khớp các từ trong mẫu. Với người dẫn xuất hiện nhiều lần, dùng lại cùng mẫu giọng qua các đoạn để đổi chủ đề không vô tình trở thành đổi nhân vật.</p><p>Bản phát hành S1 nêu tiếng Anh, Trung, Nhật, Đức, Pháp, Tây Ban Nha, Hàn, Ả Rập, Nga, Hà Lan, Ý, Ba Lan và Bồ Đào Nha trong số các ngôn ngữ được hỗ trợ, đồng thời mô tả trộn ngôn ngữ trong một kịch bản. Cung cấp câu chữ bằng ngôn ngữ đích thay vì xem tổng hợp giọng nói là bước dịch. Với đoạn có tên mượn từ ngôn ngữ khác hoặc điểm chuyển ngôn ngữ, giữ cách viết và ngữ cảnh câu xung quanh rõ ràng, rồi kiểm tra cách giọng đã chọn xử lý điểm chuyển đó.</p><p>Giao diện của nhà sản xuất S1 hỗ trợ một người nói mỗi yêu cầu tổng hợp. Có thể soạn đối thoại thành các đoạn riêng với mẫu giọng tham chiếu tương ứng, rồi để ứng dụng ghép lại; tổng hợp nhiều người nói tích hợp của họ S2 là khả năng riêng. Giữ vai trò, giọng và văn bản gắn với từng đoạn khi soạn câu thoại nhân vật. Kết quả tổng hợp là phần thể hiện kịch bản bằng âm thanh, còn căn thời gian trao đổi hoặc kết hợp với nhạc và video là bước chỉnh sửa sau đó.</p><p>Tùy chọn đầu ra gồm MP3, WAV, PCM thô và Opus, với MP3 làm mặc định. Đầu ra được công bố là mono; WAV và PCM dùng mẫu 16 bit, và lựa chọn tần số lấy mẫu khác nhau theo định dạng. MP3 hỗ trợ 64, 128 và 192 kbps, còn Opus dùng 48 kHz. Có thể điều chỉnh tốc độ từ 0.5 đến 2.0 cùng các điều khiển âm lượng. Chọn tệp đã mã hóa cho sản phẩm thuyết minh hoặc luồng phù hợp để phát, rồi giữ giọng đã chọn và kịch bản cùng kết quả.</p><p>Nhà sản xuất xử lý văn bản dài theo đoạn, với khoảng độ dài đoạn 100–300 được công bố và ngân sách token âm thanh mỗi đoạn thay vì thời lượng ghi âm tổng thể được bảo đảm. Chuẩn hóa văn bản có thể chuyển số tiếng Anh và Trung thành cách đọc tự nhiên, còn mức phạt lặp lại của S1 có thể giảm mẫu âm thanh lặp. Chuẩn hóa độ lớn âm thanh đầu ra là thiết lập khác và không có tác dụng với S1. Kiểm tra phát âm, ranh giới cụm lời, âm lặp và chuyển biến cảm xúc dự kiến trước khi ghép đoạn hoàn chỉnh, rồi sửa đúng câu hoặc mẫu tham chiếu cần chú ý.</p>",
  "aboutText": "S1 là mô hình chuyển văn bản thành giọng nói thế hệ trước của Fish Audio cho lời dẫn giàu biểu cảm và đầu ra giọng của một người nói. Mô hình đọc kịch bản được cung cấp và trả về âm thanh, dùng giọng đã chọn hoặc giọng được điều kiện hóa theo mẫu tham chiếu. Mô hình S1 đầy đủ tách biệt với S1-mini, mô hình chưng cất nhỏ hơn; nhà sản xuất giới thiệu chúng lần lượt là các biến thể 4 tỷ và 0,5 tỷ tham số. Hồ sơ này bao quát mô hình có tên S1.\n\nVới lời dẫn, soạn các từ thực sự cần được đọc và đánh dấu nơi cách thể hiện nên thay đổi. Kịch bản giải thích hữu ích nêu ý chính trước, phát triển từng ý một và dùng dấu câu tách các cụm lời cần khoảng nghỉ tự nhiên. Với chỉ dẫn ngắn, giữ câu chữ rõ khi nghe mà không có màn hình. Giữ cách đọc dự kiến của tên, chữ viết tắt và đơn vị, đồng thời kiểm tra số trong đầu ra lời nói thay vì cho rằng chuỗi dễ đọc bằng mắt chỉ có một cách phát âm.\n\nS1 dùng tín hiệu cảm xúc và cách thể hiện trong ngoặc tròn, chẳng hạn (angry), (sad), (in a hurry) hoặc (chuckling). Đặt tín hiệu trước câu hoặc cụm lời cần tác động, với lời nói thực tế ở sau. Cách thể hiện áp dụng cho văn bản theo sau, nên thay đổi cảm xúc cần xuất hiện tại nơi phần thể hiện cần đổi. Đây là cú pháp khác với chỉ dẫn ngoặc vuông của S2; giữ kịch bản được viết cho thế hệ đã chọn thay vì coi hai dạng đánh dấu là có thể thay thế cho nhau.\n\nCó thể chọn giọng qua mã định danh giọng đã lưu hoặc điều kiện hóa từ bản ghi tham chiếu cùng văn bản chép lời của nó. Với quy trình tham chiếu tức thì, hướng dẫn giọng nói chung khuyến nghị mẫu sạch dài 10–30 giây. Chọn mẫu có phong cách nói và chất lượng ghi âm phù hợp với kết quả dự kiến, đồng thời bảo đảm văn bản khớp các từ trong mẫu. Với người dẫn xuất hiện nhiều lần, dùng lại cùng mẫu giọng qua các đoạn để đổi chủ đề không vô tình trở thành đổi nhân vật.\n\nBản phát hành S1 nêu tiếng Anh, Trung, Nhật, Đức, Pháp, Tây Ban Nha, Hàn, Ả Rập, Nga, Hà Lan, Ý, Ba Lan và Bồ Đào Nha trong số các ngôn ngữ được hỗ trợ, đồng thời mô tả trộn ngôn ngữ trong một kịch bản. Cung cấp câu chữ bằng ngôn ngữ đích thay vì xem tổng hợp giọng nói là bước dịch. Với đoạn có tên mượn từ ngôn ngữ khác hoặc điểm chuyển ngôn ngữ, giữ cách viết và ngữ cảnh câu xung quanh rõ ràng, rồi kiểm tra cách giọng đã chọn xử lý điểm chuyển đó.\n\nGiao diện của nhà sản xuất S1 hỗ trợ một người nói mỗi yêu cầu tổng hợp. Có thể soạn đối thoại thành các đoạn riêng với mẫu giọng tham chiếu tương ứng, rồi để ứng dụng ghép lại; tổng hợp nhiều người nói tích hợp của họ S2 là khả năng riêng. Giữ vai trò, giọng và văn bản gắn với từng đoạn khi soạn câu thoại nhân vật. Kết quả tổng hợp là phần thể hiện kịch bản bằng âm thanh, còn căn thời gian trao đổi hoặc kết hợp với nhạc và video là bước chỉnh sửa sau đó.\n\nTùy chọn đầu ra gồm MP3, WAV, PCM thô và Opus, với MP3 làm mặc định. Đầu ra được công bố là mono; WAV và PCM dùng mẫu 16 bit, và lựa chọn tần số lấy mẫu khác nhau theo định dạng. MP3 hỗ trợ 64, 128 và 192 kbps, còn Opus dùng 48 kHz. Có thể điều chỉnh tốc độ từ 0.5 đến 2.0 cùng các điều khiển âm lượng. Chọn tệp đã mã hóa cho sản phẩm thuyết minh hoặc luồng phù hợp để phát, rồi giữ giọng đã chọn và kịch bản cùng kết quả.\n\nNhà sản xuất xử lý văn bản dài theo đoạn, với khoảng độ dài đoạn 100–300 được công bố và ngân sách token âm thanh mỗi đoạn thay vì thời lượng ghi âm tổng thể được bảo đảm. Chuẩn hóa văn bản có thể chuyển số tiếng Anh và Trung thành cách đọc tự nhiên, còn mức phạt lặp lại của S1 có thể giảm mẫu âm thanh lặp. Chuẩn hóa độ lớn âm thanh đầu ra là thiết lập khác và không có tác dụng với S1. Kiểm tra phát âm, ranh giới cụm lời, âm lặp và chuyển biến cảm xúc dự kiến trước khi ghép đoạn hoàn chỉnh, rồi sửa đúng câu hoặc mẫu tham chiếu cần chú ý.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6cde3dda3274b3c51a0af1937e842279ad506966db03e9717a058682c5ab60b6",
    "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\">•</span><h2 id=\"sheet-title\">Fish Audio: S1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/s1</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|fish-audio%2Fs1\">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\">Fish Audio S1 biến kịch bản đa ngôn ngữ thành âm thanh giàu biểu cảm của một người nói bằng mẫu giọng tham chiếu và tín hiệu cảm xúc trong ngoặc tròn. Dùng cho lời dẫn, chỉ dẫn ngắn bằng lời hoặc câu thoại nhân vật, với điều khiển định dạng và ngữ điệu cho âm thanh hoàn chỉnh.</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>S1 là mô hình chuyển văn bản thành giọng nói thế hệ trước của Fish Audio cho lời dẫn giàu biểu cảm và đầu ra giọng của một người nói. Mô hình đọc kịch bản được cung cấp và trả về âm thanh, dùng giọng đã chọn hoặc giọng được điều kiện hóa theo mẫu tham chiếu. Mô hình S1 đầy đủ tách biệt với S1-mini, mô hình chưng cất nhỏ hơn; nhà sản xuất giới thiệu chúng lần lượt là các biến thể 4 tỷ và 0,5 tỷ tham số. Hồ sơ này bao quát mô hình có tên S1.</p><p>Với lời dẫn, soạn các từ thực sự cần được đọc và đánh dấu nơi cách thể hiện nên thay đổi. Kịch bản giải thích hữu ích nêu ý chính trước, phát triển từng ý một và dùng dấu câu tách các cụm lời cần khoảng nghỉ tự nhiên. Với chỉ dẫn ngắn, giữ câu chữ rõ khi nghe mà không có màn hình. Giữ cách đọc dự kiến của tên, chữ viết tắt và đơn vị, đồng thời kiểm tra số trong đầu ra lời nói thay vì cho rằng chuỗi dễ đọc bằng mắt chỉ có một cách phát âm.</p><p>S1 dùng tín hiệu cảm xúc và cách thể hiện trong ngoặc tròn, chẳng hạn (angry), (sad), (in a hurry) hoặc (chuckling). Đặt tín hiệu trước câu hoặc cụm lời cần tác động, với lời nói thực tế ở sau. Cách thể hiện áp dụng cho văn bản theo sau, nên thay đổi cảm xúc cần xuất hiện tại nơi phần thể hiện cần đổi. Đây là cú pháp khác với chỉ dẫn ngoặc vuông của S2; giữ kịch bản được viết cho thế hệ đã chọn thay vì coi hai dạng đánh dấu là có thể thay thế cho nhau.</p><p>Có thể chọn giọng qua mã định danh giọng đã lưu hoặc điều kiện hóa từ bản ghi tham chiếu cùng văn bản chép lời của nó. Với quy trình tham chiếu tức thì, hướng dẫn giọng nói chung khuyến nghị mẫu sạch dài 10–30 giây. Chọn mẫu có phong cách nói và chất lượng ghi âm phù hợp với kết quả dự kiến, đồng thời bảo đảm văn bản khớp các từ trong mẫu. Với người dẫn xuất hiện nhiều lần, dùng lại cùng mẫu giọng qua các đoạn để đổi chủ đề không vô tình trở thành đổi nhân vật.</p><p>Bản phát hành S1 nêu tiếng Anh, Trung, Nhật, Đức, Pháp, Tây Ban Nha, Hàn, Ả Rập, Nga, Hà Lan, Ý, Ba Lan và Bồ Đào Nha trong số các ngôn ngữ được hỗ trợ, đồng thời mô tả trộn ngôn ngữ trong một kịch bản. Cung cấp câu chữ bằng ngôn ngữ đích thay vì xem tổng hợp giọng nói là bước dịch. Với đoạn có tên mượn từ ngôn ngữ khác hoặc điểm chuyển ngôn ngữ, giữ cách viết và ngữ cảnh câu xung quanh rõ ràng, rồi kiểm tra cách giọng đã chọn xử lý điểm chuyển đó.</p><p>Giao diện của nhà sản xuất S1 hỗ trợ một người nói mỗi yêu cầu tổng hợp. Có thể soạn đối thoại thành các đoạn riêng với mẫu giọng tham chiếu tương ứng, rồi để ứng dụng ghép lại; tổng hợp nhiều người nói tích hợp của họ S2 là khả năng riêng. Giữ vai trò, giọng và văn bản gắn với từng đoạn khi soạn câu thoại nhân vật. Kết quả tổng hợp là phần thể hiện kịch bản bằng âm thanh, còn căn thời gian trao đổi hoặc kết hợp với nhạc và video là bước chỉnh sửa sau đó.</p><p>Tùy chọn đầu ra gồm MP3, WAV, PCM thô và Opus, với MP3 làm mặc định. Đầu ra được công bố là mono; WAV và PCM dùng mẫu 16 bit, và lựa chọn tần số lấy mẫu khác nhau theo định dạng. MP3 hỗ trợ 64, 128 và 192 kbps, còn Opus dùng 48 kHz. Có thể điều chỉnh tốc độ từ 0.5 đến 2.0 cùng các điều khiển âm lượng. Chọn tệp đã mã hóa cho sản phẩm thuyết minh hoặc luồng phù hợp để phát, rồi giữ giọng đã chọn và kịch bản cùng kết quả.</p><p>Nhà sản xuất xử lý văn bản dài theo đoạn, với khoảng độ dài đoạn 100–300 được công bố và ngân sách token âm thanh mỗi đoạn thay vì thời lượng ghi âm tổng thể được bảo đảm. Chuẩn hóa văn bản có thể chuyển số tiếng Anh và Trung thành cách đọc tự nhiên, còn mức phạt lặp lại của S1 có thể giảm mẫu âm thanh lặp. Chuẩn hóa độ lớn âm thanh đầu ra là thiết lập khác và không có tác dụng với S1. Kiểm tra phát âm, ranh giới cụm lời, âm lặp và chuyển biến cảm xúc dự kiến trước khi ghép đoạn hoàn chỉnh, rồi sửa đúng câu hoặc mẫu tham chiếu cần chú ý.</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 · Tổng hợp giọng nói</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>text</code></dd></div><div><dt>Đầu ra</dt><dd><code>audio</code></dd></div><div><dt>Định dạng đầu ra</dt><dd>âm thanh nhị phân thực tế theo khai báo</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Trường</th><th>Loại</th><th>Yêu cầu</th><th>Giá trị &amp; giới hạn</th><th>Mặc định</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>fish-audio/s1</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Độ dài tối thiểu: 1</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"saved_exact_supplier_example\"><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>Ví dụ: b347db033a6549378b48d00acb0d06cd</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">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></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Tổ hợp tư liệu đầu vào</summary><p class=\"note-s\"><b>text_to_speech</b> · Bắt buộc: actual UTF-8 script, exact supported voice</p></details><details class=\"note-s\" data-method-contract><summary>Tham số phương thức và vòng đời</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Tham số</th><th>Hợp đồng</th></tr></thead><tbody><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>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><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>voice_ids</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>b347db033a6549378b48d00acb0d06cd</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>voice_list_exhaustive</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>false</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>response_format</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>mp3, pcm</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>default_response_format</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>pcm</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>quantity</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>Các byte UTF-8 của một chuỗi đầu vào duy nhất đã được giải mã; không cắt khoảng trắng ở hai đầu hoặc chuẩn hóa</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>native_byte_quote_controls</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>Đường dẫn báo giá theo byte chính xác này từ chối instructions không rỗng và đầu vào lượt nói nhiều người cho đến khi văn bản tính phí bổ sung được khai báo.</td></tr></tbody></table></div><p>Vòng đời: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Dùng mô hình chính xác và các trường đầu vào theo tài liệu.</p><p class=\"note-s\">Giữ lại toàn bộ phản hồi, mọi đầu ra thực tế và các ID gốc được trả về.</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>Ultra</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>mỗi byte utf8 của âm thanh đầu vào</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Byte utf8 của âm thanh đầu vào</span> <b>$0.00003</b> <span class=\"price-unit\">mỗi byte utf8 của âm thanh đầu vào</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><div data-declared-reference-pricing><h4>Chi tiết giá cước tham chiếu</h4><p class=\"note-s\">Biểu tham chiếu cấp mô hình không thay đổi việc chọn phương thức, báo giá hoặc khoản phí. Khoản phí đang áp dụng dùng mức phí phương thức Ailoot đã chọn.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Fish Audio: S1</summary><h4>Giá theo cấu hình</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Cấu hình</th><th>Điều kiện 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>Fish Audio: S1 · Cấu hình mặc định</th><td data-cell-label=\"Điều kiện tính phí\"><span class=\"card-cell-label\">Điều kiện tính phí</span>Cấu hình mặc định</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Byte UTF-8 đầu vào</span> <b>0,00003 US$</b> <span class=\"price-unit\">mỗi byte UTF-8 đầu vào</span></div></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot Ultra · Tổng hợp giọng nói</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-1354-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1354-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · nội dung yêu cầu nguyên bản chính xác và 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-1354-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1354-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/s1&#39;, &#39;input&#39;: &#39;Hello world&#39;, &#39;voice&#39;: &#39;b347db033a6549378b48d00acb0d06cd&#39;, &#39;response_format&#39;: &#39;mp3&#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# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\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 · Tổng hợp giọng nói</h4><p class=\"note-s\">âm thanh nhị phân thực tế theo khai báo</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Lưu tất cả kết quả đã hoàn tất</h5><p class=\"note-s\">Lưu mọi phản hồi hoàn chỉnh, tệp và phần nội dung được trả về.</p><p class=\"note-s\">Lưu toàn bộ byte nhị phân và tất cả tiêu đề gốc; giữ lại toàn bộ JSON nếu được trả về. Giữ nguyên các ID thao tác/tài sản thực tế.</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ữ nguyên operation_id/X-Client-Request-ID và phản hồi ban đầu. Đọc các bản ghi tác vụ/tài sản thực tế thuộc quyền sở hữu mà không gửi lại; không dựng URL thăm dò âm thanh riêng.</p></div><details class=\"card-about\" data-output-fields><summary>Trường phản hồi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Trường</th><th>Loại</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>bytes</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>headers</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Bí danh</h3><h4>Bí danh mô hình</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</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=fish-audio%2Fs1&amp;route=Ultra&amp;caller=fish-audio%2Fs1&amp;fmt=speech\"><code>fish-audio/s1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/s1",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fs1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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ữ nguyên operation_id/X-Client-Request-ID và phản hồi ban đầu. Đọc các bản ghi tác vụ/tài sản thực tế thuộc quyền sở hữu mà không gửi lại; không dựng URL thăm dò âm thanh riêng."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "Lưu toàn bộ byte nhị phân và tất cả tiêu đề gốc; giữ lại toàn bộ JSON nếu được trả về. Giữ nguyên các ID thao tác/tài sản thực tế.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "âm thanh nhị phân thực tế theo khai báo"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Dùng mô hình chính xác và các trường đầu vào theo tài liệu.",
            "Giữ lại toàn bộ phản hồi, mọi đầu ra thực tế và các ID gốc được trả về."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "Đường dẫn báo giá theo byte chính xác này từ chối instructions không rỗng và đầu vào lượt nói nhiều người cho đến khi văn bản tính phí bổ sung được khai báo.",
            "quantity": "Các byte UTF-8 của một chuỗi đầu vào duy nhất đã được giải mã; không cắt khoảng trắng ở hai đầu hoặc chuẩn hóa",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\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# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
            "audio_input_utf8_byte": 3e-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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/s1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "ed741b02dc394603db9cb3fe08b4e27c6e487cbef8176b8000729aeb339109e1",
    "input_html_sha256": "17a7bb00a90175c6de1ca93f58453357ae2759c0b06a30cc1b49f9299ada3dd2",
    "private_audit_sha256": "91ab2573a8f2f452a71627a065e511fc47bd0663c0aa37e932681d23a75cbaba",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/fish-audio-s1/",
    "description": "Fish Audio S1 biến kịch bản đa ngôn ngữ thành âm thanh giàu biểu cảm của một người nói bằng mẫu giọng tham chiếu và tín hiệu cảm xúc trong ngoặc tròn. Dùng cho lời dẫn, chỉ dẫn ngắn bằng lời hoặc câu thoại nhân vật, với điều khiển định dạng và ngữ điệu cho âm thanh hoàn chỉnh.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/fish-audio-s1/index.md",
    "title": "Fish Audio: S1 — Ailoot",
    "url": "https://ailoot.ai/models/vi/fish-audio-s1/"
  },
  "rawModel": {
    "about": "S1 là mô hình chuyển văn bản thành giọng nói thế hệ trước của Fish Audio cho lời dẫn giàu biểu cảm và đầu ra giọng của một người nói. Mô hình đọc kịch bản được cung cấp và trả về âm thanh, dùng giọng đã chọn hoặc giọng được điều kiện hóa theo mẫu tham chiếu. Mô hình S1 đầy đủ tách biệt với S1-mini, mô hình chưng cất nhỏ hơn; nhà sản xuất giới thiệu chúng lần lượt là các biến thể 4 tỷ và 0,5 tỷ tham số. Hồ sơ này bao quát mô hình có tên S1.\n\nVới lời dẫn, soạn các từ thực sự cần được đọc và đánh dấu nơi cách thể hiện nên thay đổi. Kịch bản giải thích hữu ích nêu ý chính trước, phát triển từng ý một và dùng dấu câu tách các cụm lời cần khoảng nghỉ tự nhiên. Với chỉ dẫn ngắn, giữ câu chữ rõ khi nghe mà không có màn hình. Giữ cách đọc dự kiến của tên, chữ viết tắt và đơn vị, đồng thời kiểm tra số trong đầu ra lời nói thay vì cho rằng chuỗi dễ đọc bằng mắt chỉ có một cách phát âm.\n\nS1 dùng tín hiệu cảm xúc và cách thể hiện trong ngoặc tròn, chẳng hạn (angry), (sad), (in a hurry) hoặc (chuckling). Đặt tín hiệu trước câu hoặc cụm lời cần tác động, với lời nói thực tế ở sau. Cách thể hiện áp dụng cho văn bản theo sau, nên thay đổi cảm xúc cần xuất hiện tại nơi phần thể hiện cần đổi. Đây là cú pháp khác với chỉ dẫn ngoặc vuông của S2; giữ kịch bản được viết cho thế hệ đã chọn thay vì coi hai dạng đánh dấu là có thể thay thế cho nhau.\n\nCó thể chọn giọng qua mã định danh giọng đã lưu hoặc điều kiện hóa từ bản ghi tham chiếu cùng văn bản chép lời của nó. Với quy trình tham chiếu tức thì, hướng dẫn giọng nói chung khuyến nghị mẫu sạch dài 10–30 giây. Chọn mẫu có phong cách nói và chất lượng ghi âm phù hợp với kết quả dự kiến, đồng thời bảo đảm văn bản khớp các từ trong mẫu. Với người dẫn xuất hiện nhiều lần, dùng lại cùng mẫu giọng qua các đoạn để đổi chủ đề không vô tình trở thành đổi nhân vật.\n\nBản phát hành S1 nêu tiếng Anh, Trung, Nhật, Đức, Pháp, Tây Ban Nha, Hàn, Ả Rập, Nga, Hà Lan, Ý, Ba Lan và Bồ Đào Nha trong số các ngôn ngữ được hỗ trợ, đồng thời mô tả trộn ngôn ngữ trong một kịch bản. Cung cấp câu chữ bằng ngôn ngữ đích thay vì xem tổng hợp giọng nói là bước dịch. Với đoạn có tên mượn từ ngôn ngữ khác hoặc điểm chuyển ngôn ngữ, giữ cách viết và ngữ cảnh câu xung quanh rõ ràng, rồi kiểm tra cách giọng đã chọn xử lý điểm chuyển đó.\n\nGiao diện của nhà sản xuất S1 hỗ trợ một người nói mỗi yêu cầu tổng hợp. Có thể soạn đối thoại thành các đoạn riêng với mẫu giọng tham chiếu tương ứng, rồi để ứng dụng ghép lại; tổng hợp nhiều người nói tích hợp của họ S2 là khả năng riêng. Giữ vai trò, giọng và văn bản gắn với từng đoạn khi soạn câu thoại nhân vật. Kết quả tổng hợp là phần thể hiện kịch bản bằng âm thanh, còn căn thời gian trao đổi hoặc kết hợp với nhạc và video là bước chỉnh sửa sau đó.\n\nTùy chọn đầu ra gồm MP3, WAV, PCM thô và Opus, với MP3 làm mặc định. Đầu ra được công bố là mono; WAV và PCM dùng mẫu 16 bit, và lựa chọn tần số lấy mẫu khác nhau theo định dạng. MP3 hỗ trợ 64, 128 và 192 kbps, còn Opus dùng 48 kHz. Có thể điều chỉnh tốc độ từ 0.5 đến 2.0 cùng các điều khiển âm lượng. Chọn tệp đã mã hóa cho sản phẩm thuyết minh hoặc luồng phù hợp để phát, rồi giữ giọng đã chọn và kịch bản cùng kết quả.\n\nNhà sản xuất xử lý văn bản dài theo đoạn, với khoảng độ dài đoạn 100–300 được công bố và ngân sách token âm thanh mỗi đoạn thay vì thời lượng ghi âm tổng thể được bảo đảm. Chuẩn hóa văn bản có thể chuyển số tiếng Anh và Trung thành cách đọc tự nhiên, còn mức phạt lặp lại của S1 có thể giảm mẫu âm thanh lặp. Chuẩn hóa độ lớn âm thanh đầu ra là thiết lập khác và không có tác dụng với S1. Kiểm tra phát âm, ranh giới cụm lời, âm lặp và chuyển biến cảm xúc dự kiến trước khi ghép đoạn hoàn chỉnh, rồi sửa đúng câu hoặc mẫu tham chiếu cần chú ý.",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "available": null,
    "canonical_model": "fish-audio/s1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "Giá theo cấu hình được trình bày đầy đủ trong phần chi tiết."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "ca1892881aa6bc927745",
        "label": "Fish Audio: S1",
        "profiles": [
          {
            "basis": "",
            "dimensions": {
              "conditions": "Cấu hình mặc định"
            },
            "label": "Fish Audio: S1 · Cấu hình mặc định",
            "units": [
              {
                "amount": "0.000030",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "key": "e7b3eb5a7636763feb8a9472",
                "label": "Input UTF-8 bytes",
                "public_unit_label": "per input UTF-8 byte",
                "quantity": "1",
                "rate_role": "declared_tariff_rate",
                "side": "in",
                "unit": "input_utf8_byte"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "fish-audio/s1",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save all complete binary bytes and all original headers; keep full JSON if returned. Actual operation/asset IDs are preserved.",
            "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ữ nguyên operation_id/X-Client-Request-ID và phản hồi ban đầu. Đọc các bản ghi tác vụ/tài sản thực tế thuộc quyền sở hữu mà không gửi lại; không dựng URL thăm dò âm thanh riêng."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "actual UTF-8 script",
                  "exact supported voice"
                ]
              }
            ],
            "outputs": {
              "all_results": "Lưu toàn bộ byte nhị phân và tất cả tiêu đề gốc; giữ lại toàn bộ JSON nếu được trả về. Giữ nguyên các ID thao tác/tài sản thực tế.",
              "family": "audio",
              "fields": [
                {
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "âm thanh nhị phân thực tế theo khai báo"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "enum": [
                  "fish-audio/s1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "min_length": 1,
                "name": "input",
                "quantity_unit": "decoded input UTF-8 bytes",
                "required": true,
                "type": "string"
              },
              {
                "availability": "saved_exact_supplier_example",
                "enum": [
                  "b347db033a6549378b48d00acb0d06cd"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/s1"
                  ],
                  "type": "string"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "Hello world",
                "model": "fish-audio/s1",
                "response_format": "mp3",
                "voice": "b347db033a6549378b48d00acb0d06cd"
              },
              "content_type": "application/json"
            }
          },
          "hints": [
            "Dùng mô hình chính xác và các trường đầu vào theo tài liệu.",
            "Giữ lại toàn bộ phản hồi, mọi đầu ra thực tế và các ID gốc được trả về."
          ],
          "input": {
            "content_type": "application/json",
            "default_response_format": "pcm",
            "material_types": [
              "text"
            ],
            "native_byte_quote_controls": "Đường dẫn báo giá theo byte chính xác này từ chối instructions không rỗng và đầu vào lượt nói nhiều người cho đến khi văn bản tính phí bổ sung được khai báo.",
            "quantity": "Các byte UTF-8 của một chuỗi đầu vào duy nhất đã được giải mã; không cắt khoảng trắng ở hai đầu hoặc chuẩn hóa",
            "required": [
              "model",
              "input",
              "voice"
            ],
            "response_format": [
              "mp3",
              "pcm"
            ],
            "voice_ids": [
              "b347db033a6549378b48d00acb0d06cd"
            ],
            "voice_list_exhaustive": false
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID and original response. Read actual owned task/asset records without resubmitting; no dedicated audio poll URL is constructed."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "all_results": true,
            "family": "audio",
            "format": "actual MP3 or PCM bytes and MIME",
            "response": "complete raw audio bytes plus response headers"
          }
        },
        "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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/s1', 'input': 'Hello world', 'voice': 'b347db033a6549378b48d00acb0d06cd', 'response_format': 'mp3'}\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# Keep the complete original response and headers. Read every returned segment, word and usage field.\n# Preserve actual operation/task/asset IDs; continue reads of the original result without resubmitting.\n",
            "label": "curl · exact native body and complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact model and documented input fields.",
          "Keep the complete response, every actual output and original returned IDs."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "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": {
            "audio_input_utf8_byte": 3e-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": {
              "quantity_basis": "actual physical units",
              "quoted_unit": "per audio input utf8 byte"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.00003",
                "amount_unit": "usd_per_audio_input_utf8_byte",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "audio input utf8 byte",
                "native_amount_usd_per_unit": "0.00003",
                "native_quantity": 1,
                "public_unit_label": "per audio input utf8 byte",
                "quantity": "1",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "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.00003",
            "amount_unit": "usd_per_audio_input_utf8_byte",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "audio input utf8 byte",
            "native_amount_usd_per_unit": "0.00003",
            "native_quantity": 1,
            "public_unit_label": "per audio input utf8 byte",
            "quantity": "1",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/s1",
        "request_model_id": "fish-audio/s1",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: S1",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "not_character_or_token_count": true,
          "quoted_unit": "1000000_UTF8_bytes",
          "retirement_date": "2026-12-31"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000030",
            "amount_unit": "usd_per_input_utf8_byte",
            "conditions": {
              "not_character_or_token_count": true,
              "quoted_unit": "1000000_UTF8_bytes",
              "retirement_date": "2026-12-31"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_utf8_byte"
          }
        ]
      }
    ],
    "public_id": "fish-audio/s1",
    "short": "Fish Audio S1 biến kịch bản đa ngôn ngữ thành âm thanh giàu biểu cảm của một người nói bằng mẫu giọng tham chiếu và tín hiệu cảm xúc trong ngoặc tròn. Dùng cho lời dẫn, chỉ dẫn ngắn bằng lời hoặc câu thoại nhân vật, với điều khiển định dạng và ngữ điệu cho âm thanh hoàn chỉnh."
  },
  "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": "Fish Audio S1 biến kịch bản đa ngôn ngữ thành âm thanh giàu biểu cảm của một người nói bằng mẫu giọng tham chiếu và tín hiệu cảm xúc trong ngoặc tròn. Dùng cho lời dẫn, chỉ dẫn ngắn bằng lời hoặc câu thoại nhân vật, với điều khiển định dạng và ngữ điệu cho âm thanh hoàn chỉnh.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "cd71ea23ebbaedea9535024a65a517cf81e3ea48ca8eb0fbaa87bb7ffc11c990",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "698adce08ba997c23f1a06c4ab8f31376bafe63ceccf7edf2969bc9cbbe5f437"
}
