{
  "aboutHtml": "<h4>Giọng tự nhiên cho tương tác</h4><p>Speech 2.6 HD dành cho tổng hợp giọng nói tự nhiên và các kịch bản cần bắt đầu trả lời nhanh. Nhà sản xuất chú trọng ngữ điệu, độ trôi chảy và xử lý văn bản trước khi đọc. Biến thể HD nhấn mạnh chất lượng âm thanh; đầu vào thẻ này là văn bản, đầu ra là âm thanh lời nói.</p><h4>Đọc cách ghi không thông thường</h4><p>Thế hệ Speech 2.6 xử lý được các dạng ghi thường gặp trong thông báo công việc: địa chỉ trang, email, số điện thoại, ngày tháng và số tiền. Mô hình chuyển chúng thành dạng có thể đọc để người nghe hiểu lượt lời. Nhà sản xuất mô tả các tác vụ này trên nhiều ngôn ngữ.</p><h4>Lời nói trôi chảy, giữ âm sắc</h4><p>Speech 2.6 có chế độ tăng độ trôi chảy Fluent LoRA. Chế độ dành cho tổng hợp dựa trên giọng đã chuẩn bị: giúp giữ âm sắc đồng thời tạo lời nói liền mạch hơn, ngay cả khi mẫu nguồn chưa đều hoặc có giọng vùng miền. Chuẩn bị giọng nhân bản và sử dụng giọng đó khi đọc là hai hành động khác nhau.</p><p>Mô hình hỗ trợ <strong>40 ngôn ngữ</strong>, gồm tiếng Nga. Ngoài bảy trạng thái cảm xúc cơ bản, Speech 2.6 có các lựa chọn nói trôi chảy <code>fluent</code> và thì thầm <code>whisper</code>. Nếu không đặt cảm xúc, mô hình chọn theo ý nghĩa văn bản.</p><h4>Cài đặt cách đọc</h4><p>MiniMax cho phép chọn giọng và điều khiển tốc độ, âm lượng, cao độ. Tốc độ được đặt trong khoảng <strong>0,5–2</strong>, âm lượng lớn hơn 0 và tối đa <strong>10</strong>, thay đổi cao độ từ <strong>−12 đến 12</strong>. Có thể để mô hình chọn cảm xúc theo ý nghĩa văn bản hoặc chỉ định thủ công: vui, buồn, giận dữ, sợ hãi, ghê tởm, ngạc nhiên hoặc bình tĩnh.</p><p>Có thể làm rõ phát âm bằng từ điển thay thế và ký hiệu phiên âm; mô hình cung cấp bảng phiên âm quốc tế, bính âm tiếng Trung và các cách đọc tiếng Nhật. Khoảng dừng được đặt giữa các đoạn lời trong phạm vi <strong>0,01–99,99 giây</strong>. Thời lượng khoảng dừng có độ chính xác đến hai chữ số sau dấu phẩy; dấu được đặt giữa các đoạn lời và không đặt liên tiếp. Những cài đặt này cho phép điều chỉnh cách đọc tên, từ viết tắt và từ có nhiều cách hiểu theo ý đồ giọng đọc.</p><h4>Độ dài văn bản và âm thanh</h4><p>Tổng hợp nhận văn bản ít hơn <strong>10 000 ký tự</strong>. Với văn bản dài hơn 3000 ký tự, nhà sản xuất khuyến nghị đầu ra truyền luồng; cũng có thể nhận toàn bộ âm thanh hoàn chỉnh. Cài đặt tổng hợp chung gồm MP3, PCM, FLAC, WAV, Opus và các biến thể G.711 μ-law, mono hoặc stereo; tập định dạng sẵn có cho từng yêu cầu cụ thể được xác định bằng công cụ Ailoot.</p><p>Theo MiniMax, thế hệ này hướng tới độ trễ thấp trong các kịch bản giọng nói. Đây là mô tả mô hình; thời gian của từng câu trả lời và khả năng sử dụng cài đặt mở rộng phụ thuộc vào cách truy cập Ailoot đã chọn.</p><p>Cài đặt âm thanh bổ sung gồm các tần số lấy mẫu <strong>8, 16, 22,05, 24, 32 và 44,1 kHz</strong>. MP3 có các mức bitrate <strong>32, 64, 128 hoặc 256 kbit/s</strong>. Có thể thay đổi màu giọng và áp dụng một hiệu ứng: tiếng vang không gian rộng, tiếng vang hội trường, âm thanh điện thoại hoặc giọng robot. Hiệu ứng thay đổi giọng được hỗ trợ cho MP3, WAV và FLAC khi nhận toàn bộ âm thanh, còn với đầu ra truyền luồng chỉ hỗ trợ MP3. Các định dạng G.711 μ-law sử dụng tần số 8 kHz. Những khả năng này thuộc cài đặt tổng hợp của MiniMax.</p><p>Nhà sản xuất cung cấp đồng bộ lời nói với văn bản: dấu thời gian theo câu, theo từ hoặc theo từ khi xuất dần. Kết quả này giúp kết hợp lời đọc với việc hiển thị văn bản. Khả năng bổ sung này cần hỗ trợ định dạng câu trả lời tương ứng.</p>",
  "aboutText": "### Giọng tự nhiên cho tương tác\n\nSpeech 2.6 HD dành cho tổng hợp giọng nói tự nhiên và các kịch bản cần bắt đầu trả lời nhanh. Nhà sản xuất chú trọng ngữ điệu, độ trôi chảy và xử lý văn bản trước khi đọc. Biến thể HD nhấn mạnh chất lượng âm thanh; đầu vào thẻ này là văn bản, đầu ra là âm thanh lời nói.\n\n### Đọc cách ghi không thông thường\n\nThế hệ Speech 2.6 xử lý được các dạng ghi thường gặp trong thông báo công việc: địa chỉ trang, email, số điện thoại, ngày tháng và số tiền. Mô hình chuyển chúng thành dạng có thể đọc để người nghe hiểu lượt lời. Nhà sản xuất mô tả các tác vụ này trên nhiều ngôn ngữ.\n\n### Lời nói trôi chảy, giữ âm sắc\n\nSpeech 2.6 có chế độ tăng độ trôi chảy Fluent LoRA. Chế độ dành cho tổng hợp dựa trên giọng đã chuẩn bị: giúp giữ âm sắc đồng thời tạo lời nói liền mạch hơn, ngay cả khi mẫu nguồn chưa đều hoặc có giọng vùng miền. Chuẩn bị giọng nhân bản và sử dụng giọng đó khi đọc là hai hành động khác nhau.\n\nMô hình hỗ trợ **40 ngôn ngữ**, gồm tiếng Nga. Ngoài bảy trạng thái cảm xúc cơ bản, Speech 2.6 có các lựa chọn nói trôi chảy `fluent` và thì thầm `whisper`. Nếu không đặt cảm xúc, mô hình chọn theo ý nghĩa văn bản.\n\n### Cài đặt cách đọc\n\nMiniMax cho phép chọn giọng và điều khiển tốc độ, âm lượng, cao độ. Tốc độ được đặt trong khoảng **0,5–2**, âm lượng lớn hơn 0 và tối đa **10**, thay đổi cao độ từ **−12 đến 12**. Có thể để mô hình chọn cảm xúc theo ý nghĩa văn bản hoặc chỉ định thủ công: vui, buồn, giận dữ, sợ hãi, ghê tởm, ngạc nhiên hoặc bình tĩnh.\n\nCó thể làm rõ phát âm bằng từ điển thay thế và ký hiệu phiên âm; mô hình cung cấp bảng phiên âm quốc tế, bính âm tiếng Trung và các cách đọc tiếng Nhật. Khoảng dừng được đặt giữa các đoạn lời trong phạm vi **0,01–99,99 giây**. Thời lượng khoảng dừng có độ chính xác đến hai chữ số sau dấu phẩy; dấu được đặt giữa các đoạn lời và không đặt liên tiếp. Những cài đặt này cho phép điều chỉnh cách đọc tên, từ viết tắt và từ có nhiều cách hiểu theo ý đồ giọng đọc.\n\n### Độ dài văn bản và âm thanh\n\nTổng hợp nhận văn bản ít hơn **10 000 ký tự**. Với văn bản dài hơn 3000 ký tự, nhà sản xuất khuyến nghị đầu ra truyền luồng; cũng có thể nhận toàn bộ âm thanh hoàn chỉnh. Cài đặt tổng hợp chung gồm MP3, PCM, FLAC, WAV, Opus và các biến thể G.711 μ-law, mono hoặc stereo; tập định dạng sẵn có cho từng yêu cầu cụ thể được xác định bằng công cụ Ailoot.\n\nTheo MiniMax, thế hệ này hướng tới độ trễ thấp trong các kịch bản giọng nói. Đây là mô tả mô hình; thời gian của từng câu trả lời và khả năng sử dụng cài đặt mở rộng phụ thuộc vào cách truy cập Ailoot đã chọn.\n\nCài đặt âm thanh bổ sung gồm các tần số lấy mẫu **8, 16, 22,05, 24, 32 và 44,1 kHz**. MP3 có các mức bitrate **32, 64, 128 hoặc 256 kbit/s**. Có thể thay đổi màu giọng và áp dụng một hiệu ứng: tiếng vang không gian rộng, tiếng vang hội trường, âm thanh điện thoại hoặc giọng robot. Hiệu ứng thay đổi giọng được hỗ trợ cho MP3, WAV và FLAC khi nhận toàn bộ âm thanh, còn với đầu ra truyền luồng chỉ hỗ trợ MP3. Các định dạng G.711 μ-law sử dụng tần số 8 kHz. Những khả năng này thuộc cài đặt tổng hợp của MiniMax.\n\nNhà sản xuất cung cấp đồng bộ lời nói với văn bản: dấu thời gian theo câu, theo từ hoặc theo từ khi xuất dần. Kết quả này giúp kết hợp lời đọc với việc hiển thị văn bản. Khả năng bổ sung này cần hỗ trợ định dạng câu trả lời tương ứng.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "562273b1fc86dd067ebd01a5bd81931a00d10263f15dc3c6118b113b652660e9",
    "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\">MM</span><h2 id=\"sheet-title\">speech-2.6-hd</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>MiniMax /</span><code>speech-2.6-hd</code><button type=\"button\" id=\"copy-id\">Sao chép ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Các phần của thẻ mô hình\"><button type=\"button\" data-card-jump=\"overview\">Bắt đầu</button><button type=\"button\" data-card-jump=\"methods\">Đầu vào &amp; phương thức</button><button type=\"button\" data-card-jump=\"pricing\">Bảng giá</button><button type=\"button\" data-card-jump=\"examples\">Ví dụ</button><button type=\"button\" data-card-jump=\"results\">Kết quả</button><button type=\"button\" data-card-jump=\"aliases\">Bí danh</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Phương thức API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|speech|/v1/audio/speech|speech-2.6-hd\">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\">Speech 2.6 HD là mô hình tổng hợp giọng nói chất lượng cao, chú trọng sự tự nhiên và độ giống 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>speech</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\"><h4>Giọng tự nhiên cho tương tác</h4><p>Speech 2.6 HD dành cho tổng hợp giọng nói tự nhiên và các kịch bản cần bắt đầu trả lời nhanh. Nhà sản xuất chú trọng ngữ điệu, độ trôi chảy và xử lý văn bản trước khi đọc. Biến thể HD nhấn mạnh chất lượng âm thanh; đầu vào thẻ này là văn bản, đầu ra là âm thanh lời nói.</p><h4>Đọc cách ghi không thông thường</h4><p>Thế hệ Speech 2.6 xử lý được các dạng ghi thường gặp trong thông báo công việc: địa chỉ trang, email, số điện thoại, ngày tháng và số tiền. Mô hình chuyển chúng thành dạng có thể đọc để người nghe hiểu lượt lời. Nhà sản xuất mô tả các tác vụ này trên nhiều ngôn ngữ.</p><h4>Lời nói trôi chảy, giữ âm sắc</h4><p>Speech 2.6 có chế độ tăng độ trôi chảy Fluent LoRA. Chế độ dành cho tổng hợp dựa trên giọng đã chuẩn bị: giúp giữ âm sắc đồng thời tạo lời nói liền mạch hơn, ngay cả khi mẫu nguồn chưa đều hoặc có giọng vùng miền. Chuẩn bị giọng nhân bản và sử dụng giọng đó khi đọc là hai hành động khác nhau.</p><p>Mô hình hỗ trợ <strong>40 ngôn ngữ</strong>, gồm tiếng Nga. Ngoài bảy trạng thái cảm xúc cơ bản, Speech 2.6 có các lựa chọn nói trôi chảy <code>fluent</code> và thì thầm <code>whisper</code>. Nếu không đặt cảm xúc, mô hình chọn theo ý nghĩa văn bản.</p><h4>Cài đặt cách đọc</h4><p>MiniMax cho phép chọn giọng và điều khiển tốc độ, âm lượng, cao độ. Tốc độ được đặt trong khoảng <strong>0,5–2</strong>, âm lượng lớn hơn 0 và tối đa <strong>10</strong>, thay đổi cao độ từ <strong>−12 đến 12</strong>. Có thể để mô hình chọn cảm xúc theo ý nghĩa văn bản hoặc chỉ định thủ công: vui, buồn, giận dữ, sợ hãi, ghê tởm, ngạc nhiên hoặc bình tĩnh.</p><p>Có thể làm rõ phát âm bằng từ điển thay thế và ký hiệu phiên âm; mô hình cung cấp bảng phiên âm quốc tế, bính âm tiếng Trung và các cách đọc tiếng Nhật. Khoảng dừng được đặt giữa các đoạn lời trong phạm vi <strong>0,01–99,99 giây</strong>. Thời lượng khoảng dừng có độ chính xác đến hai chữ số sau dấu phẩy; dấu được đặt giữa các đoạn lời và không đặt liên tiếp. Những cài đặt này cho phép điều chỉnh cách đọc tên, từ viết tắt và từ có nhiều cách hiểu theo ý đồ giọng đọc.</p><h4>Độ dài văn bản và âm thanh</h4><p>Tổng hợp nhận văn bản ít hơn <strong>10 000 ký tự</strong>. Với văn bản dài hơn 3000 ký tự, nhà sản xuất khuyến nghị đầu ra truyền luồng; cũng có thể nhận toàn bộ âm thanh hoàn chỉnh. Cài đặt tổng hợp chung gồm MP3, PCM, FLAC, WAV, Opus và các biến thể G.711 μ-law, mono hoặc stereo; tập định dạng sẵn có cho từng yêu cầu cụ thể được xác định bằng công cụ Ailoot.</p><p>Theo MiniMax, thế hệ này hướng tới độ trễ thấp trong các kịch bản giọng nói. Đây là mô tả mô hình; thời gian của từng câu trả lời và khả năng sử dụng cài đặt mở rộng phụ thuộc vào cách truy cập Ailoot đã chọn.</p><p>Cài đặt âm thanh bổ sung gồm các tần số lấy mẫu <strong>8, 16, 22,05, 24, 32 và 44,1 kHz</strong>. MP3 có các mức bitrate <strong>32, 64, 128 hoặc 256 kbit/s</strong>. Có thể thay đổi màu giọng và áp dụng một hiệu ứng: tiếng vang không gian rộng, tiếng vang hội trường, âm thanh điện thoại hoặc giọng robot. Hiệu ứng thay đổi giọng được hỗ trợ cho MP3, WAV và FLAC khi nhận toàn bộ âm thanh, còn với đầu ra truyền luồng chỉ hỗ trợ MP3. Các định dạng G.711 μ-law sử dụng tần số 8 kHz. Những khả năng này thuộc cài đặt tổng hợp của MiniMax.</p><p>Nhà sản xuất cung cấp đồng bộ lời nói với văn bản: dấu thời gian theo câu, theo từ hoặc theo từ khi xuất dần. Kết quả này giúp kết hợp lời đọc với việc hiển thị văn bản. Khả năng bổ sung này cần hỗ trợ định dạng câu trả lời tương ứng.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Có trên Ailoot · đầu vào &amp; phương thức</h3><details class=\"card-method\" open><summary><b>Ailoot · Tổng hợp giọng nói</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>text</code></dd></div><div><dt>Đầu ra</dt><dd><code>speech</code></dd></div><div><dt>Định dạng đầu ra</dt><dd>mp3</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>speech-2.6-hd</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><div>Độ dài tối đa (không gồm ngưỡng): 10.000</div><div>Đơn vị: ký tự Unicode</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>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>Mẫu: ^[A-Za-z0-9_-]{1,128}$</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</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Tổ hợp tư liệu đầu vào</summary><p class=\"note-s\"><b>text_to_speech</b> · Bắt buộc: input</p></details><details class=\"note-s\" data-method-contract><summary>Tham số phương thức và vòng đời</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Tham số</th><th>Hợp đồng</th></tr></thead><tbody><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>material_types</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>text</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>required</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>null</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>optional_controls</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>null</td></tr></tbody></table></div><p>Vòng đời: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Bảng giá</h3><h4>Mức phí phương thức Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Tổng hợp giọng nói</b><code>POST /v1/audio/speech</code></header><dl><div><dt>Đầu vào</dt><dd>100,00 US$ <em>mỗi 1 triệu ký tự</em></dd></div></dl></section><p class=\"note-s\">Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. <a href=\"/docs/vi/billing/reserve/\">Cách hoạt động của cơ chế tạm giữ và quyết toán →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot · Tổng hợp giọng nói</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-469-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-469-panel-0\" aria-selected=\"true\" tabindex=\"0\">Ví dụ giọng nói</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-469-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-469-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}&quot;\nexport AILOOT_TEXT_FILE\n: &quot;${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;speech-2.6-hd&quot;, &quot;input&quot;: &quot;&quot;}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;input&quot;]=text\nimport re\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nif not re.fullmatch(r&quot;[A-Za-z0-9_-]{1,128}&quot;,voice):raise SystemExit(&quot;Set an actual accepted voice ID&quot;)\np[&quot;voice&quot;]=voice\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Nhận và lưu kết quả</h3><h4>Ailoot · Tổng hợp giọng nói</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>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ộ kết quả nhị phân và các header. Nếu phản hồi ở dạng JSON hoặc chứa nhiều đầu ra, giữ lại mọi phần tử dữ liệu và tải từng tài nguyên từ URL có chữ ký 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ữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh.</p></div><details class=\"card-about\" data-output-fields><summary>Trường phản hồi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Trường</th><th>Loại</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">binary 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><details class=\"card-about\" data-method-errors><summary>Lỗi và bước tiếp theo</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Phản hồi</th><th>Điều kiện</th><th>Bước tiếp theo</th></tr></thead><tbody><tr><th data-cell-label=\"Phản hồi\" scope=\"row\"><span class=\"card-cell-label\">Phản hồi</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Điều kiện\"><span class=\"card-cell-label\">Điều kiện</span>Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ</td><td data-cell-label=\"Bước tiếp theo\"><span class=\"card-cell-label\">Bước tiếp theo</span>Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.</td></tr><tr><th data-cell-label=\"Phản hồi\" scope=\"row\"><span class=\"card-cell-label\">Phản hồi</span><code>server_error</code></th><td data-cell-label=\"Điều kiện\"><span class=\"card-cell-label\">Điều kiện</span>Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra</td><td data-cell-label=\"Bước tiếp theo\"><span class=\"card-cell-label\">Bước tiếp theo</span>Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Bí danh</h3><h4>Bí danh mô hình</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=speech-2.6-hd&amp;route=Core&amp;caller=speech-2.6-hd&amp;fmt=speech\"><code>speech-2.6-hd</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=speech-2.6-hd&amp;route=Core&amp;caller=speech-2.6-hd&amp;fmt=speech\"><code>speech-2.6-hd</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "speech-2.6-hd",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core"
      },
      "method_key": "Core|speech|/v1/audio/speech|speech-2.6-hd",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Giữ lại toàn bộ kết quả nhị phân và các header. Nếu phản hồi ở dạng JSON hoặc chứa nhiều đầu ra, giữ lại mọi phần tử dữ liệu và tải từng tài nguyên từ URL có chữ ký thực tế.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-2.6-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "ký tự Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-2.6-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Tổng hợp giọng nói",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    }
  ],
  "model_id": "speech-2.6-hd",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "30ca0978df2c47a1c120987751fd00089f4da845c77bbf10e49497a8a6f6185c",
    "input_html_sha256": "03bc8d7140132abf361c37d01db2c272d0c31e60791526578a96c89c4a674ac4",
    "private_audit_sha256": "f21642a52ab20b8ce9ff7528b7f0b9d353399465e4efb9d892f4c93f6bdb1c4d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/speech-2-6-hd/",
    "description": "Speech 2.6 HD là mô hình tổng hợp giọng nói chất lượng cao, chú trọng sự tự nhiên và độ giống giọng.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/speech-2-6-hd/index.md",
    "title": "speech-2.6-hd — Ailoot",
    "url": "https://ailoot.ai/models/vi/speech-2-6-hd/"
  },
  "rawModel": {
    "about": "### Giọng tự nhiên cho tương tác\n\nSpeech 2.6 HD dành cho tổng hợp giọng nói tự nhiên và các kịch bản cần bắt đầu trả lời nhanh. Nhà sản xuất chú trọng ngữ điệu, độ trôi chảy và xử lý văn bản trước khi đọc. Biến thể HD nhấn mạnh chất lượng âm thanh; đầu vào thẻ này là văn bản, đầu ra là âm thanh lời nói.\n\n### Đọc cách ghi không thông thường\n\nThế hệ Speech 2.6 xử lý được các dạng ghi thường gặp trong thông báo công việc: địa chỉ trang, email, số điện thoại, ngày tháng và số tiền. Mô hình chuyển chúng thành dạng có thể đọc để người nghe hiểu lượt lời. Nhà sản xuất mô tả các tác vụ này trên nhiều ngôn ngữ.\n\n### Lời nói trôi chảy, giữ âm sắc\n\nSpeech 2.6 có chế độ tăng độ trôi chảy Fluent LoRA. Chế độ dành cho tổng hợp dựa trên giọng đã chuẩn bị: giúp giữ âm sắc đồng thời tạo lời nói liền mạch hơn, ngay cả khi mẫu nguồn chưa đều hoặc có giọng vùng miền. Chuẩn bị giọng nhân bản và sử dụng giọng đó khi đọc là hai hành động khác nhau.\n\nMô hình hỗ trợ **40 ngôn ngữ**, gồm tiếng Nga. Ngoài bảy trạng thái cảm xúc cơ bản, Speech 2.6 có các lựa chọn nói trôi chảy `fluent` và thì thầm `whisper`. Nếu không đặt cảm xúc, mô hình chọn theo ý nghĩa văn bản.\n\n### Cài đặt cách đọc\n\nMiniMax cho phép chọn giọng và điều khiển tốc độ, âm lượng, cao độ. Tốc độ được đặt trong khoảng **0,5–2**, âm lượng lớn hơn 0 và tối đa **10**, thay đổi cao độ từ **−12 đến 12**. Có thể để mô hình chọn cảm xúc theo ý nghĩa văn bản hoặc chỉ định thủ công: vui, buồn, giận dữ, sợ hãi, ghê tởm, ngạc nhiên hoặc bình tĩnh.\n\nCó thể làm rõ phát âm bằng từ điển thay thế và ký hiệu phiên âm; mô hình cung cấp bảng phiên âm quốc tế, bính âm tiếng Trung và các cách đọc tiếng Nhật. Khoảng dừng được đặt giữa các đoạn lời trong phạm vi **0,01–99,99 giây**. Thời lượng khoảng dừng có độ chính xác đến hai chữ số sau dấu phẩy; dấu được đặt giữa các đoạn lời và không đặt liên tiếp. Những cài đặt này cho phép điều chỉnh cách đọc tên, từ viết tắt và từ có nhiều cách hiểu theo ý đồ giọng đọc.\n\n### Độ dài văn bản và âm thanh\n\nTổng hợp nhận văn bản ít hơn **10 000 ký tự**. Với văn bản dài hơn 3000 ký tự, nhà sản xuất khuyến nghị đầu ra truyền luồng; cũng có thể nhận toàn bộ âm thanh hoàn chỉnh. Cài đặt tổng hợp chung gồm MP3, PCM, FLAC, WAV, Opus và các biến thể G.711 μ-law, mono hoặc stereo; tập định dạng sẵn có cho từng yêu cầu cụ thể được xác định bằng công cụ Ailoot.\n\nTheo MiniMax, thế hệ này hướng tới độ trễ thấp trong các kịch bản giọng nói. Đây là mô tả mô hình; thời gian của từng câu trả lời và khả năng sử dụng cài đặt mở rộng phụ thuộc vào cách truy cập Ailoot đã chọn.\n\nCài đặt âm thanh bổ sung gồm các tần số lấy mẫu **8, 16, 22,05, 24, 32 và 44,1 kHz**. MP3 có các mức bitrate **32, 64, 128 hoặc 256 kbit/s**. Có thể thay đổi màu giọng và áp dụng một hiệu ứng: tiếng vang không gian rộng, tiếng vang hội trường, âm thanh điện thoại hoặc giọng robot. Hiệu ứng thay đổi giọng được hỗ trợ cho MP3, WAV và FLAC khi nhận toàn bộ âm thanh, còn với đầu ra truyền luồng chỉ hỗ trợ MP3. Các định dạng G.711 μ-law sử dụng tần số 8 kHz. Những khả năng này thuộc cài đặt tổng hợp của MiniMax.\n\nNhà sản xuất cung cấp đồng bộ lời nói với văn bản: dấu thời gian theo câu, theo từ hoặc theo từ khi xuất dần. Kết quả này giúp kết hợp lời đọc với việc hiển thị văn bản. Khả năng bổ sung này cần hỗ trợ định dạng câu trả lời tương ứng.",
    "alias_of": null,
    "aliases": [],
    "author": "MiniMax",
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "speech-2.6-hd",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "cache_write_5m": null,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [
              "MiniMax accepts optionalresponse_formatmp3. Actual voice IDs come from the selected model voice profile.",
              "The facade uses bufferedMP3; provider speed/volume/pitch/sample-rate fields are fixed by the adapter, not callercontrols."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Giữ lại toàn bộ kết quả nhị phân và các header. Nếu phản hồi ở dạng JSON hoặc chứa nhiều đầu ra, giữ lại mọi phần tử dữ liệu và tải từng tài nguyên từ URL có chữ ký thực tế.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "speech-2.6-hd"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum_length_exclusive": 10000,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "ký tự Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "voice",
                "pattern": "^[A-Za-z0-9_-]{1,128}$",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu."
          ],
          "input": {
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": null
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "operation_modes": [
            "audio_speech"
          ],
          "output": {
            "family": [
              "speech"
            ],
            "format": null,
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": null,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}\"\nexport AILOOT_TEXT_FILE\n: \"${AILOOT_VOICE_ID:?Set the actual accepted voice ID for this model}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"speech-2.6-hd\", \"input\": \"\"}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"input\"]=text\nimport re\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nif not re.fullmatch(r\"[A-Za-z0-9_-]{1,128}\",voice):raise SystemExit(\"Set an actual accepted voice ID\")\np[\"voice\"]=voice\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "Synthesize your actual script",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Tổng hợp giọng nói",
        "max_out": null,
        "max_tool_calls": null,
        "out": null,
        "output": [
          "speech"
        ],
        "path": "/v1/audio/speech",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 100,
                "amount_unit": "usd_per_display_unit",
                "key": "tts_million_chars",
                "label": "per 1 million characters",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "tts_million_chars",
        "units": [
          {
            "key": "tts_million_chars",
            "label": "per 1 million characters",
            "side": "in",
            "usd": 100
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "speech-2.6-hd",
        "request_model_id": "speech-2.6-hd",
        "route_label": "Core"
      }
    ],
    "name": "speech-2.6-hd",
    "price": {
      "in": 100,
      "in_label": "per 1 million characters",
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": false
    },
    "short": "Speech 2.6 HD là mô hình tổng hợp giọng nói chất lượng cao, chú trọng sự tự nhiên và độ giống 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": "Speech 2.6 HD là mô hình tổng hợp giọng nói chất lượng cao, chú trọng sự tự nhiên và độ giống giọng.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "837728548c6e228cefe7a5c5c47cea7d5dee07348019574dcd12ac8c0d37d66f",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "951eb5a43cf4baf12cc1f7f4f687dcd1b19f158af414e3461fa6070cd9d29a8d"
}
