API phát hiện âm thanh AI
Tài liệu đầy đủ để tích hợp API phát hiện âm thanh AI TruthScan vào ứng dụng.
Thử không cần mã bằng cách truy cập endpoint FastAPI: https://detect-audio.truthscan.com/docs
Xác thực
TruthScan dùng API key để cho phép truy cập API. Bạn lấy API key tại đầu trang trong cổng nhà phát triển.
TruthScan yêu cầu API key trong body mọi yêu cầu API, có dạng sau:
{
"key": "YOUR API KEY GOES HERE"
}Thay YOUR API KEY GOES HERE bằng API key cá nhân của bạn.
Trình phát hiện âm thanh AI
Detect (quy trình 3 bước)
Quy trình phát hiện âm thanh AI gồm các bước sau:
- Lấy URL tải lên đã ký sẵn (pre-signed)
- Tải lên tệp âm thanh
- Gửi âm thanh để phát hiện AI
1. Lấy URL tải lên đã ký sẵn
Yêu cầu URL ký sẵn từ API để tải tệp âm thanh lên máy chủ lưu trữ an toàn.
Định dạng được hỗ trợ
MP3, WAV, M4A, FLAC, OGG, MP4
Lưu ý
Cần xóa khoảng trắng trong tên tệp âm thanh khi yêu cầu URL ký sẵn.
GET https://detect-audio.truthscan.com/get-presigned-url?file_name=example.mp3Ví dụ yêu cầu
curl -X GET 'https://detect-audio.truthscan.com/get-presigned-url?file_name=example.mp3' \
--header 'apikey: YOUR API KEY GOES HERE'Ví dụ phản hồi
{
"status": "success",
"presigned_url": "https://audio-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.mp3...",
"file_path": "/uploads/581d47c7-3ef4-42af-88d9-6dab6bf69389_20250901-090201_example.mp3"
}2. Tải lên âm thanh
Dùng 'presigned_url' để tải lên bằng PUT. Đặt đúng Content-Type theo định dạng.
Lưu ý
Cần xóa khoảng trắng trong tên tệp khi tải lên.
Ví dụ yêu cầu
curl -X PUT 'https://audio-presigned-upload.ai-assets-cdn.com?file_name=581d47c7-3ef4-42af-88d9-6dab6bf69389_20250611-121955_example.mp3...' \
--header 'Content-Type: audio/<FILE_FORMAT - mp3, wav, m4a, flac, ogg, mp4>' \
--header 'x-amz-acl: private' \
--data-binary '@example.mp3' # AttachmentGiới hạn kích thước
- Tối thiểu: 1KB
- Tối đa: 100MB
Giữ nguyên định dạng trong suốt quá trình tải. Tải thành công trả về mã 200.
3. Gửi âm thanh để phát hiện AI
Sau khi tải, gửi âm thanh phát hiện AI với 'file_path' từ bước trước.
POST https://detect-audio.truthscan.com/detectVí dụ yêu cầu
curl -X 'POST' \
'https://detect-audio.truthscan.com/detect' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"key": "YOUR-API-KEY-GOES-HERE",
"url": "<FILE_PATH>",
"document_type": "Audio",
"analyzeUpToSeconds": 60
}''FILE_PATH' là đường dẫn từ phản hồi bước 'Lấy URL tải lên đã ký sẵn'.
Tham số tùy chọn
analyzeUpToSeconds: Phân tích tối đa N giây từ đầu (mặc định: 60)document_type: Loại tài liệu (mặc định: 'Audio')email: Email tùy chọn cho xử lý
Ví dụ phản hồi
{
"id": "77565038-9e3d-4e6a-8c80-e20785be5ee9",
"status": "pending"
}Phản hồi gồm ID duy nhất để theo dõi trạng thái phát hiện.
Truy vấn trạng thái và kết quả
Dùng endpoint /query với ID để kiểm tra trạng thái và lấy kết quả.
POST https://detect-audio.truthscan.com/queryVí dụ yêu cầu
curl -X 'POST' \
'https://detect-audio.truthscan.com/query' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": "ID-GOES-HERE"
}'Ví dụ phản hồi
{
"id": "00fee5ff-a55b-42fb-b7c7-d14f05ae0769",
"status": "done",
"result": 0.873,
"result_details": {
"is_valid": true,
"message": "processed",
"original_duration": 123.45,
"is_truncated": true,
"truncated_duration": 60.0,
"mean_ai_prob": 0.873,
"individual_chunks_ai_prob": [0.81, 0.90, 0.91]
}
}Chi tiết kết quả
is_valid: Tệp âm thanh có hợp lệ hay không (true/false)message: Thông báo xử lýoriginal_duration: Độ dài (giây) của âm thanh gốcis_truncated: Có cắt ngắn để phân tích hay khôngtruncated_duration: Độ dài đã phân tích nếu bị cắtmean_ai_prob: Điểm xác suất AI tổng thểindividual_chunks_ai_prob: Điểm xác suất AI theo từng đoạn
Trường "status" là một trong: "pending" (hàng đợi), "analyzing" (đang phát hiện), "done" (có kết quả), "failed" (thất bại).
Kiểm tra credit người dùng
Endpoint nhận apikey qua header và trả về chi tiết credit.
GET https://detect-audio.truthscan.com/check-user-creditsVí dụ yêu cầu
curl -X 'GET' \
'https://detect-audio.truthscan.com/check-user-credits' \
-H 'apikey: YOUR API KEY GOES HERE' \
-H 'accept: application/json' \
-H 'Content-Type: application/json'Ví dụ phản hồi
{
"baseCredits": 10000,
"boostCredits": 1000,
"credits": 11000
}Kiểm tra sức khỏe
Kiểm tra trạng thái máy chủ API.
GET https://detect-audio.truthscan.com/healthVí dụ yêu cầu
curl -X 'GET' \
'https://detect-audio.truthscan.com/health' \
-H 'accept: application/json'Ví dụ phản hồi
{
"status": "healthy"
}Lỗi
Hầu hết lỗi do tham số gửi sai. Kiểm tra kỹ tham số từng lệnh gọi và thử mã ví dụ.
Mã lỗi chung tuân theo chuẩn REST:
| Mã lỗi | Ý nghĩa |
|---|---|
| 400 | Bad Request — Yêu cầu không hợp lệ. |
| 403 | Forbidden — API key không hợp lệ hoặc không đủ credit xử lý âm thanh. |
| 404 | Not Found — Tài nguyên không tồn tại. |
| 405 | Method Not Allowed — Truy cập tài nguyên bằng phương thức không hợp lệ. |
| 406 | Not Acceptable — Định dạng yêu cầu không phải JSON. |
| 410 | Gone — Tài nguyên tại endpoint này đã bị gỡ. |
| 422 | Invalid Request Body — Body không đúng định dạng hoặc thiếu tham số. |
| 429 | Too Many Requests — Gửi quá nhiều yêu cầu, vui lòng chậm lại. |
| 500 | Internal Server Error — Lỗi máy chủ, thử lại sau. |
| 503 | Service Unavailable — Bảo trì tạm thời, thử lại sau. |
Sự cố thường gặp và cách xử lý
Vấn đề xác thực
"User verification failed" (403)
Nguyên nhân: API key không hợp lệ hoặc hết hạn
Cách xử lý:
- Xác minh API key đúng
- Kiểm tra API key còn hoạt động
- Thử tạo lại API key
"Not enough credits" (403)
Nguyên nhân: Không đủ credit xử lý âm thanh
Cách xử lý:
- Kiểm tra credit bằng /check-user-credits
- Mua thêm credit nếu cần
- Dùng analyzeUpToSeconds để phân tích ít giây hơn, tiêu ít credit hơn
Vấn đề xác thực đầu vào
"Unsupported file format" (400)
Nguyên nhân: Định dạng âm thanh không hỗ trợ hoặc không hợp lệ
Cách xử lý:
- Xác minh định dạng được hỗ trợ (MP3, WAV, M4A, FLAC, OGG, MP4)
- Đảm bảo tệp không hỏng
- Kiểm tra header Content-Type khi tải lên
"File too large" (400)
Nguyên nhân: Vượt giới hạn 100MB
Cách xử lý:
- Nén hoặc chuyển đổi dưới 100MB
- Kiểm tra kích thước trước khi tải
- Ưu tiên định dạng hiệu quả như MP3
Vấn đề xử lý
"Audio processing took too long"
Nguyên nhân: Xử lý quá lâu hoặc timeout
Cách xử lý:
- Thử tệp nhỏ hơn hoặc ngắn hơn
- Dùng analyzeUpToSeconds chỉ phân tích vài giây đầu
- Kiểm tra tải dịch vụ
- Thử lại sau vài phút
Trạng thái "failed" trong phản hồi /query
Nguyên nhân: Xử lý thất bại vì nhiều lý do
Cách xử lý:
- Kiểm tra âm thanh trong khoảng 1KB–100MB
- Xác minh định dạng được hỗ trợ
- Đảm bảo tải lên hoàn tất trước khi gửi phát hiện
- Liên hệ hỗ trợ nếu vẫn lỗi
Vấn đề tải lên
"Audio upload failed" (403/400)
Nguyên nhân: URL ký sẵn không hợp lệ/hết hạn hoặc lỗi máy chủ lưu trữ
Cách xử lý:
- Dùng URL ký sẵn ngay sau khi nhận (có thể hết hạn)
- Xác minh Content-Type đúng định dạng âm thanh
- Xóa khoảng trắng trong tên tệp trước khi tải
- Tạo URL ký sẵn mới nếu hết hạn
"Invalid pre-signed URL" (400)
Nguyên nhân: Tên tệp có khoảng trắng hoặc URL ký sẵn hết hạn/hỏng
Cách xử lý:
- Xóa mọi khoảng trắng trong tên tệp trước khi yêu cầu URL
- Chỉ dùng chữ số, gạch ngang và gạch dưới trong tên tệp
- Tạo URL ký sẵn mới nếu cần
Câu hỏi thường gặp về API
Câu trả lời cho các câu hỏi phổ biến về API phát hiện âm thanh AI.