Bỏ qua

API SRT sang giọng nói

Giá cả

10 credits cho mỗi 1.000 ký tự

Chi phí được tính dựa trên tổng số ký tự của tất cả văn bản trong tệp SRT.

Tổng quan

API SRT sang giọng nói chuyển đổi tệp phụ đề SRT thành âm thanh giọng nói đồng bộ. Endpoint này hợp nhất âm thanh được tạo với video gốc hoặc tạo tệp âm thanh độc lập với thời gian khớp với timestamp của phụ đề.

Endpoint

  • URL: POST https://api.revidapi.com/paid/srt-to-speech/merge
  • Method: POST

Yêu cầu

Headers

  • x-api-key: Bắt buộc. API key của bạn để xác thực.
  • Content-Type: Bắt buộc. Phải là application/json.

Tham số Body

Tham số bắt buộc

Tham số Kiểu Mô tả
subtitles array Danh sách phụ đề SRT. Mỗi phần tử: index, start, end, text

Cấu trúc SRTItem:

{
  "index": 1,
  "start": "00:00:00,000",
  "end": "00:00:04,000",
  "text": "Nội dung phụ đề"
}

Tham số tùy chọn

Tham số Kiểu Mô tả
voice_id integer Khuyến nghị. ID giọng nói. Xem tại revidapi.com/text-to-speech/voice-library
speed number Hệ số tốc độ (0.5 đến 2.0). Mặc định: 1.0
audio_name string Tên file audio đầu ra. Mặc định: merged_audio
mode string merge (ghép liền) hoặc timeline (căn theo timeline SRT). Mặc định: merge
add_silence number Thêm khoảng lặng giữa các đoạn (giây). Mặc định: 0.0
webhook_url string (URI) URL để nhận kết quả khi xử lý hoàn tất
id string Mã định danh tùy chỉnh để theo dõi yêu cầu

Ví dụ yêu cầu

Ví dụ tối thiểu (chỉ cần subtitles + voice_id):

{
  "subtitles": [
    {"index": 1, "start": "00:00:00,000", "end": "00:00:04,000", "text": "Đoạn phụ đề đầu tiên"},
    {"index": 2, "start": "00:00:10,000", "end": "00:00:20,000", "text": "Đoạn phụ đề thứ hai"}
  ],
  "voice_id": 3001
}

Ví dụ đầy đủ (như payload n8n đã chạy):

{
  "subtitles": [
    {"index": 1, "start": "00:00:00,000", "end": "00:00:04,000", "text": "Đoạn 1"},
    {"index": 2, "start": "00:00:10,000", "end": "00:00:20,000", "text": "Đoạn 2"}
  ],
  "voice_id": 3001,
  "speed": 1,
  "audio_name": "translated_audio",
  "mode": "timeline"
}

curl -X POST "https://api.revidapi.com/paid/srt-to-speech/merge" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subtitles": [{"index": 1, "start": "00:00:00,000", "end": "00:00:04,000", "text": "Đoạn 1"}],
    "voice_id": 3001,
    "speed": 1,
    "audio_name": "translated_audio",
    "mode": "timeline"
  }'

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 với task_id:

{
  "code": 202,
  "id": "srt-tts-request-123",
  "task_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "processing"
}

Phản hồi thành công (qua Webhook hoặc trực tiếp)

{
  "code": 200,
  "id": "srt-tts-request-123",
  "task_id": "550e8400-e29b-41d4-a716-446655440000",
  "response": {
    "audio_url": "https://tts.revidapi.com/audio/merged_audio.mp3",
    "format": "mp3",
    "duration": 120.5,
    "characters": 5432,
    "engine": "edge",
    "mode": "merge"
  },
  "message": "success"
}

Phản hồi lỗi

Yêu cầu không hợp lệ (400)

{
  "code": 400,
  "id": "srt-tts-request-123",
  "message": "Invalid request: 'subtitles' is a required property"
}

Lỗi xác thực (401)

{
  "code": 401,
  "message": "Invalid API key"
}

Khuyến nghị quy trình làm việc

Đối với xử lý không đồng bộ:

  1. Tạo tác vụ: Gửi yêu cầu POST để tạo tác vụ
  2. Chờ: Thêm node chờ (30-45 giây) để cho phép thời gian xử lý server
  3. Kiểm tra trạng thái: Sử dụng endpoint GET để kiểm tra trạng thái tác vụ: GET https://tts.revidapi.com/api/get/{task_id}
  4. Lấy kết quả: Khi trạng thái là "completed", lấy URL đầu ra từ phản hồi

Ghi chú sử dụng

  1. Đếm ký tự: Credits được tính dựa trên tổng số ký tự của tất cả văn bản trong mảng subtitles (10 credits / 1000 ký tự).
  2. Chế độ merge/timeline: merge – ghép liền mạch, có thể thêm add_silence; timeline – căn theo timeline SRT, tốc độ đọc đồng đều, tổng thời lượng cố định.
  3. Định dạng timestamp: startend theo chuẩn SRT: HH:MM:SS,mmm (ví dụ: 00:00:04,000).
  4. Xử lý Webhook: Khi cung cấp webhook_url, yêu cầu được xử lý không đồng bộ.

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

  1. Định dạng subtitles không hợp lệ: Mỗi phần tử phải có index, start, end, text với timestamp đúng định dạng HH:MM:SS,mmm
  2. Thời gian xử lý: Danh sách phụ đề lớn có thể mất nhiều thời gian hơn để xử lý

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

  1. Sử dụng Webhooks: Luôn sử dụng webhooks để đảm bảo độ tin cậy tốt hơn
  2. ID duy nhất: Cung cấp giá trị id duy nhất để theo dõi
  3. Kiểm tra mảng subtitles: Xác thực mỗi phần tử có đủ index, start, end, text trước khi gửi
  4. Voice ID: Chỉ cần voice_id — lấy tại revidapi.com/text-to-speech/voice-library