Tài liệu API RytazTTS
API chuyển văn bản tiếng Việt thành giọng nói (model Ngọc Huyền, 24 kHz, chỉ dùng
nghiên cứu/phi thương mại). Mọi request tới /api/tts phải kèm API key hợp lệ.
1. Lấy API key
Liên hệ quản trị viên để được tạo key tại trang /admin (mục “API key”).
Key hiện dạng rtz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx và chỉ hiển thị
một lần lúc tạo — hãy lưu lại ngay, không thể xem lại sau đó (chỉ có thể tạo key mới).
2. Gọi API
Gửi key qua header X-API-Key:
curl -X POST https://tts.rytaz.com/api/tts \
-H "X-API-Key: rtz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"text": "Xin chào, đây là RytazTTS."}' \
--output output.wav
# Python
import requests
resp = requests.post(
"https://tts.rytaz.com/api/tts",
headers={"X-API-Key": "rtz_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={"text": "Xin chào, đây là RytazTTS."},
)
resp.raise_for_status()
open("output.wav", "wb").write(resp.content)
print("RTF:", resp.headers.get("X-RTF"))
# JavaScript (Node / server-side — không gọi trực tiếp từ browser công khai vì sẽ lộ key)
const resp = await fetch("https://tts.rytaz.com/api/tts", {
method: "POST",
headers: {"Content-Type": "application/json", "X-API-Key": "rtz_xxxx..."},
body: JSON.stringify({text: "Xin chào, đây là RytazTTS."}),
});
const buffer = Buffer.from(await resp.arrayBuffer());
require("fs").writeFileSync("output.wav", buffer);
3. Tham số request (JSON body)
| Trường | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
text | string | bắt buộc | Câu cần đọc, tối đa 3000 ký tự |
speed | float | 1.0 | Tốc độ đọc, bị kẹp trong [0.8, 1.2] |
fixed_pauses | bool | false | true = ngắt nghỉ cố định theo dấu câu |
overrides | object | null | Luật đọc tuỳ chỉnh, tối đa 50 cặp — xem /api/overrides |
4. Response
Thành công: file audio/wav kèm header:
X-Processing-Seconds | thời gian xử lý (giây) |
X-Audio-Seconds | độ dài audio (giây) |
X-RTF | real-time factor (xử lý / độ dài audio, càng nhỏ càng nhanh) |
X-Characters | số ký tự đã đọc |
5. Lỗi
| Code | Khi nào |
|---|---|
| 401 | Thiếu X-API-Key, key sai, hoặc key đã bị khoá |
| 422 | Thiếu text, không có chữ cái, hoặc vượt 3000 ký tự |
| 429 | Vượt giới hạn — xem mục 6 |
| 503 | Server đang xử lý câu khác, thử lại sau vài giây |
| 500 | Lỗi tổng hợp giọng, thử câu khác |
6. Giới hạn
Mỗi API key: tối đa 30 request / 60 giây. Vượt giới hạn trả về 429
kèm header Retry-After. Cần hạn mức cao hơn thì liên hệ quản trị viên.
7. Bảo mật key
- Không gọi API trực tiếp từ JavaScript chạy trong trình duyệt của người dùng cuối — key sẽ bị lộ trong mã nguồn trang. Luôn gọi từ server của bạn.
- Mỗi key chỉ nên dùng cho một ứng dụng/mục đích để dễ theo dõi và khoá riêng khi cần.
- Nghi lộ key: vào
/adminkhoá key cũ và tạo key mới ngay.