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ộ:
- Tạo tác vụ: Gửi yêu cầu POST để tạo tác vụ
- Chờ: Thêm node chờ (30-45 giây) để cho phép thời gian xử lý server
- 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} - 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
- Đế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ự). - Chế độ merge/timeline:
merge– ghép liền mạch, có thể thêmadd_silence;timeline– căn theo timeline SRT, tốc độ đọc đồng đều, tổng thời lượng cố định. - Định dạng timestamp:
startvàendtheo chuẩn SRT:HH:MM:SS,mmm(ví dụ:00:00:04,000). - 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
- Định dạng subtitles không hợp lệ: Mỗi phần tử phải có
index,start,end,textvới timestamp đúng định dạngHH:MM:SS,mmm - 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
- Sử dụng Webhooks: Luôn sử dụng webhooks để đảm bảo độ tin cậy tốt hơn
- ID duy nhất: Cung cấp giá trị
idduy nhất để theo dõi - Kiểm tra mảng subtitles: Xác thực mỗi phần tử có đủ
index,start,end,texttrước khi gửi - Voice ID: Chỉ cần
voice_id— lấy tại revidapi.com/text-to-speech/voice-library