{
  "aboutHtml": "<p>GPT-4o Transcribe Diarize là mô hình nhận dạng giọng nói tự động của OpenAI với phân đoạn theo người nói tích hợp. Mô hình gắn các đoạn âm thanh đã được chép lời với những người nói khác nhau trong hội thoại. Kết quả hữu ích là bản chép lời được tổ chức theo người nói và thời gian, thay vì chỉ một khối từ liên tục. Mô hình dành cho lời nói đã ghi âm cần nhãn người nói, chẳng hạn cuộc họp, phỏng vấn hoặc thảo luận nhiều người.</p><h4>Chuẩn bị bản ghi hoàn chỉnh</h4><p>Hãy cung cấp bản ghi cần chép lời. Quy trình tệp được tài liệu hóa nhận MP3, MP4, MPEG, MPGA, M4A, WAV và WebM, với giới hạn kích thước tệp 25 MB. Giữ bản ghi nguồn để có thể kiểm tra lượt nói, tên hoặc cụm từ chưa rõ theo âm thanh thực tế.</p><p>Với cuộc họp, hãy giữ trình tự hội thoại, thay vì cắt những khoảng dừng ngắn giúp phân biệt lượt nói. Với phỏng vấn, giữ câu hỏi và câu trả lời cùng nhau khi nhiệm vụ cần mối liên hệ giữa chúng. Chuẩn bị âm thanh cần làm lời nói nghe rõ mà không xóa thông tin quan trọng đối với kết quả có nhãn người nói.</p><p>Đây là quy trình chép lời từ tệp. Xử lý bản ghi hoàn chỉnh khác với nhận dạng luồng âm thanh vẫn đang tới; khả năng gán nhãn người nói của mô hình không được hỗ trợ trong phiên chép lời Realtime.</p><h4>Yêu cầu bản chép lời có nhãn người nói</h4><p>Định dạng kết quả <code>diarized_json</code> trả về các đoạn với nhãn định danh người nói cùng thời điểm bắt đầu và kết thúc. Mỗi đoạn cũng chứa phần văn bản được chép lời của nó. Hãy giữ các trường này cùng nhau để liên kết từ ngữ với phần tương ứng của bản ghi.</p><p>Để bản chép lời cuộc họp hữu ích, hãy giữ trình tự đoạn và hiển thị lời của từng người nói cùng mốc thời gian. Nhiệm vụ sau có thể dùng bản chép lời để lập biên bản hoặc danh sách việc cần làm, nhưng bản thân phân đoạn theo người nói không quyết định cuộc họp đã thống nhất điều gì và không tạo bản tóm tắt đã được xác minh.</p><p>Nhãn người nói mô tả cách mô hình nhóm lời nói. Hãy kiểm tra chỗ chuyển lượt khi mọi người ngắt lời nhau, nói ngắn hoặc nói chồng lấp. Kết quả có cấu trúc tốt giúp điều hướng và rà soát, nhưng một lần quy lời cụ thể cho người nói vẫn có thể cần nghe âm thanh gốc để kiểm tra.</p><h4>Mẫu tham chiếu cho người nói đã biết</h4><p>Quy trình được tài liệu hóa có thể nhận tối đa bốn mẫu tham chiếu người nói có tên. Mỗi mẫu là đoạn âm thanh ngắn dài 2–10 giây, dùng định dạng được hỗ trợ cho tệp tải lên chính. Tên và mẫu được cung cấp cùng nhau để liên kết các đoạn với người nói đã biết.</p><p>Hãy chuẩn bị mẫu có rõ giọng của người nói dự kiến và giữ tên nhất quán với các nhãn mong muốn trong bản chép lời. Với phỏng vấn, mẫu của người dẫn có thể giúp tổ chức kết quả có nhãn người nói mà không biến mọi người tham gia thành nhãn ẩn danh. Mẫu là đầu vào để quy lời cho người nói; nó không phải thao tác nhân bản giọng nói tổng quát hay bằng chứng về danh tính một người.</p><p>Đừng nhầm đặt tên người nói với chỉnh sửa những từ đã được nói. Đầu ra hữu ích vẫn cần giữ nội dung bản ghi và thứ tự lượt nói thực tế.</p><h4>Chia đoạn và giới hạn mô hình</h4><p>Với âm thanh dài hơn 30 giây, nhà sản xuất yêu cầu chiến lược chia đoạn, bằng chia đoạn tự động hoặc cấu hình phát hiện hoạt động giọng nói. Yêu cầu này không phải thời lượng ghi âm tối đa. Nó mô tả cách đầu vào dài hơn được chia để xử lý.</p><p>Thẻ mô hình liệt kê cửa sổ ngữ cảnh 16,000 token và đầu ra tối đa 2,000 token. Đây là giới hạn token của mô hình, tách biệt với giới hạn tải tệp 25 MB và ngưỡng chia đoạn của quy trình tệp. Không nên đổi chúng thành số phút tự đặt áp dụng cho mọi bản ghi.</p><p>Hãy giữ mốc thời gian và định danh đoạn khi ghép hoặc kiểm tra bản chép lời dài hơn. Nếu bản ghi đã được chia trước khi gửi, hãy giữ liên hệ của từng phần với âm thanh gốc để không nhầm dấu thời gian cục bộ với vị trí trong toàn bộ hội thoại.</p><h4>Truyền phát các đoạn đã hoàn tất</h4><p>Quy trình chép lời tệp có thể truyền phát văn bản trong khi xử lý bản ghi. Khi truyền phát với nhãn người nói, đoạn đã hoàn tất phát ra sự kiện đoạn. Các phần văn bản tăng thêm có mã định danh đoạn nhưng không chứa thông tin gán người nói tạm thời; người nói được gán khi đoạn hoàn tất.</p><p>Sự phân biệt này quan trọng khi hiển thị. Hãy thể hiện văn bản tạm thời và lượt nói đã hoàn tất như hai trạng thái khác nhau, thay vì gắn nhãn người nói chưa chắc chắn trước khi mô hình hoàn tất đoạn. Giữ kết quả hoàn chỉnh khi cần bản chép lời để chỉnh sửa hoặc phân tích về sau.</p><h4>Phạm vi mô hình và đầu ra</h4><p>Hồ sơ này là mô hình phân đoạn theo người nói, tách biệt với chép lời GPT-4o thông thường, chép lời Mini, tổng hợp giọng nói và các mô hình hội thoại trực tiếp. Mô hình không hỗ trợ prompt chép lời; hãy giữ việc rà soát hoặc sửa thuật ngữ thành bước riêng, kiểm tra theo âm thanh gốc. Giao diện của nhà sản xuất chép lời từ âm thanh đã ghi thành văn bản. Mô hình không tạo phản hồi âm thanh hoặc dịch bản ghi qua quy trình dịch âm thanh riêng.</p><p>Hãy dùng mô hình cho bản chép lời cần cả nội dung lẫn cấu trúc người nói. Kiểm tra tên, thuật ngữ kỹ thuật, con số, ranh giới lượt nói và việc quy lời cho người nói theo bản ghi. Giữ âm thanh, định dạng kết quả đã chọn, mẫu tham chiếu và bản chép lời hoàn chỉnh để lần sửa có thể tập trung vào một cụm từ cụ thể hoặc một lần gán người nói.</p>",
  "aboutText": "GPT-4o Transcribe Diarize là mô hình nhận dạng giọng nói tự động của OpenAI với phân đoạn theo người nói tích hợp. Mô hình gắn các đoạn âm thanh đã được chép lời với những người nói khác nhau trong hội thoại. Kết quả hữu ích là bản chép lời được tổ chức theo người nói và thời gian, thay vì chỉ một khối từ liên tục. Mô hình dành cho lời nói đã ghi âm cần nhãn người nói, chẳng hạn cuộc họp, phỏng vấn hoặc thảo luận nhiều người.\n\n### Chuẩn bị bản ghi hoàn chỉnh\n\nHãy cung cấp bản ghi cần chép lời. Quy trình tệp được tài liệu hóa nhận MP3, MP4, MPEG, MPGA, M4A, WAV và WebM, với giới hạn kích thước tệp 25 MB. Giữ bản ghi nguồn để có thể kiểm tra lượt nói, tên hoặc cụm từ chưa rõ theo âm thanh thực tế.\n\nVới cuộc họp, hãy giữ trình tự hội thoại, thay vì cắt những khoảng dừng ngắn giúp phân biệt lượt nói. Với phỏng vấn, giữ câu hỏi và câu trả lời cùng nhau khi nhiệm vụ cần mối liên hệ giữa chúng. Chuẩn bị âm thanh cần làm lời nói nghe rõ mà không xóa thông tin quan trọng đối với kết quả có nhãn người nói.\n\nĐây là quy trình chép lời từ tệp. Xử lý bản ghi hoàn chỉnh khác với nhận dạng luồng âm thanh vẫn đang tới; khả năng gán nhãn người nói của mô hình không được hỗ trợ trong phiên chép lời Realtime.\n\n### Yêu cầu bản chép lời có nhãn người nói\n\nĐịnh dạng kết quả `diarized_json` trả về các đoạn với nhãn định danh người nói cùng thời điểm bắt đầu và kết thúc. Mỗi đoạn cũng chứa phần văn bản được chép lời của nó. Hãy giữ các trường này cùng nhau để liên kết từ ngữ với phần tương ứng của bản ghi.\n\nĐể bản chép lời cuộc họp hữu ích, hãy giữ trình tự đoạn và hiển thị lời của từng người nói cùng mốc thời gian. Nhiệm vụ sau có thể dùng bản chép lời để lập biên bản hoặc danh sách việc cần làm, nhưng bản thân phân đoạn theo người nói không quyết định cuộc họp đã thống nhất điều gì và không tạo bản tóm tắt đã được xác minh.\n\nNhãn người nói mô tả cách mô hình nhóm lời nói. Hãy kiểm tra chỗ chuyển lượt khi mọi người ngắt lời nhau, nói ngắn hoặc nói chồng lấp. Kết quả có cấu trúc tốt giúp điều hướng và rà soát, nhưng một lần quy lời cụ thể cho người nói vẫn có thể cần nghe âm thanh gốc để kiểm tra.\n\n### Mẫu tham chiếu cho người nói đã biết\n\nQuy trình được tài liệu hóa có thể nhận tối đa bốn mẫu tham chiếu người nói có tên. Mỗi mẫu là đoạn âm thanh ngắn dài 2–10 giây, dùng định dạng được hỗ trợ cho tệp tải lên chính. Tên và mẫu được cung cấp cùng nhau để liên kết các đoạn với người nói đã biết.\n\nHãy chuẩn bị mẫu có rõ giọng của người nói dự kiến và giữ tên nhất quán với các nhãn mong muốn trong bản chép lời. Với phỏng vấn, mẫu của người dẫn có thể giúp tổ chức kết quả có nhãn người nói mà không biến mọi người tham gia thành nhãn ẩn danh. Mẫu là đầu vào để quy lời cho người nói; nó không phải thao tác nhân bản giọng nói tổng quát hay bằng chứng về danh tính một người.\n\nĐừng nhầm đặt tên người nói với chỉnh sửa những từ đã được nói. Đầu ra hữu ích vẫn cần giữ nội dung bản ghi và thứ tự lượt nói thực tế.\n\n### Chia đoạn và giới hạn mô hình\n\nVới âm thanh dài hơn 30 giây, nhà sản xuất yêu cầu chiến lược chia đoạn, bằng chia đoạn tự động hoặc cấu hình phát hiện hoạt động giọng nói. Yêu cầu này không phải thời lượng ghi âm tối đa. Nó mô tả cách đầu vào dài hơn được chia để xử lý.\n\nThẻ mô hình liệt kê cửa sổ ngữ cảnh 16,000 token và đầu ra tối đa 2,000 token. Đây là giới hạn token của mô hình, tách biệt với giới hạn tải tệp 25 MB và ngưỡng chia đoạn của quy trình tệp. Không nên đổi chúng thành số phút tự đặt áp dụng cho mọi bản ghi.\n\nHãy giữ mốc thời gian và định danh đoạn khi ghép hoặc kiểm tra bản chép lời dài hơn. Nếu bản ghi đã được chia trước khi gửi, hãy giữ liên hệ của từng phần với âm thanh gốc để không nhầm dấu thời gian cục bộ với vị trí trong toàn bộ hội thoại.\n\n### Truyền phát các đoạn đã hoàn tất\n\nQuy trình chép lời tệp có thể truyền phát văn bản trong khi xử lý bản ghi. Khi truyền phát với nhãn người nói, đoạn đã hoàn tất phát ra sự kiện đoạn. Các phần văn bản tăng thêm có mã định danh đoạn nhưng không chứa thông tin gán người nói tạm thời; người nói được gán khi đoạn hoàn tất.\n\nSự phân biệt này quan trọng khi hiển thị. Hãy thể hiện văn bản tạm thời và lượt nói đã hoàn tất như hai trạng thái khác nhau, thay vì gắn nhãn người nói chưa chắc chắn trước khi mô hình hoàn tất đoạn. Giữ kết quả hoàn chỉnh khi cần bản chép lời để chỉnh sửa hoặc phân tích về sau.\n\n### Phạm vi mô hình và đầu ra\n\nHồ sơ này là mô hình phân đoạn theo người nói, tách biệt với chép lời GPT-4o thông thường, chép lời Mini, tổng hợp giọng nói và các mô hình hội thoại trực tiếp. Mô hình không hỗ trợ prompt chép lời; hãy giữ việc rà soát hoặc sửa thuật ngữ thành bước riêng, kiểm tra theo âm thanh gốc. Giao diện của nhà sản xuất chép lời từ âm thanh đã ghi thành văn bản. Mô hình không tạo phản hồi âm thanh hoặc dịch bản ghi qua quy trình dịch âm thanh riêng.\n\nHãy dùng mô hình cho bản chép lời cần cả nội dung lẫn cấu trúc người nói. Kiểm tra tên, thuật ngữ kỹ thuật, con số, ranh giới lượt nói và việc quy lời cho người nói theo bản ghi. Giữ âm thanh, định dạng kết quả đã chọn, mẫu tham chiếu và bản chép lời hoàn chỉnh để lần sửa có thể tập trung vào một cụm từ cụ thể hoặc một lần gán người nói.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "eb27dae0f58fceaacf0076afa228e085bc199723ed9ae1152be7d7a7955c6a5f",
    "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\">O</span><h2 id=\"sheet-title\">gpt-4o-transcribe-diarize</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4o-transcribe-diarize</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|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-4o-transcribe-diarize\">Nhận dạng</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\">GPT-4o Transcribe Diarize chuyển lời nói đã ghi âm thành văn bản với các đoạn có nhãn người nói và mốc thời gian. Mô hình phù hợp với cuộc họp, phỏng vấn và bản ghi nhiều người, khi bản chép lời cần cho biết ai nói lúc nào, kèm tùy chọn mẫu giọng ngắn cho người nói đã biết.</p><dl class=\"card-io\" data-card-io><div><dt>Đầu vào được chấp nhận</dt><dd>Âm thanh</dd></div><div><dt>Kết quả</dt><dd>transcription</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>GPT-4o Transcribe Diarize là mô hình nhận dạng giọng nói tự động của OpenAI với phân đoạn theo người nói tích hợp. Mô hình gắn các đoạn âm thanh đã được chép lời với những người nói khác nhau trong hội thoại. Kết quả hữu ích là bản chép lời được tổ chức theo người nói và thời gian, thay vì chỉ một khối từ liên tục. Mô hình dành cho lời nói đã ghi âm cần nhãn người nói, chẳng hạn cuộc họp, phỏng vấn hoặc thảo luận nhiều người.</p><h4>Chuẩn bị bản ghi hoàn chỉnh</h4><p>Hãy cung cấp bản ghi cần chép lời. Quy trình tệp được tài liệu hóa nhận MP3, MP4, MPEG, MPGA, M4A, WAV và WebM, với giới hạn kích thước tệp 25 MB. Giữ bản ghi nguồn để có thể kiểm tra lượt nói, tên hoặc cụm từ chưa rõ theo âm thanh thực tế.</p><p>Với cuộc họp, hãy giữ trình tự hội thoại, thay vì cắt những khoảng dừng ngắn giúp phân biệt lượt nói. Với phỏng vấn, giữ câu hỏi và câu trả lời cùng nhau khi nhiệm vụ cần mối liên hệ giữa chúng. Chuẩn bị âm thanh cần làm lời nói nghe rõ mà không xóa thông tin quan trọng đối với kết quả có nhãn người nói.</p><p>Đây là quy trình chép lời từ tệp. Xử lý bản ghi hoàn chỉnh khác với nhận dạng luồng âm thanh vẫn đang tới; khả năng gán nhãn người nói của mô hình không được hỗ trợ trong phiên chép lời Realtime.</p><h4>Yêu cầu bản chép lời có nhãn người nói</h4><p>Định dạng kết quả <code>diarized_json</code> trả về các đoạn với nhãn định danh người nói cùng thời điểm bắt đầu và kết thúc. Mỗi đoạn cũng chứa phần văn bản được chép lời của nó. Hãy giữ các trường này cùng nhau để liên kết từ ngữ với phần tương ứng của bản ghi.</p><p>Để bản chép lời cuộc họp hữu ích, hãy giữ trình tự đoạn và hiển thị lời của từng người nói cùng mốc thời gian. Nhiệm vụ sau có thể dùng bản chép lời để lập biên bản hoặc danh sách việc cần làm, nhưng bản thân phân đoạn theo người nói không quyết định cuộc họp đã thống nhất điều gì và không tạo bản tóm tắt đã được xác minh.</p><p>Nhãn người nói mô tả cách mô hình nhóm lời nói. Hãy kiểm tra chỗ chuyển lượt khi mọi người ngắt lời nhau, nói ngắn hoặc nói chồng lấp. Kết quả có cấu trúc tốt giúp điều hướng và rà soát, nhưng một lần quy lời cụ thể cho người nói vẫn có thể cần nghe âm thanh gốc để kiểm tra.</p><h4>Mẫu tham chiếu cho người nói đã biết</h4><p>Quy trình được tài liệu hóa có thể nhận tối đa bốn mẫu tham chiếu người nói có tên. Mỗi mẫu là đoạn âm thanh ngắn dài 2–10 giây, dùng định dạng được hỗ trợ cho tệp tải lên chính. Tên và mẫu được cung cấp cùng nhau để liên kết các đoạn với người nói đã biết.</p><p>Hãy chuẩn bị mẫu có rõ giọng của người nói dự kiến và giữ tên nhất quán với các nhãn mong muốn trong bản chép lời. Với phỏng vấn, mẫu của người dẫn có thể giúp tổ chức kết quả có nhãn người nói mà không biến mọi người tham gia thành nhãn ẩn danh. Mẫu là đầu vào để quy lời cho người nói; nó không phải thao tác nhân bản giọng nói tổng quát hay bằng chứng về danh tính một người.</p><p>Đừng nhầm đặt tên người nói với chỉnh sửa những từ đã được nói. Đầu ra hữu ích vẫn cần giữ nội dung bản ghi và thứ tự lượt nói thực tế.</p><h4>Chia đoạn và giới hạn mô hình</h4><p>Với âm thanh dài hơn 30 giây, nhà sản xuất yêu cầu chiến lược chia đoạn, bằng chia đoạn tự động hoặc cấu hình phát hiện hoạt động giọng nói. Yêu cầu này không phải thời lượng ghi âm tối đa. Nó mô tả cách đầu vào dài hơn được chia để xử lý.</p><p>Thẻ mô hình liệt kê cửa sổ ngữ cảnh 16,000 token và đầu ra tối đa 2,000 token. Đây là giới hạn token của mô hình, tách biệt với giới hạn tải tệp 25 MB và ngưỡng chia đoạn của quy trình tệp. Không nên đổi chúng thành số phút tự đặt áp dụng cho mọi bản ghi.</p><p>Hãy giữ mốc thời gian và định danh đoạn khi ghép hoặc kiểm tra bản chép lời dài hơn. Nếu bản ghi đã được chia trước khi gửi, hãy giữ liên hệ của từng phần với âm thanh gốc để không nhầm dấu thời gian cục bộ với vị trí trong toàn bộ hội thoại.</p><h4>Truyền phát các đoạn đã hoàn tất</h4><p>Quy trình chép lời tệp có thể truyền phát văn bản trong khi xử lý bản ghi. Khi truyền phát với nhãn người nói, đoạn đã hoàn tất phát ra sự kiện đoạn. Các phần văn bản tăng thêm có mã định danh đoạn nhưng không chứa thông tin gán người nói tạm thời; người nói được gán khi đoạn hoàn tất.</p><p>Sự phân biệt này quan trọng khi hiển thị. Hãy thể hiện văn bản tạm thời và lượt nói đã hoàn tất như hai trạng thái khác nhau, thay vì gắn nhãn người nói chưa chắc chắn trước khi mô hình hoàn tất đoạn. Giữ kết quả hoàn chỉnh khi cần bản chép lời để chỉnh sửa hoặc phân tích về sau.</p><h4>Phạm vi mô hình và đầu ra</h4><p>Hồ sơ này là mô hình phân đoạn theo người nói, tách biệt với chép lời GPT-4o thông thường, chép lời Mini, tổng hợp giọng nói và các mô hình hội thoại trực tiếp. Mô hình không hỗ trợ prompt chép lời; hãy giữ việc rà soát hoặc sửa thuật ngữ thành bước riêng, kiểm tra theo âm thanh gốc. Giao diện của nhà sản xuất chép lời từ âm thanh đã ghi thành văn bản. Mô hình không tạo phản hồi âm thanh hoặc dịch bản ghi qua quy trình dịch âm thanh riêng.</p><p>Hãy dùng mô hình cho bản chép lời cần cả nội dung lẫn cấu trúc người nói. Kiểm tra tên, thuật ngữ kỹ thuật, con số, ranh giới lượt nói và việc quy lời cho người nói theo bản ghi. Giữ âm thanh, định dạng kết quả đã chọn, mẫu tham chiếu và bản chép lời hoàn chỉnh để lần sửa có thể tập trung vào một cụm từ cụ thể hoặc một lần gán người nói.</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 · Nhận dạng giọng nói</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>audio</code></dd></div><div><dt>Đầu ra</dt><dd><code>transcription</code></dd></div><div><dt>Định dạng đầu ra</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Trường</th><th>Loại</th><th>Yêu cầu</th><th>Giá trị &amp; giới hạn</th><th>Mặc định</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>openai/gpt-4o-transcribe-diarize</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\">file</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>file</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>Số byte tối đa: 26.214.400</div><div>Loại MIME: audio/mpeg</div><div>Phần mở rộng tệp: .mp3</div><div>Thời lượng tối đa, giây: 30</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>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>diarized_json</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>diarized_transcription</b></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>multipart/form-data</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, file, response_format</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>file_formats</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>mp3</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>max_audio_seconds</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>30</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>max_bytes</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>26214400</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>diarized_json</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>other_options</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>material_types</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>audio</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>additional_properties</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>form_string_maximum_bytes</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>256</td></tr></tbody></table></div><p>Bí danh phương thức: <code>/audio/transcriptions</code></p><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 bản ghi âm thực tế và định dạng phù hợp.</p><p class=\"note-s\">Giữ lại toàn bộ bản phiên âm, các đoạn, ID người nói và thông tin thời gian.</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>/ 1K token âm thanh</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Token âm thanh đầu vào</span> <b>$0.012</b> <span class=\"price-unit\">/ 1K token âm thanh</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>/ 1K token âm thanh</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu ra · Token âm thanh đầu ra</span> <b>$0.02</b> <span class=\"price-unit\">/ 1K token âm thanh</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. <a href=\"/docs/vi/billing/reserve/\">Cách hoạt động của cơ chế tạm giữ và quyết toán →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot Ultra · Nhận dạng 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-2050-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2050-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · yêu cầu tạo đã lưu nguyên dạng</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-2050-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2050-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport os\nfrom pathlib import Path\np=Path(os.environ[&quot;AILOOT_AUDIO_FILE&quot;])\nif not p.is_file() or p.suffix.lower()!=&quot;.mp3&quot;:raise SystemExit(&quot;Choose an existing MP3 recording&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; \\\n  --form-string model=openai/gpt-4o-transcribe-diarize -F &quot;file=@$AILOOT_AUDIO_FILE&quot; --form-string response_format=diarized_json \\\n  -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text())))\nPY_RESULT\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 · Nhận dạng giọng nói</h4><p class=\"note-s\">json</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Lượt đọc nội dung khác</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-2051-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-0\" aria-selected=\"true\" tabindex=\"0\">Lưu mọi bản chép lời trả về thuộc về bạn</button><button class=\"cg-tab\" id=\"model-code-2051-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Thư viện phương tiện</button><button class=\"cg-tab\" id=\"model-code-2051-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Trạng thái tác vụ</button><button class=\"cg-tab\" id=\"model-code-2051-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2051-panel-3\" aria-selected=\"false\" tabindex=\"-1\">Chi tiết tài nguyên</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2051-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nurls=[]\nif isinstance(r.get(&#39;asset_url&#39;),str) and r[&#39;asset_url&#39;]:urls.append((&#39;transcript&#39;,r[&#39;asset_url&#39;]))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2051-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-2051-tab-3\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Lưu tất cả kết quả đã hoàn tất</h5><p class=\"note-s\">Lưu mọi phản hồi hoàn chỉnh, tệp và phần nội dung được trả về.</p><p class=\"note-s\">Giữ lại toàn bộ JSON, không chỉ văn bản; giữ nguyên mọi đoạn/người nói/dấu thời gian hiện có và mã định danh tác vụ/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ữ 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\">text</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">segments[]</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>object</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">task_id</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">asset_url</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>object</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">segments[].speaker</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>string</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">segments[].start</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>number</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">segments[].end</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span>number</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=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-4o-transcribe-diarize&amp;route=Ultra&amp;caller=openai%2Fgpt-4o-transcribe-diarize&amp;fmt=transcriptions\"><code>openai/gpt-4o-transcribe-diarize</code></a></span></p><h4>Bí danh đường dẫn phương thức</h4><p class=\"note-s\"><code>/audio/transcriptions</code></p><h4>ID gọi liên quan</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4o-transcribe-diarize&amp;route=Ultra&amp;caller=openai%2Fgpt-4o-transcribe-diarize&amp;fmt=transcriptions\"><code>openai/gpt-4o-transcribe-diarize</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4o-transcribe-diarize",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|openai%2Fgpt-4o-transcribe-diarize",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "file_formats": [
                  "mp3"
                ],
                "maximum_seconds": 30,
                "mode": "diarized_transcription"
              }
            ],
            "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": [
              "diarized_transcription"
            ],
            "outputs": {
              "all_results": "Giữ lại toàn bộ JSON, không chỉ văn bản; giữ nguyên mọi đoạn/người nói/dấu thời gian hiện có và mã định danh tác vụ/tài sản thực tế.",
              "family": "transcription",
              "fields": [
                {
                  "description": null,
                  "name": "text",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[]",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "asset_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "segments[].speaker",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[].start",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "segments[].end",
                  "type": "number"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o-transcribe-diarize"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_extension": ".mp3",
                "maximum_bytes": 26214400,
                "maximum_seconds": 30,
                "mime_types": [
                  "audio/mpeg"
                ],
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "diarized_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "JSONinput_audio",
              "nonMP3",
              "audioover30seconds",
              "otheroptions"
            ]
          },
          "hints": [
            "Dùng bản ghi âm thực tế và định dạng phù hợp.",
            "Giữ lại toàn bộ bản phiên âm, các đoạn, ID người nói và thông tin thời gian."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "multipart/form-data",
            "file_formats": [
              "mp3"
            ],
            "form_string_maximum_bytes": 256,
            "material_types": [
              "audio"
            ],
            "max_audio_seconds": 30,
            "max_bytes": 26214400,
            "other_options": false,
            "required": [
              "model",
              "file",
              "response_format"
            ],
            "response_format": [
              "diarized_json"
            ]
          },
          "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": "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/transcriptions"
          },
          "method_aliases": [
            "/audio/transcriptions"
          ],
          "operation_modes": [
            "diarized_transcription"
          ],
          "output": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "family": "transcription",
            "fields": [
              {
                "description": null,
                "name": "text",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[]",
                "type": "object"
              },
              {
                "description": null,
                "name": "task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "asset_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object"
              },
              {
                "description": null,
                "name": "segments[].speaker",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[].start",
                "type": "number"
              },
              {
                "description": null,
                "name": "segments[].end",
                "type": "number"
              }
            ],
            "format": "json",
            "owned_result_extra_fields": [
              "task_id",
              "asset_url"
            ],
            "preserve_original_json_fields": [
              "text",
              "task",
              "duration",
              "segments",
              "usage"
            ],
            "segment_fields": [
              "type",
              "text",
              "speaker",
              "start",
              "end",
              "id"
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\np=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not p.is_file() or p.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose an existing MP3 recording\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --form-string model=openai/gpt-4o-transcribe-diarize -F \"file=@$AILOOT_AUDIO_FILE\" --form-string response_format=diarized_json \\\n  -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text())))\nPY_RESULT\n",
            "label": "curl · exact retained creation",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('result.json').read_text())\nurls=[]\nif isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every returned owned transcript",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Use actual recording and matching format.",
          "Preserve full transcript, segments, speaker IDs and timing."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/audio/transcriptions"
        ],
        "out": null,
        "output": [
          "transcription"
        ],
        "path": "/v1/audio/transcriptions",
        "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_token": 1.2e-05,
            "audio_output_token": 2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "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.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-4o-transcribe-diarize",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "c9d44a4755307c7a557bab1e1022092ca2d90d3eea3000fd9078f2b76cc26554",
    "input_html_sha256": "325dd5c918eea38365eada91d1d145aeb2f15a0f01c2963c9660ec89e51b5aa2",
    "private_audit_sha256": "232f70b636f16ae6fb0b83cbc0d9449cf6d8653005a75ca073bb02c4accd2c5b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/openai-gpt-4o-transcribe-diarize/",
    "description": "GPT-4o Transcribe Diarize chuyển lời nói đã ghi âm thành văn bản với các đoạn có nhãn người nói và mốc thời gian. Mô hình phù hợp với cuộc họp, phỏng vấn và bản ghi nhiều người, khi bản chép lời cần cho biết ai nói lúc nào, kèm tùy chọn mẫu giọng ngắn cho người nói đã biết.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/openai-gpt-4o-transcribe-diarize/index.md",
    "title": "gpt-4o-transcribe-diarize — Ailoot",
    "url": "https://ailoot.ai/models/vi/openai-gpt-4o-transcribe-diarize/"
  },
  "rawModel": {
    "about": "GPT-4o Transcribe Diarize là mô hình nhận dạng giọng nói tự động của OpenAI với phân đoạn theo người nói tích hợp. Mô hình gắn các đoạn âm thanh đã được chép lời với những người nói khác nhau trong hội thoại. Kết quả hữu ích là bản chép lời được tổ chức theo người nói và thời gian, thay vì chỉ một khối từ liên tục. Mô hình dành cho lời nói đã ghi âm cần nhãn người nói, chẳng hạn cuộc họp, phỏng vấn hoặc thảo luận nhiều người.\n\n### Chuẩn bị bản ghi hoàn chỉnh\n\nHãy cung cấp bản ghi cần chép lời. Quy trình tệp được tài liệu hóa nhận MP3, MP4, MPEG, MPGA, M4A, WAV và WebM, với giới hạn kích thước tệp 25 MB. Giữ bản ghi nguồn để có thể kiểm tra lượt nói, tên hoặc cụm từ chưa rõ theo âm thanh thực tế.\n\nVới cuộc họp, hãy giữ trình tự hội thoại, thay vì cắt những khoảng dừng ngắn giúp phân biệt lượt nói. Với phỏng vấn, giữ câu hỏi và câu trả lời cùng nhau khi nhiệm vụ cần mối liên hệ giữa chúng. Chuẩn bị âm thanh cần làm lời nói nghe rõ mà không xóa thông tin quan trọng đối với kết quả có nhãn người nói.\n\nĐây là quy trình chép lời từ tệp. Xử lý bản ghi hoàn chỉnh khác với nhận dạng luồng âm thanh vẫn đang tới; khả năng gán nhãn người nói của mô hình không được hỗ trợ trong phiên chép lời Realtime.\n\n### Yêu cầu bản chép lời có nhãn người nói\n\nĐịnh dạng kết quả `diarized_json` trả về các đoạn với nhãn định danh người nói cùng thời điểm bắt đầu và kết thúc. Mỗi đoạn cũng chứa phần văn bản được chép lời của nó. Hãy giữ các trường này cùng nhau để liên kết từ ngữ với phần tương ứng của bản ghi.\n\nĐể bản chép lời cuộc họp hữu ích, hãy giữ trình tự đoạn và hiển thị lời của từng người nói cùng mốc thời gian. Nhiệm vụ sau có thể dùng bản chép lời để lập biên bản hoặc danh sách việc cần làm, nhưng bản thân phân đoạn theo người nói không quyết định cuộc họp đã thống nhất điều gì và không tạo bản tóm tắt đã được xác minh.\n\nNhãn người nói mô tả cách mô hình nhóm lời nói. Hãy kiểm tra chỗ chuyển lượt khi mọi người ngắt lời nhau, nói ngắn hoặc nói chồng lấp. Kết quả có cấu trúc tốt giúp điều hướng và rà soát, nhưng một lần quy lời cụ thể cho người nói vẫn có thể cần nghe âm thanh gốc để kiểm tra.\n\n### Mẫu tham chiếu cho người nói đã biết\n\nQuy trình được tài liệu hóa có thể nhận tối đa bốn mẫu tham chiếu người nói có tên. Mỗi mẫu là đoạn âm thanh ngắn dài 2–10 giây, dùng định dạng được hỗ trợ cho tệp tải lên chính. Tên và mẫu được cung cấp cùng nhau để liên kết các đoạn với người nói đã biết.\n\nHãy chuẩn bị mẫu có rõ giọng của người nói dự kiến và giữ tên nhất quán với các nhãn mong muốn trong bản chép lời. Với phỏng vấn, mẫu của người dẫn có thể giúp tổ chức kết quả có nhãn người nói mà không biến mọi người tham gia thành nhãn ẩn danh. Mẫu là đầu vào để quy lời cho người nói; nó không phải thao tác nhân bản giọng nói tổng quát hay bằng chứng về danh tính một người.\n\nĐừng nhầm đặt tên người nói với chỉnh sửa những từ đã được nói. Đầu ra hữu ích vẫn cần giữ nội dung bản ghi và thứ tự lượt nói thực tế.\n\n### Chia đoạn và giới hạn mô hình\n\nVới âm thanh dài hơn 30 giây, nhà sản xuất yêu cầu chiến lược chia đoạn, bằng chia đoạn tự động hoặc cấu hình phát hiện hoạt động giọng nói. Yêu cầu này không phải thời lượng ghi âm tối đa. Nó mô tả cách đầu vào dài hơn được chia để xử lý.\n\nThẻ mô hình liệt kê cửa sổ ngữ cảnh 16,000 token và đầu ra tối đa 2,000 token. Đây là giới hạn token của mô hình, tách biệt với giới hạn tải tệp 25 MB và ngưỡng chia đoạn của quy trình tệp. Không nên đổi chúng thành số phút tự đặt áp dụng cho mọi bản ghi.\n\nHãy giữ mốc thời gian và định danh đoạn khi ghép hoặc kiểm tra bản chép lời dài hơn. Nếu bản ghi đã được chia trước khi gửi, hãy giữ liên hệ của từng phần với âm thanh gốc để không nhầm dấu thời gian cục bộ với vị trí trong toàn bộ hội thoại.\n\n### Truyền phát các đoạn đã hoàn tất\n\nQuy trình chép lời tệp có thể truyền phát văn bản trong khi xử lý bản ghi. Khi truyền phát với nhãn người nói, đoạn đã hoàn tất phát ra sự kiện đoạn. Các phần văn bản tăng thêm có mã định danh đoạn nhưng không chứa thông tin gán người nói tạm thời; người nói được gán khi đoạn hoàn tất.\n\nSự phân biệt này quan trọng khi hiển thị. Hãy thể hiện văn bản tạm thời và lượt nói đã hoàn tất như hai trạng thái khác nhau, thay vì gắn nhãn người nói chưa chắc chắn trước khi mô hình hoàn tất đoạn. Giữ kết quả hoàn chỉnh khi cần bản chép lời để chỉnh sửa hoặc phân tích về sau.\n\n### Phạm vi mô hình và đầu ra\n\nHồ sơ này là mô hình phân đoạn theo người nói, tách biệt với chép lời GPT-4o thông thường, chép lời Mini, tổng hợp giọng nói và các mô hình hội thoại trực tiếp. Mô hình không hỗ trợ prompt chép lời; hãy giữ việc rà soát hoặc sửa thuật ngữ thành bước riêng, kiểm tra theo âm thanh gốc. Giao diện của nhà sản xuất chép lời từ âm thanh đã ghi thành văn bản. Mô hình không tạo phản hồi âm thanh hoặc dịch bản ghi qua quy trình dịch âm thanh riêng.\n\nHãy dùng mô hình cho bản chép lời cần cả nội dung lẫn cấu trúc người nói. Kiểm tra tên, thuật ngữ kỹ thuật, con số, ranh giới lượt nói và việc quy lời cho người nói theo bản ghi. Giữ âm thanh, định dạng kết quả đã chọn, mẫu tham chiếu và bản chép lời hoàn chỉnh để lần sửa có thể tập trung vào một cụm từ cụ thể hoặc một lần gán người nói.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "available": null,
    "canonical_model": "openai/gpt-4o-transcribe-diarize",
    "capabilities": {
      "context_length": 16000,
      "manufacturer_input": [],
      "manufacturer_output": []
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ],
        "summary": "Giá theo cấu hình được trình bày đầy đủ trong phần chi tiết."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "transcriptions"
    ],
    "id": "openai/gpt-4o-transcribe-diarize",
    "input": [
      "audio"
    ],
    "kind": "unresolved_method_or_category",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "errors": [
              {
                "code": null,
                "condition": "Trường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ",
                "http_status": 400,
                "recovery": "Sửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Phản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra",
                "http_status": null,
                "recovery": "Giữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Giữ lại operation_id/X-Client-Request-ID gốc để đối soát mà không gửi lại yêu cầu; không có tuyến truy vấn trạng thái riêng cho âm thanh."
            },
            "limits": {
              "decoded_audio_max_bytes": 26214400
            },
            "material_combinations": [
              {
                "content_type": "multipart/form-data",
                "file_formats": [
                  "mp3"
                ],
                "maximum_seconds": 30,
                "mode": "diarized_transcription"
              }
            ],
            "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": [
              "diarized_transcription"
            ],
            "outputs": {
              "all_results": "Giữ lại toàn bộ JSON, không chỉ văn bản; giữ nguyên mọi đoạn/người nói/dấu thời gian hiện có và mã định danh tác vụ/tài sản thực tế.",
              "family": "transcription",
              "fields": [
                {
                  "description": null,
                  "name": "text",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[]",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "asset_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "segments[].speaker",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "segments[].start",
                  "type": "number"
                },
                {
                  "description": null,
                  "name": "segments[].end",
                  "type": "number"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o-transcribe-diarize"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "file_extension": ".mp3",
                "maximum_bytes": 26214400,
                "maximum_seconds": 30,
                "mime_types": [
                  "audio/mpeg"
                ],
                "name": "file",
                "required": true,
                "type": "file"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "diarized_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "JSONinput_audio",
              "nonMP3",
              "audioover30seconds",
              "otheroptions"
            ]
          },
          "hints": [
            "Dùng bản ghi âm thực tế và định dạng phù hợp.",
            "Giữ lại toàn bộ bản phiên âm, các đoạn, ID người nói và thông tin thời gian."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "multipart/form-data",
            "file_formats": [
              "mp3"
            ],
            "form_string_maximum_bytes": 256,
            "material_types": [
              "audio"
            ],
            "max_audio_seconds": 30,
            "max_bytes": 26214400,
            "other_options": false,
            "required": [
              "model",
              "file",
              "response_format"
            ],
            "response_format": [
              "diarized_json"
            ]
          },
          "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": "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/transcriptions"
          },
          "method_aliases": [
            "/audio/transcriptions"
          ],
          "operation_modes": [
            "diarized_transcription"
          ],
          "output": {
            "all_results": "Retain complete JSON, not only text; preserve every available segment/speaker/timestamp and actual task/asset identity.",
            "family": "transcription",
            "fields": [
              {
                "description": null,
                "name": "text",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[]",
                "type": "object"
              },
              {
                "description": null,
                "name": "task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "asset_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object"
              },
              {
                "description": null,
                "name": "segments[].speaker",
                "type": "string"
              },
              {
                "description": null,
                "name": "segments[].start",
                "type": "number"
              },
              {
                "description": null,
                "name": "segments[].end",
                "type": "number"
              }
            ],
            "format": "json",
            "owned_result_extra_fields": [
              "task_id",
              "asset_url"
            ],
            "preserve_original_json_fields": [
              "text",
              "task",
              "duration",
              "segments",
              "usage"
            ],
            "segment_fields": [
              "type",
              "text",
              "speaker",
              "start",
              "end",
              "id"
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual MP3 recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport os\nfrom pathlib import Path\np=Path(os.environ[\"AILOOT_AUDIO_FILE\"])\nif not p.is_file() or p.suffix.lower()!=\".mp3\":raise SystemExit(\"Choose an existing MP3 recording\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" \\\n  --form-string model=openai/gpt-4o-transcribe-diarize -F \"file=@$AILOOT_AUDIO_FILE\" --form-string response_format=diarized_json \\\n  -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text())))\nPY_RESULT\n",
            "label": "curl · exact retained creation",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('result.json').read_text())\nurls=[]\nif isinstance(r.get('asset_url'),str) and r['asset_url']:urls.append(('transcript',r['asset_url']))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every returned owned transcript",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "Use actual recording and matching format.",
          "Preserve full transcript, segments, speaker IDs and timing."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/audio/transcriptions"
        ],
        "out": null,
        "output": [
          "transcription"
        ],
        "path": "/v1/audio/transcriptions",
        "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_token": 1.2e-05,
            "audio_output_token": 2e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.012000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_token",
                "label": "audio input token",
                "native_amount_usd_per_unit": "0.000012",
                "native_quantity": 1,
                "native_unit": "audio_input_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "/ 1K audio tokens"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.02000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_output_token",
                "label": "audio output token",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "native_unit": "audio_output_token",
                "public_unit_label": "/ 1K audio tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "audio_output_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "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.012000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_token",
            "label": "audio input token",
            "native_amount_usd_per_unit": "0.000012",
            "native_quantity": 1,
            "native_unit": "audio_input_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_token"
          },
          {
            "amount": "0.02000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_output_token",
            "label": "audio output token",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "native_unit": "audio_output_token",
            "public_unit_label": "/ 1K audio tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "audio_output_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-4o-transcribe-diarize",
        "request_model_id": "openai/gpt-4o-transcribe-diarize",
        "route_label": "Ultra"
      }
    ],
    "name": "gpt-4o-transcribe-diarize",
    "price": {
      "in": null,
      "in_label": null,
      "out": 0.02,
      "out_label": "/ 1K audio tokens",
      "sort_in": null,
      "sort_out": 0.02,
      "varies": true
    },
    "pricing_profiles": [],
    "public_id": "openai/gpt-4o-transcribe-diarize",
    "short": "GPT-4o Transcribe Diarize chuyển lời nói đã ghi âm thành văn bản với các đoạn có nhãn người nói và mốc thời gian. Mô hình phù hợp với cuộc họp, phỏng vấn và bản ghi nhiều người, khi bản chép lời cần cho biết ai nói lúc nào, kèm tùy chọn mẫu giọng ngắn cho người nói đã biết."
  },
  "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": "GPT-4o Transcribe Diarize chuyển lời nói đã ghi âm thành văn bản với các đoạn có nhãn người nói và mốc thời gian. Mô hình phù hợp với cuộc họp, phỏng vấn và bản ghi nhiều người, khi bản chép lời cần cho biết ai nói lúc nào, kèm tùy chọn mẫu giọng ngắn cho người nói đã biết.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b9c4495f501c7dde9d55ff452dcf8cf2be0159d1ccd39d195199283057672d46",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "47615f15e6bb1a35cabfe16e9b5a74282fa072ec1696f93371bbab81c4bffaf1"
}
