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.

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

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.

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.

URL cơ sở

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

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à:

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 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

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 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
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.).

Tiêu đề đáp ứng
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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 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

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 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

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

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

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 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 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 phím, BPM, và ký hiệu thời gian.

file fileAudio file to analyze
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í

Biế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. 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

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
}

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
}

Ví dụ mã

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

Python - requests
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

Python - requests
# 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

Python - requests
# 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

JavaScript - fetch
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

JavaScript - fetch
// 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

cURL
# 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

cURL
# 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

cURL
# 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

cURL
# 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.

Định dạng đáp ứng lỗi
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Tình trạng HTTPError CodeMô 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.

Tải Webhook
{
  "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"
}
Kết quả webhook có thể tải về trong 24 giờ sau khi hoàn thành. Hãy chắc chắn là tải về chúng ngay lập tức.

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.