Tài liệu API
Tổng hợp TTS.ai vào các ứng dụng của bạn với REST API của chúng tôi.
Khám phá
The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.
Chìa khóa API
Lấy chìa khóa API từ Thiết lập tài khoản. Có sẵn trên các kế hoạch Pro và Enterprise.
URL cơ sở
https://api.tts.ai/v1/
Xác thực
Mã mang qua Authorization đầu
Xác thực
Tất cả các yêu cầu API yêu cầu xác thực thông qua một ký hiệu Bearer trong Authorization đầu.
Authorization: Bearer sk-tts-your-api-key-here
URL cơ sở
Tất cả các điểm kết thúc là tương đối với địa chỉ URL cơ sở này. Ví dụ, điểm kết thúc TTS là:
Giới hạn tốc độ
Giới hạn tốc độ API khác nhau tùy theo kế hoạch:
| Kế hoạch | Yêu cầu/ phút | Concurrent | Chiều dài văn bản tối đa |
|---|---|---|---|
| Chuẩn | 60 | 5 | 5000 ký tự |
| Tập đoàn | 300 | 20 | 50.000 ký tự |
Tiêu đề giới hạn tốc độ được bao gồm trong mỗi câu trả lời: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Giá tín dụng
| Dịch vụ | Chi phí | Đơn vị |
|---|---|---|
| TTS (Mẫu miễn phí: Piper, VITS, MeloTTS) | 1 điểm | mỗi 1000 ký tự |
| TTS (Mẫu tiêu chuẩn: Kokoro, CosyVoice 2, vv.) | 2 credits | mỗi 1000 ký tự |
| TTS (Mẫu Premium: Tortoise, Chatterbox, v.v.) | 4 tín hiệu | mỗi 1000 ký tự |
| Từ nói sang văn bảnName | 2 credits | mỗi phút âm thanh |
| Bản sao giọng | 4 tín hiệu | mỗi 1000 ký tự |
| Bộ thay đổi giọng nóiName | 3 credits | mỗi phút âm thanh |
| Tăng cường âm thanh | 2 credits | mỗi phút âm thanh |
| Gỡ bỏ giọng nói / chia cắt thanh điệu | 3-4 điểm | mỗi phút âm thanh |
| Dịch Giọng nóiName | 5 tín hiệu | mỗi phút âm thanh |
| Thảo luận bằng giọng nói | 3 credits | mỗi lượt |
| Tìm nhạc cụ & BPM | Miễn phí | -- |
| Biến đổi âm thanhName | Miễn phí | -- |
Văn bản sang Giọng nóiComment
Chuyển văn bản thành âm thanh nói. Trả lại tập tin âm thanh theo định dạng yêu cầu.
Cơ thể yêu cầu
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| model | string | Phải. | Model ID (ví dụ, kokoro, chatterbox, piper) |
| text | string | Phải. | Văn bản cần chuyển đổi thành giọng nói (tối đa 5. 000 ký tự cho Pro, 50. 000 cho Enterprise) |
| voice | string | Phải. | ID giọng nói (dùng /v1/voices/ để liệt kê giọng nói có sẵn) |
| format | string | Không. | Định dạng xuất: mp3 (mặc định), wav, flac, ogg |
| speed | float | Không. | Bộ nhân tốc độ nói. Mặc định: 1.0. Khoảng: 0.5 đến 2.0 |
| language | string | Không. | Mã ngôn ngữ (ví dụ, en, es). Tự động phát hiện nếu bỏ qua. |
| stream | boolean | Không. | Bật đáp ứng dòng. Mặc định: false |
Yêu cầu ví dụ
curl -X POST https://api.tts.ai/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "kokoro",
"text": "Hello from TTS.ai! This is a test.",
"voice": "af_bella",
"format": "mp3"
}' \
--output output.mp3
Phản hồi
Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498
Từ nói sang văn bảnName
Phiên âm âm thanh thành văn bản. Hỗ trợ 99 ngôn ngữ với tự động phát hiện.
Cơ thể yêu cầu (multipart/form-data)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| file | file | Phải. | Tập tin âm thanh (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Tối đa 100MB. |
| model | string | Không. | Mô hình STT: whisper (mặc định), faster-whisper, sensevoice |
| language | string | Không. | Mã ngôn ngữ. auto cho tự động phát hiện (mặc định). |
| timestamps | boolean | Không. | Gồm dấu thời gian cấp từ. Mặc định: false |
| diarize | boolean | Không. | Bật diarization loa. Mặc định: false |
Phản hồi
{
"text": "Hello, this is a transcription test.",
"language": "en",
"duration": 3.5,
"segments": [
{
"start": 0.0,
"end": 1.8,
"text": "Hello, this is",
"speaker": "SPEAKER_00"
},
{
"start": 1.8,
"end": 3.5,
"text": "a transcription test.",
"speaker": "SPEAKER_00"
}
]
}
Bản sao giọng
Tạo giọng nói bằng giọng nhân bản. Tải lên âm thanh và văn bản tham khảo.
Cơ thể yêu cầu (multipart/form-data)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| reference_audio | file | Phải. | Âm thanh giọng nói tham khảo (khuyến nghị 10-30 giây). Cao nhất 20MB. |
| text | string | Phải. | Text to speak in the cloned voice. |
| model | string | Không. | Mô hình nhân bản: chatterbox (mặc định), cosyvoice2, gpt-sovits |
| format | string | Không. | Định dạng xuất: mp3 (mặc định), wav, flac |
| language | string | Không. | Mã ngôn ngữ mục tiêu. Phải được hỗ trợ bởi mô hình đã chọn. |
Phản hồi
Trả về tập tin âm thanh dưới dạng dữ liệu nhị phân, giống như điểm kết thúc TTS.
Bộ thay đổi giọng nóiName
Chuyển đổi âm thanh thành giọng nói khác. Tải lên âm thanh nguồn và chọn giọng nói mục tiêu.
Cơ thể yêu cầu (multipart/form-data)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| file | file | Phải. | Tập tin âm thanh nguồn (MP3, WAV, FLAC). Tối đa 50MB. |
| target_voice | string | Phải. | Định danh giọng nói mục tiêu để chuyển đổi (dùng /v1/voices/ để liệt kê giọng nói có sẵn) |
| model | string | Không. | Mô hình chuyển đổi giọng nói: openvoice (mặc định), knn-vc |
| format | string | Không. | Định dạng xuất: wav (mặc định), mp3, flac |
Yêu cầu ví dụ
curl -X POST https://api.tts.ai/v1/voice-convert/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@source_audio.mp3" \
-F "target_voice=af_bella" \
-F "model=openvoice" \
-o converted.wav
Phản hồi
Trả về tập tin âm thanh đã chuyển đổi dưới dạng dữ liệu nhị phân.
Dịch Giọng nóiName
Dịch âm thanh nói từ ngôn ngữ này sang ngôn ngữ khác. Gộp nói- sang- văn bản, dịch, và văn bản- sang- nói trong một cuộc gọi duy nhất. Name
Cơ thể yêu cầu (multipart/form-data)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| file | file | Phải. | Tập tin âm thanh nguồn bằng ngôn ngữ gốc. Tối đa 100MB. |
| target_language | string | Phải. | Mã ngôn ngữ mục tiêu (ví dụ, es, fr, de, ja) |
| voice | string | Không. | Giọng nói cho kết quả dịch. Tự động chọn nếu bỏ qua. |
| preserve_voice | boolean | Không. | Cố gắng giữ lại loa gốc |
Phản hồi
{
"original_text": "Hello, how are you?",
"translated_text": "Hola, como estas?",
"source_language": "en",
"target_language": "es",
"audio_url": "https://api.tts.ai/v1/results/translate_abc123.mp3",
"credits_used": 5
}
Giọng nói sang giọng nói
Thay đổi phong cách nói, cảm xúc, hay trình bày mà vẫn giữ được nội dung. Có ích cho việc điều chỉnh âm điệu, nhịp điệu, và tính biểu cảm.
Cơ thể yêu cầu (multipart/form-data)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| file | file | Phải. | Tập tin âm thanh nói nguồn. Tối đa 50MB. |
| voice | string | Phải. | Nhận dạng giọng nói mục tiêu cho giọng nói xuất |
| model | string | Không. | Model: openvoice (mặc định), chatterbox |
| emotion | string | Không. | Cảm xúc mục tiêu: neutral, happy, sad, angry, excited |
| speed | float | Không. | Điều chỉnh tốc độ. Mặc định: 1.0. Khoảng: 0.5 đến 2.0 |
Phản hồi
Trả về tập tin âm thanh biến đổi thành dữ liệu nhị phân.
Công cụ âm thanhName
Điểm kết thúc xử lý âm thanh để tăng cường, loại bỏ giọng nói, chia cắt thân, và nhiều hơn nữa.
Tăng chất lượng âm thanh: loại bỏ nhiễu, cải thiện độ rõ ràng, độ phân giải siêu cao.
| file file | Tập tin âm thanh cần tăng cường |
| denoise boolean | Bật xóa nhiễu (mặc định: đúng) |
| enhance_clarity boolean | Tăng độ rõ giọng nói (mặc định: đúng) |
| super_resolution boolean | Tăng chất lượng âm thanh (mặc định: sai) |
| strength integer | 1- 3 (nhẹ, trung bình, mạnh). Mặc định: 2 |
Tách giọng hát ra khỏi các nhạc cụ (giải phóng giọng hát) hoặc chia thành các cành.
| file file | Tập tin âm thanh cần tách |
| model string | demucs (mặc định) hoặc spleeter |
| stems integer | Số cành: 2, 4, 5, hoặc 6 (mặc định: 2) |
| format string | Định dạng xuất: wav, mp3, flac |
Gỡ bỏ tiếng vang và dội âm từ các bản ghi âm.
| file file | Tập tin âm thanh cần xử lý |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Phân tích âm thanh để phát hiện phím, BPM, và ký hiệu thời gian.
| file file | Audio file to analyze |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Biến đổi âm thanh giữa các định dạng.
| file file | Tập tin âm thanh cần chuyển đổi |
| format string | Định dạng mục tiêu: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Tốc độ bit xuất theo kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Tốc độ lấy mẫu: 22050, 44100, 48000 |
| channels string | mono hoặc stereo |
Thảo luận bằng giọng nói
Gửi âm thanh hoặc văn bản và nhận một phản hồi AI với giọng nói tổng hợp.
Cơ thể yêu cầu (multipart/form-data hoặc JSON)
| Tham số | Kiểu | Cần thiết | Mô tả |
|---|---|---|---|
| audio | file | Không.* | Đầu vào âm thanh (cần audio hoặc text) |
| text | string | Không.* | Nhập văn bản (cần audio hoặc text) |
| voice | string | Không. | Giọng nói cho phản hồi AI. Mặc định: af_bella |
| tts_model | string | Không. | Mô hình TTS cho câu trả lời. Mặc định: kokoro |
| system_prompt | string | Không. | Thông báo hệ thống tùy chỉnh cho AI |
| conversation_id | string | Không. | Tiếp tục cuộc nói chuyện đã có |
Phản hồi
{
"conversation_id": "conv_abc123",
"user_text": "What is the capital of France?",
"ai_text": "The capital of France is Paris.",
"audio_url": "https://api.tts.ai/v1/audio/tmp/resp_xyz.mp3",
"credits_used": 3
}
Danh sách mẫu
Trả lại danh sách tất cả các mô hình có sẵn với khả năng của chúng.
Phản hồi
{
"models": [
{
"id": "kokoro",
"name": "Kokoro",
"type": "tts",
"tier": "standard",
"languages": ["en", "ja", "ko", "zh", "fr"],
"supports_cloning": false,
"supports_streaming": true,
"credits_per_1k_chars": 2
},
{
"id": "chatterbox",
"name": "Chatterbox",
"type": "tts",
"tier": "premium",
"languages": ["en"],
"supports_cloning": true,
"supports_streaming": true,
"credits_per_1k_chars": 4
}
]
}
Danh sách âm thanh
Trả lại danh sách tất cả giọng nói sẵn có, có thể lọc theo mẫu hoặc ngôn ngữ.
Tham số truy vấn
| Tham số | Kiểu | Mô tả |
|---|---|---|
| model | string | Lọc theo ID mô hình (ví dụ, kokoro) |
| language | string | Lọc theo mã ngôn ngữ (ví dụ, en) |
| gender | string | Lọc theo giới tính: male, female, neutral |
Phản hồi
{
"voices": [
{
"id": "af_bella",
"name": "Bella",
"model": "kokoro",
"language": "en",
"gender": "female",
"preview_url": "https://api.tts.ai/v1/voices/preview/af_bella.mp3"
}
],
"total": 142
}
Ví dụ mã
Văn bản sang Giọng nóiComment
import requests
API_KEY = "sk-tts-your-key"
# Text to Speech
response = requests.post(
"https://api.tts.ai/v1/tts/",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "kokoro",
"text": "Hello from TTS.ai!",
"voice": "af_bella",
"format": "mp3"
}
)
with open("output.mp3", "wb") as f:
f.write(response.content)
print(f"Credits used: {response.headers.get('X-Credits-Used')}")
Từ nói sang văn bảnName
# Speech to Text
with open("recording.mp3", "rb") as f:
response = requests.post(
"https://api.tts.ai/v1/stt/",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"file": f},
data={"model": "faster-whisper", "timestamps": "true"}
)
result = response.json()
print(result["text"])
Bản sao giọng
# Voice Cloning
with open("reference.wav", "rb") as ref:
response = requests.post(
"https://api.tts.ai/v1/tts/clone/",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"reference_audio": ref},
data={
"text": "This speech uses a cloned voice.",
"model": "chatterbox"
}
)
with open("cloned_output.mp3", "wb") as f:
f.write(response.content)
Văn bản sang Giọng nóiComment
const API_KEY = 'sk-tts-your-key';
// Text to Speech
const response = await fetch('https://api.tts.ai/v1/tts/', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'kokoro',
text: 'Hello from TTS.ai!',
voice: 'af_bella',
format: 'mp3'
})
});
const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();
Từ nói sang văn bảnName
// Speech to Text
const formData = new FormData();
formData.append('file', audioFile);
formData.append('model', 'faster-whisper');
const response = await fetch('https://api.tts.ai/v1/stt/', {
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}` },
body: formData
});
const result = await response.json();
console.log(result.text);
Văn bản sang Giọng nóiComment
# Text to Speech
curl -X POST https://api.tts.ai/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"model":"kokoro","text":"Hello!","voice":"af_bella","format":"mp3"}' \
-o output.mp3
Từ nói sang văn bảnName
# Speech to Text
curl -X POST https://api.tts.ai/v1/stt/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@recording.mp3" \
-F "model=faster-whisper" \
-F "timestamps=true"
Bản sao giọng
# Voice Cloning
curl -X POST https://api.tts.ai/v1/tts/clone/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "reference_audio=@reference.wav" \
-F "text=This uses a cloned voice." \
-F "model=chatterbox" \
-o cloned.mp3
Tăng cường âm thanh
# Audio Enhancement
curl -X POST https://api.tts.ai/v1/audio/enhance/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@noisy_audio.mp3" \
-F "denoise=true" \
-F "enhance_clarity=true" \
-o enhanced.mp3
Mã lỗi
Tất cả lỗi sẽ trả về một câu trả lời JSON với error Vùng đất.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| Tình trạng HTTP | Error Code | Mô tả |
|---|---|---|
| 400 | bad_request |
Tham số yêu cầu không hợp lệ. Kiểm tra thông điệp lỗi để biết chi tiết. |
| 401 | unauthorized |
Chìa khóa API thiếu hoặc không hợp lệ. |
| 402 | insufficient_credits |
Không đủ điểm. Mua thêm tại /pricing/. |
| 403 | forbidden |
Truy cập API không có sẵn trên gói của bạn. |
| 404 | not_found |
Không tìm thấy mẫu hay giọng nói. |
| 413 | file_too_large |
Tập tin tải lên vượt quá giới hạn kích thước. |
| 429 | rate_limited |
Quá nhiều yêu cầu. Kiểm tra đầu mục giới hạn tốc độ. |
| 500 | internal_error |
Lỗi máy phục vụ. Thử lại sau. |
| 503 | model_loading |
Đang tải mô hình. Thử lại sau vài giây. |
Webhooks
Đối với các nhiệm vụ chạy lâu (splitting stem, batch TTS), bạn có thể cung cấp một tham số webhook_url. Khi nhiệm vụ hoàn thành, chúng tôi sẽ POST kết quả đến URL của bạn.
{
"event": "task.completed",
"task_id": "task_abc123",
"status": "success",
"result_url": "https://api.tts.ai/v1/results/task_abc123",
"credits_used": 12,
"created_at": "2025-01-15T10:30:00Z",
"completed_at": "2025-01-15T10:30:45Z"
}
Sẵn sàng xây dựng chưa?
Lấy chìa khóa API của bạn và bắt đầu tích hợp TTS.ai vào các ứng dụng của bạn.