Tài liệu API

Tạo TTS.ai trong ứng dụng của bạn với REST API của chúng tôi.

API REST Hỗ trợ OpenAI Trả lời JSON Hỗ trợ dòng chảy

Khám phá

API TTS.ai cung cấp truy cập lập trình cho tất cả các tính năng của nền tảng: tổng hợp văn bản thành lời nói, phiên âm từ lời nói thành văn bản, sao chép giọng nói, tăng cường âm thanh, và nhiều hơn nữa.

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ầng miễn phí — không cần khóa. Đăng ẩn danh /v1/tts/ làm việc mà không cần chứng thực, lên đến 5000 ký tự/ngày trên mỗi IP, sử dụng bất kỳ mô hình miễn phí nào của chúng tôi (piper, vits, melotts, kokoro). Đăng ký một tài khoản miễn phí để có 15.000 nhân vật thưởng và truy cập vào các mẫu cao cấp.

Đối với các mẫu cao cấp và giới hạn tốc độ cao hơn, xác thực với một mã Bearer trong Authorization đầu.

Tiêu đề HTTP
Authorization: Bearer sk-tts-your-api-key-here
Giữ chìa khóa API của bạn bí mật. Đừng chia sẻ nó trong mã bên máy khách, kho công cộng, hay bản ghi. Chuyển đổi khóa thường xuyên từ thiết lập tài khoản của bạn.

SDK

Các SDK chính thức giúp dễ dàng tích hợp TTS.ai vào ứng dụng của bạn. Cả hai đều là mã nguồn mở và có sẵn trên GitHub.

Python

pip install ttsai
from tts_ai import TTSClient

client = TTSClient(api_key="sk-tts-...")
audio = client.generate(
    text="Hello world!",
    model="kokoro"
)
client.save(audio, "output.wav")
GitHub

JavaScript / Node.js

npm install @ttsainpm/ttsai
const { TTSClient } = require('@ttsainpm/ttsai');

const client = new TTSClient({
  apiKey: 'sk-tts-...'
});
const audio = await client.generate({
  input: 'Hello world!',
  model: 'kokoro'
});
await client.saveToFile(audio, 'output.wav');
GitHub

URL cơ sở

URL cơ sở: https://api.tts.ai/v1/

Tất cả các điểm cuối đều tương đối với địa chỉ URL cơ sở này. Ví dụ, điểm cuối TTS là:

POST https://api.tts.ai/v1/tts/

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 Đồng thời Chiều dài văn bản tối đa
Tự do 10 2 500 ký tự
Bắt đầu 30 3 1,000,000 characters
Tốt 60 5 1,000,000 characters
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,000 ký tự mỗi 1000 ký tự
TTS (Mẫu tiêu chuẩn: Kokoro, CosyVoice 2, vv.) 2000 ký tự mỗi 1000 ký tự
TTS (Mẫu Premium: Tortoise, Chatterbox, v.v.) 4,000 ký tự mỗi 1000 ký tự
Từ nói sang văn bảnName 2000 ký tự mỗi phút âm thanh
Bản sao giọng 4,000 ký tự mỗi 1000 ký tự
Bộ thay đổi giọng nóiName 3000 ký tự mỗi phút âm thanh
Tăng cường âm thanh 2000 ký tự mỗi phút âm thanh
Gỡ bỏ giọng nói / chia cắt thanh điệu 3,000-4,000 characters mỗi phút âm thanh
Dịch Giọng nóiName 5,000 ký tự mỗi phút âm thanh
Thảo luận bằng giọng nói 3000 ký tự mỗi lượt
Tìm nhạc cụ & BPM Tự do --
Biến đổi âm thanhName Tự do --

Văn bản sang Giọng nóiComment

POST /v1/tts/

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ểuCần thiếtMô tả
model string Không. Mã ID của mẫu (ví dụ, kokoro, chatterbox, piper). Nếu bỏ qua, chúng tôi sẽ tự động chọn một mẫu hỗ trợ language yêu cầu — kokoro cho en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper cho các ngôn ngữ khác được hỗ trợ (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/v.v.).
text string Đoạn văn bản cần chuyển đổi thành giọng nói. Độ giới hạn mỗi yêu cầu: 500 ký tự (nặc danh), 5. 000 (tài khoản miễn phí), 1. 000. 000 (giá trả). Các ký tự nhập dài sẽ được tự động chia nhỏ bên máy chủ.
voice string 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.
instructions string Không. Điều khiển / giao hàng dấu hiệu (≤500 ký tự). ví dụ: \
pronunciations object | array Không. Từ bỏ phát âm theo yêu cầu. Hoặc {\
stream boolean Không. Bật đáp ứng dòng. Mặc định: false

Yêu cầu ví dụ

cURL
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

Thẻ SSML

Lấy số, ngày, tiền tệ, số điện thoại và chữ viết tắt trong

Tìm hiểu chúngĐầu vàoĐược nói như
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31December thirty-first, nineteen ninety-nine
time14:30two thirty PM
telephone+1-555-867-5309plus one five five five eight six seven…
currency$1,234.56one thousand two hundred thirty-four dollars and fifty-six cents
spell-outNASAN A S A

Dạng thức ngày mặc định là mdy cho tiếng Anh và dmy ở nơi khác; thay thế bằng format=\

Ví dụ
{
  "model": "kokoro",
  "voice": "af_bella",
  "text": "Your appointment is on <say-as interpret-as=\"date\">2026-04-26</say-as> at <say-as interpret-as=\"time\">14:30</say-as>. Please call <say-as interpret-as=\"telephone\">+1-555-867-5309</say-as> if you need to reschedule."
}

Phản hồi

The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.

Step 1: Submit request

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Full example

Python
import requests, time

API_KEY = "sk-tts-your-key"
BASE = "https://api.tts.ai"

# 1. Submit TTS request
resp = requests.post(f"{BASE}/v1/tts/", json={
    "model": "kokoro",
    "text": "Hello from TTS.ai!",
    "voice": "af_bella"
}, headers={"Authorization": f"Bearer {API_KEY}"})
data = resp.json()
uuid = data["uuid"]

# 2. Poll for result
while True:
    result = requests.get(f"{BASE}/v1/speech/results/",
        params={"uuid": uuid}).json()
    if result["status"] == "completed":
        # 3. Download audio
        audio = requests.get(result["result_url"])
        with open("output.mp3", "wb") as f:
            f.write(audio.content)
        break
    elif result["status"] == "failed":
        raise Exception(result.get("error", "Generation failed"))
    time.sleep(1.5)

Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.

Từ nói sang văn bảnName

POST /v1/stt/

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ểuCần thiếtMô tả
file file 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

Phản hồi JSON
{
  "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

POST /v1/tts/clone/

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ểuCần thiếtMô tả
reference_audio file Âm thanh giọng nói tham khảo (khuyến cáo 10-30 giây). Hơn 20MB.
text string Đoạn văn bản để nói bằng giọng nói sao chép.
model string Không. Mô hình sao chép: 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

POST /v1/voice-convert/

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ểuCần thiếtMô tả
file file Tập tin âm thanh nguồn (MP3, WAV, FLAC). Tối đa 50MB.
target_voice string Đị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
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

POST /v1/speech-translate/

Dịch âm thanh nói từ ngôn ngữ này sang ngôn ngữ khác. Gộp lại giọng nói thành văn bản, dịch, và văn bản thành giọng 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ểuCần thiếtMô tả
file file Tập tin âm thanh nguồn bằng ngôn ngữ gốc. Tối đa 100MB.
target_language string 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 đặc điểm giọng nói của người nói gốc. Mặc định: false

Phản hồi

Phản hồi JSON
{
  "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

POST /v1/speech-to-speech/

Thay đổi phong cách nói, cảm xúc, hay trình bày trong khi giữ nội dung. Có ích cho điều chỉnh giọng, nhịp điệu, và sự biểu cảm.

Cơ thể yêu cầu (multipart/form-data)

Tham sốKiểuCần thiếtMô tả
file file Tập tin âm thanh nói nguồn. Tối đa 50MB.
voice string Định danh 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.

POST /v1/audio/enhance/

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 fileTập tin âm thanh cần tăng cường
denoise booleanBật xóa nhiễu (mặc định: đúng)
enhance_clarity booleanTăng độ rõ giọng nói (mặc định: đúng)
super_resolution booleanTăng chất lượng âm thanh (mặc định: sai)
strength integer1- 3 (nhẹ, trung bình, mạnh). Mặc định: 2
POST /v1/audio/separate/

Tách giọng từ các nhạc cụ (giải phóng giọng) hoặc chia thành các thân.

file fileTập tin âm thanh cần tách
model stringdemucs (mặc định) hoặc spleeter
stems integerSố cành: 2, 4, 5, hoặc 6 (mặc định: 2)
format stringĐịnh dạng xuất: wav, mp3, flac
POST /v1/audio/dereverb/

Gỡ bỏ tiếng vang và dội âm từ các bản ghi âm.

file fileTập tin âm thanh cần xử lý
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Miễn phí

Phân tích âm thanh để phát hiện nhạc nền, BPM, và dấu thời gian.

file fileTập tin âm thanh cần phân tích
Phản hồi
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Miễn phí

Chuyển đổi âm thanh giữa các định dạng.

file fileTậ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 integerTốc độ bit xuất theo kbps: 64, 128, 192, 256, 320
sample_rate integerTốc độ lấy mẫu: 22050, 44100, 48000
channels stringmono hoặc stereo

Thảo luận bằng giọng nói

POST /v1/voice-chat/

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ểuCần thiếtMô 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. Lệnh 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

Phản hồi JSON
{
  "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
}

TTS theo lô

POST /v1/tts/batch/

Gửi nhiều văn bản để tạo TTS song song. Có thể nhận một cuộc gọi webhook khi tất cả các công việc hoàn thành.

Tham số

Tham sốKiểuMô tả
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Phản hồi

Phản hồi JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Thực hiện cuộc thăm dò với GET /v1/tts/batch/result/?batch_id=abc123

Tạo giọng nói

POST /v1/voice-embed/

Đoán trước một giọng nói nhúng từ âm thanh tham chiếu. Dùng embed_id trả về trong các yêu cầu nhân bản giọng nói tiếp theo để tạo gần như ngay lập tức.

Tham số

Tham sốKiểuMô tả
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Phản hồi

Phản hồi JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Kiểm tra sức khỏe

GET /v1/health/

Kiểm tra trạng thái máy chủ GPU, các mô hình đã tải, và kích thước hàng đợi. Không cần xác thực. Bộ nhớ tạm trong 30 giây.

Phản hồi

Phản hồi JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Danh sách mẫu

GET /v1/models/

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

Phản hồi JSON
{
  "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

GET /v1/voices/

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ểuMô 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

Phản hồi JSON
{
  "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
}

Bộ phụ đề (SRT / VTT) mới

GET /v1/speech/subtitles/?uuid=<job_uuid>&format=srt|vtt&download=1

Tạo phụ đề đồng bộ cho bất kỳ công việc TTS nào đã hoàn thành. Chạy điều chỉnh Whisper trên âm thanh và trả về SRT hoặc WebVTT. Kết quả được lưu trữ tạm trên đĩa, vì vậy một cuộc gọi thứ hai cho cùng một uuid là một đọc đĩa.

Tham số truy vấn

Tham sốCần thiếtMô tả
uuidUUID công việc được trả lại bởi /v1/tts/ hoặc /v1/voice-clone/.
formatKhông.srt (mặc định) hoặc vtt.
downloadKhông.1 để gửi Content-Disposition: attachment để trình duyệt lưu chứ không hiển thị.
languageKhông.Gợi ý cho mô hình đối xứng (tự động phát hiện nếu bỏ qua).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Từ điển phát âm mới

GET POST DELETE /api/v1/pronunciations/

Cho bộ máy TTS biết cách phát âm các từ cụ thể. Các mục đã lưu sẽ tự động áp dụng cho mỗi yêu cầu TTS bạn thực hiện. Giới hạn 200 mục trên mỗi tài khoản.

Cơ thể yêu cầu (POST)

Tham sốKiểuMô tả
wordstringTừ cần thay thế (ví dụ GIF, Anthropic). Từ-biên-tương ứng.
replacementstringCách đánh vần nó cho mô hình (ví dụ jiff, ann THROP ick).
languagestringMã ISO tùy chọn. Trống = áp dụng cho tất cả ngôn ngữ.
case_sensitivebooleanMặc định false. Cùng chữ cái chính xác khi true.
cURL
# Save an entry
curl -X POST https://tts.ai/api/v1/pronunciations/ \
  -H "Authorization: Bearer sk-tts-..." \
  -H "Content-Type: application/json" \
  -d '{"word": "GIF", "replacement": "jiff"}'

# List your entries
curl https://tts.ai/api/v1/pronunciations/ -H "Authorization: Bearer sk-tts-..."

# Delete entry by id
curl -X DELETE "https://tts.ai/api/v1/pronunciations/?id=42" -H "Authorization: Bearer sk-tts-..."

Bạn cũng có thể truyền các thay thế theo yêu cầu mà không cần lưu chúng — bao gồm pronunciations trên bất kỳ cuộc gọi /v1/tts/ nào như một đối tượng hoặc một ma trận (xem các tham số điểm cuối TTS).

Trình kể chuyện bài viết mới

Đặt một thẻ