Bỏ qua

Tài liệu API Chuyển đổi thành văn bản phương tiện

Giá cả

25 credits cho mỗi yêu cầu

Chi phí cố định bất kể độ dài phương tiện hay kích thước tệp.

Tổng quan

Endpoint Chuyển đổi thành văn bản phương tiện là một phần của bộ API, cung cấp khả năng chuyển đổi âm thanh/video thành văn bản và dịch thuật.

Endpoint

  • URL: https://api.revidapi.com/paid/media/transcribe/srt
  • Method: POST
  • Blueprint: v1_media_transcribe_bp

Yêu cầu

Headers

  • x-api-key: Bắt buộc. Khóa xác thực cho quyền truy cập API.
  • Content-Type: Bắt buộc. Phải là application/json.

Tham số Body

Tham số bắt buộc

  • media_url (string)
  • Định dạng: URI
  • Mô tả: URL của tệp phương tiện cần chuyển đổi thành văn bản

Tham số tùy chọn

  • task (string)
  • Giá trị cho phép: "transcribe", "translate"
  • Mặc định: "transcribe"
  • Mô tả: Chỉ định có chuyển đổi thành văn bản hay dịch âm thanh

  • include_text (boolean)

  • Mặc định: true
  • Mô tả: Bao gồm văn bản chuyển đổi dạng thuần trong phản hồi

  • include_srt (boolean)

  • Mặc định: false
  • Mô tả: Bao gồm phụ đề định dạng SRT trong phản hồi

  • include_segments (boolean)

  • Mặc định: false
  • Mô tả: Bao gồm các đoạn có timestamp trong phản hồi

  • word_timestamps (boolean)

  • Mặc định: false
  • Mô tả: Bao gồm timestamp cho từng từ riêng lẻ

  • response_type (string)

  • Giá trị cho phép: "direct", "cloud"
  • Mặc định: "direct"
  • Mô tả: Có trả về kết quả trực tiếp hay dưới dạng URL cloud storage

  • language (string)

  • Tùy chọn
  • Mô tả: Mã ngôn ngữ nguồn cho việc chuyển đổi thành văn bản

  • webhook_url (string)

  • Định dạng: URI
  • Mô tả: URL để nhận kết quả chuyển đổi thành văn bản không đồng bộ

  • id (string)

  • Mô tả: Mã định danh tùy chỉnh cho công việc chuyển đổi thành văn bản

  • max_words_per_line (integer)

  • Tối thiểu: 1
  • Mô tả: Điều khiển số lượng từ tối đa mỗi dòng trong tệp SRT. Khi được chỉ định, văn bản của mỗi đoạn sẽ được chia thành nhiều dòng với tối đa số lượng từ được chỉ định mỗi dòng.

Ví dụ yêu cầu

curl -X POST "https://api.revidapi.com/paid/media/transcribe/srt" \
  -H "x-api-key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "media_url": "https://example.com/media/file.mp3",
    "task": "transcribe",
    "include_text": true,
    "include_srt": true,
    "include_segments": true,
    "response_type": "cloud",
    "webhook_url": "https://your-webhook.com/callback",
    "id": "custom-job-123",
    "max_words_per_line": 5
  }'

Phản hồi

Phản hồi ngay lập tức (202 Accepted)

Khi cung cấp webhook URL, API trả về xác nhận ngay lập tức:

{
  "code": 202,
  "id": "custom-job-123",
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "processing",
  "pid": 12345,
  "queue_id": 67890,
  "max_queue_length": "unlimited",
  "queue_length": 1,
  "build_number": "1.0.0"
}

Phản hồi thành công (qua Webhook)

Đối với response_type trực tiếp:

{
  "endpoint": "/v1/transcribe/media",
  "code": 200,
  "id": "custom-job-123",
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "response": {
    "text": "Nội dung văn bản đã chuyển đổi...",
    "srt": "Nội dung định dạng SRT...",
    "segments": [...],
    "text_url": null,
    "srt_url": null,
    "segments_url": null
  },
  "message": "success",
  "pid": 12345,
  "queue_id": 67890,
  "run_time": 5.234,
  "queue_time": 0.123,
  "total_time": 5.357,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Đối với response_type cloud:

{
  "endpoint": "/v1/transcribe/media",
  "code": 200,
  "id": "custom-job-123",
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "response": {
    "text": null,
    "srt": null,
    "segments": null,
    "text_url": "https://storage.example.com/text.txt",
    "srt_url": "https://storage.example.com/subtitles.srt",
    "segments_url": "https://storage.example.com/segments.json"
  },
  "message": "success",
  "pid": 12345,
  "queue_id": 67890,
  "run_time": 5.234,
  "queue_time": 0.123,
  "total_time": 5.357,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Phản hồi lỗi

Hàng đợi đầy (429 Too Many Requests)

{
  "code": 429,
  "id": "custom-job-123",
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "MAX_QUEUE_LENGTH (100) reached",
  "pid": 12345,
  "queue_id": 67890,
  "queue_length": 100,
  "build_number": "1.0.0"
}

Lỗi server (500 Internal Server Error)

{
  "endpoint": "/v1/transcribe/media",
  "code": 500,
  "id": "custom-job-123",
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "response": null,
  "message": "Chi tiết thông báo lỗi",
  "pid": 12345,
  "queue_id": 67890,
  "run_time": 0.123,
  "queue_time": 0.056,
  "total_time": 0.179,
  "queue_length": 1,
  "build_number": "1.0.0"
}

Xử lý lỗi

Lỗi phổ biến

  • API Key không hợp lệ: 401 Unauthorized
  • Payload JSON không hợp lệ: 400 Bad Request
  • Thiếu trường bắt buộc: 400 Bad Request
  • media_url không hợp lệ: 400 Bad Request
  • Hàng đợi đầy: 429 Too Many Requests
  • Lỗi xử lý: 500 Internal Server Error

Lỗi xác thực

Endpoint thực hiện xác thực nghiêm ngặt của payload yêu cầu bằng JSON Schema. Các lỗi xác thực phổ biến bao gồm: - Định dạng URI không hợp lệ cho media_url hoặc webhook_url - Giá trị task không hợp lệ (phải là "transcribe" hoặc "translate") - Giá trị response_type không hợp lệ (phải là "direct" hoặc "cloud") - Thuộc tính không xác định trong body yêu cầu

Ghi chú sử dụng

  1. Xử lý Webhook
  2. Khi cung cấp webhook_url, yêu cầu được xử lý không đồng bộ
  3. API trả về phản hồi 202 ngay lập tức với job_id
  4. Kết quả cuối cùng được gửi đến webhook_url khi xử lý hoàn tất

  5. Quản lý hàng đợi

  6. Các yêu cầu với webhook_url được đưa vào hàng đợi để xử lý
  7. Biến môi trường MAX_QUEUE_LENGTH điều khiển kích thước hàng đợi
  8. Đặt MAX_QUEUE_LENGTH thành 0 để kích thước hàng đợi không giới hạn

  9. Quản lý tệp

  10. Đối với response_type cloud, các tệp tạm thời được tự động dọn dẹp
  11. Kết quả được tải lên cloud storage trước khi xóa
  12. URL trong phản hồi cung cấp quyền truy cập vào các tệp đã lưu trữ

  13. Định dạng SRT

  14. Tham số max_words_per_line cho phép kiểm soát số lượng từ tối đa mỗi dòng trong tệp SRT
  15. Khi được chỉ định, văn bản của mỗi đoạn sẽ được chia thành nhiều dòng với tối đa số lượng từ được chỉ định mỗi dòng
  16. Điều này hữu ích để tạo phụ đề dễ đọc hơn với độ dài dòng nhất quán

Vấn đề thường gặp

  1. Truy cập phương tiện
  2. Đảm bảo media_url có thể truy cập công khai
  3. Xác minh định dạng tệp phương tiện được hỗ trợ
  4. Kiểm tra tệp phương tiện có bị hỏng không

  5. Gửi Webhook

  6. Đảm bảo webhook_url có thể truy cập công khai
  7. Triển khai logic thử lại endpoint webhook
  8. Giám sát khả năng sử dụng endpoint webhook

  9. Sử dụng tài nguyên

  10. Tệp phương tiện lớn có thể mất thời gian xử lý đáng kể
  11. Giám sát độ dài hàng đợi cho các triển khai production
  12. Cân nhắc triển khai giới hạn kích thước yêu cầu

Thực hành tốt nhất

  1. Xử lý yêu cầu
  2. Luôn cung cấp id duy nhất để theo dõi công việc
  3. Triển khai logic thử lại webhook
  4. Lưu trữ job_id để tương quan kết quả

  5. Quản lý tài nguyên

  6. Giám sát độ dài hàng đợi trong production
  7. Triển khai xử lý timeout phù hợp
  8. Sử dụng response_type cloud cho tệp lớn

  9. Xử lý lỗi

  10. Triển khai xử lý lỗi webhook toàn diện
  11. Ghi nhật ký job_id với tất cả các hoạt động liên quan
  12. Giám sát thời gian xử lý và tỷ lệ lỗi

  13. Bảo mật

  14. Sử dụng HTTPS cho media_url và webhook_url
  15. Triển khai xác thực webhook
  16. Xác thực loại tệp phương tiện trước khi xử lý

Giá cả

25 credits cho mỗi yêu cầu

Chi phí cố định bất kể độ dài phương tiện hay kích thước tệp.


Kiểm tra Trạng thái Công việc

Sau khi gửi một công việc, bạn có thể kiểm tra trạng thái của nó bằng cách sử dụng job_id được trả về trong phản hồi.

Endpoint

URL Path: https://api.revidapi.com/paid/get/job/status
HTTP Method: POST

Yêu cầu

Headers

  • x-api-key (bắt buộc): API key để xác thực.
  • Content-Type: application/json

Tham số Body

{
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}

Ví dụ Yêu cầu

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"}' \
  https://api.revidapi.com/paid/get/job/status

Phản hồi

Phản hồi Thành công

{
  "endpoint": "/v1/toolkit/job/status",
  "code": 200,
  "id": null,
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
  "response": {
    "job_status": "done",
    "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
    "queue_id": 140368864456064,
    "process_id": 123456,
    "response": {
      "endpoint": "/v1/endpoint/name",
      "code": 200,
      "id": "request-123",
      "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
      "response": "https://cloud-storage.example.com/output.mp4",
      "message": "success",
      "pid": 123456,
      "queue_id": 140368864456064,
      "run_time": 2.345,
      "queue_time": 0.123,
      "total_time": 2.468,
      "queue_length": 0,
      "build_number": "1.0.0"
    }
  },
  "message": "success",
  "pid": 123456,
  "queue_id": 140368864456064,
  "run_time": 0.001,
  "queue_time": 0.0,
  "total_time": 0.001,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Phản hồi Lỗi

  • 404 Not Found: Nếu không tìm thấy công việc với job_id được cung cấp:
{
  "error": "Job not found",
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}
  • 500 Internal Server Error: Nếu xảy ra lỗi không mong muốn:
{
  "error": "Failed to retrieve job status: <error_message>",
  "code": 500
}