Dokumen

Inggabungake TTS.ai ing aplikasi sampeyan nganggo REST API kita. Format sing kompatibel karo OpenAI kanggo migrasi sing gampang.

REST API Kompatibel karo OpenAI Balasan JSON Dukungan streaming

Jembaré

TTS.ai API nawakake akses program kanggo kabeh fitur platform: sintesis teks-kanggo-ucapan, transkripsi teks-kanggo-ucapan, kloning swara, peningkatan audio, lan liya-liyane. API nggunakake konvensi REST standar karo awak permintaan / tanggapan JSON.

Kunci API

Ngundhuh kunci API saka Akun. Dhèwèké miwiti karir ing industri filem lan televisi.

URL Dasar

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

Otoritas

Bearer token liwat Authorization bagéan ndhuwur

Otentikasi

Ing basa Jawa, ora ana tembung kang bisa dijupuk. Post anonim menyang /v1/tts/ kerja tanpa autentikasi, nganti 5,000 karakter/dina saben IP, nganggo salah siji saka model gratis kita (piper, vits, melotts, kokoro). Ing taun 2000, dhèwèké nampa penghargaan 15000 dolar AS kanggo karyané ing bidang sastra.

Saben pitakonan API mbutuhaké otentikasi liwat Bearer token ing Authorization bagéan ndhuwur.

HTTP Header
Authorization: Bearer sk-tts-your-api-key-here
Saliyané iku, dhèwèké uga dadi juru main bal-balan. Aja nyawisaké ing kode klien-sisi, repositori umum, utawa log. Rotasi kunci kanthi rutin saka pangaturan akun sampeyan.

SDK

SDK resmi ndadèkaké gampang kanggo nggabungake TTS.ai ing aplikasi sampeyan. Kabeh sumber terbuka lan kasedhiya ing 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 Dasar

URL Dasar: https://api.tts.ai/v1/

Saben titik pungkasan relatif marang URL dasar iki. Contoné, titik pungkasan TTS ya iku:

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

Batas laju

API rate limits vary by plan:

Planit Panjaluk/menit Konkordan Panjang Teks Maksimal
Bebas 10 2 500 aksara
Pembuka 30 3 1,000,000 karakter
Pro 60 5 1,000,000 karakter
Enterprise 300 20 50,000 karakter

% 1:% 2size in 2^30 bytes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredit

Layanan Biaya Unit
TTS (model bébas: Piper, VITS, MeloTTS) 1,000 karakter saben 1,000 aksara
TTS (model standar: Kokoro, CosyVoice2, etc.) 2 kredit saben 1,000 aksara
TTS (model Premium: Tortoise, Chatterbox, lsp.) 4 kredit saben 1,000 aksara
Prasasti 2 kredit per menit of audio
Kloning swara 4 kredit saben 1,000 aksara
Pengubah SuaraName 3 kredit per menit of audio
Peningkatan Audio 2 kredit per menit of audio
Pemisahan vokal / pemisahan swara 3-4 kredit per menit of audio
Terjemah 5 kredit per menit of audio
Sesambetan 3 kredit saben gulungan
Key & BPM Finder Bebas --
Konversi Audio Bebas --

Teks-ka-waca

POST /v1/tts/

Ngganti teks dadi swara. Kembalikan file audio ing format sing dibutuhaké.

Badan pitakonan

ParamèterTipeDiperlukanKeterangan
model string Ora ID model (kayata, kokoro, chatterbox, piper)
text string Ya Teks kang kudu dikonversi dadi swara (maksimum 5,000 aksara kanggo Pro, 50,000 kanggo Enterprise)
voice string Ya ID swara (gunakaké /v1/voices/ kanggo nyathet swara kang ana)
format string Ora Format output: mp3 (piawai), wav, flac, ogg
speed float Ora Multiplier kecepatan pangucapan. Panggonan: 1.0. Jarak: 0.5 nganti 2.0
language string Ora Kode basa (kayata, en, es). Dideteksi kanthi otomatis yèn ora ana.
instructions string Ora Akting / delivery cues (≤500 karakter). contone \
pronunciations object | array Ora Per-permintaan pangucapan ngliwati. Utawa {\
stream boolean Ora Aktifaké tanggapan streaming. Panggonan: false

Conto pitakonan

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

SSML tag

Nglebur angka, tanggal, mata uang, nomer telpon, lan akronim ing

InterpreterInputDiucapake minangka
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Dhésèmber tiga puluh siji, pitulas sekawan puluh sewu sewu
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

Format tanggal diwatesi kanggo mdy kanggo basa Inggris lan dmy ing papan liya; ganti karo format=\

Conto
{
  "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."
}

Balasan

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.

Conto lengkap

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.

Prasasti

POST /v1/stt/

Transkrip audio dadi teks. Dukung 99 basa kanthi deteksi otomatis.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ora STT model: whisper (default), faster-whisper, sensevoice
language string Ora Kode basa. auto kanggo deteksi otomatis (default).
timestamps boolean Ora Ngandhut timestamp tingkat tembung. Panggonan: false
diarize boolean Ora Aktifaké diarisasi pembicara. Panggonan: false

Balasan

Balasan 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"
    }
  ]
}

Kloning swara

POST /v1/tts/clone/

Nyiptakaké pidato ing swara kloning. Ngundhuh referensi audio lan teks.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
reference_audio file Ya Referensi swara audio (10-30 detik disaranaké). Max 20MB.
text string Ya Teks kanggo ngomong ing swara kloning.
model string Ora Model klon: chatterbox (piawai), cosyvoice2, gpt-sovits
format string Ora Format output: mp3 (piawai), wav, flac
language string Ora Kode basa target. Mesti didhukung déning modél kang dipilih.

Balasan

Kembalikan berkas audio minangka data biner, padha karo titik pungkasan TTS.

Pengubah SuaraName

POST /v1/voice-convert/

Konversi audio dadi swara kang beda. Unggah sumber audio lan pilih swara target.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio sumber (MP3, WAV, FLAC). Maksimum 50MB.
target_voice string Ya ID swara target kanggo dikonversi (gunakaké /v1/voices/ kanggo nyathet swara kang ana)
model string Ora Model konversi swara: openvoice (piranti lunak), knn-vc
format string Ora Format output: wav (piawai), mp3, flac

Conto pitakonan

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

Balasan

Kembalikan berkas audio kang dikonversi dadi data biner.

Terjemah

POST /v1/speech-translate/

Nerjemahaké swara kang diucapaké saka siji basa menyang basa liya. Nggabungaké swara-ka-teks, terjemahan, lan teks-ka-swara ing telpon tunggal.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio sumber ing basa asli. Maksimum 100MB.
target_language string Ya Kode basa target (kayata, es, fr, de, ja)
voice string Ora Suara kanggo output terjemahan. Dipilih kanthi otomatis yèn ora ana.
preserve_voice boolean Ora Ngupayakake nyimpen pamicara asli

Balasan

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

Speech to Speech

POST /v1/speech-to-speech/

Transformasi gaya pangucapan, emosi, utawa pangiriman nalika tetep isiné. Migunakaké kanggo nyetel ton, pacing, lan ekspresi.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Fayl audio swara sumber. Maksimum 50MB.
voice string Ya ID swara target kanggo swara output
model string Ora Model: openvoice (piranti lunak), chatterbox
emotion string Ora Saliyané iku, ana uga tembung-tembung kang asalé saka basa Latin, kaya ta: , , , , .
speed float Ora Setel kacepetan. Panggonan: 1.0. Jarak: 0.5 nganti 2.0

Balasan

Kembalikan berkas audio kang ditransformasi dadi data biner.

Alat Audio

Akèh-akèhé digawé saka bahan-bahan alami, kaya ta sayuran, woh-wohan, lan liya-liyane.

POST /v1/audio/enhance/

Akèh-akèhé digawé saka bahan-bahan alami, kaya ta: godhong, wiji, lan woh-wohan.

file fileBerkas audio kanggo dioptimalake
denoise booleanAktifake denoisising (piawai: bener)
enhance_clarity booleanNgluwihi kajelasan swara (piranti loropaken: bener)
super_resolution booleanNingkat kualitas audio (latar mburi: salah)
strength integer1-3 (cetha, menengah, kuat). Lawas: 2
POST /v1/audio/separate/

Saliyané iku, ana uga vokal sing dipisahaké saka instrumen (vokal removal) utawa dipisahaké ing stem.

file fileBerkas audio kanggo dipisahake
model stringdemucs (default) utawa spleeter
stems integerJumlah batang: 2, 4, 5, utawa6(piawai: 2)
format stringFormat output: wav, mp3, flac
POST /v1/audio/dereverb/

Dhèwèké misuwur amarga karyané ing babagan rekaman audio.

file fileBerkas audio kanggo diproses
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Bebas

Analyze audio kanggo ndeteksi key, BPM, lan time signature.

file fileBerkas audio kanggo dianalisis
Balasan
{
  "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/ Bebas

Konversi audio antar format.

file fileBerkas audio kanggo dikonversi
format stringFormat target: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate output ing kbps: 64, 128, 192, 256, 320
sample_rate integerKutha iki ndunungi 220.448 jiwa.
channels stringmono utawa stereo

Sesambetan

POST /v1/voice-chat/

Saliyané iku, dhèwèké uga dadi panulis lan juru basa basa Inggris.

Badan pitakonan (multipart/form-data utawa JSON)

ParamèterTipeDiperlukanKeterangan
audio file Ora* Input audio (audio utawa text dibutuhake)
text string Ora* Input teks (audio utawa text dibutuhake)
voice string Ora Suara kanggo balasan AI. Panggonan: af_bella
tts_model string Ora Model TTS kanggé balasan. Panggonan: kokoro
system_prompt string Ora Prompt sistem pribadi kanggo AI
conversation_id string Ora Nglanjutake percakapan kang wis ana

Balasan

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

Batch TTS

POST /v1/tts/batch/

Nyedhiyakaké tèks kang akèh kanggo ngasilaké TTS paralel. Opsional nampa callback webhook nalika kabèh tugas rampung.

Paramèter

ParamèterTipeKeterangan
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringURL pilihan kanggo POST asil nalika batch rampung.

Balasan

Balasan JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Progres Poll karo GET /v1/tts/batch/result/?batch_id=abc123

Penyambungan swara

POST /v1/voice-embed/

Pre-kalkulasi swara kang diundhuh saka referensi audio. Migunakaké embed_id kang dikembalikan ing panjaluk kloning swara sabanjuré kanggo ngasilaké langsung.

Paramèter

ParamèterTipeKeterangan
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Balasan

Balasan JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Periksa Kaséhatan

GET /v1/health/

Priksa status penjelajah GPU, modél kang diundhuh, lan ukuran gulungan. Ora mbutuhaké otentikasi. Disimpen ing cache kanggo 30 detik.

Balasan

Balasan JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Daftar Model

GET /v1/models/

Kembalikan dhaptar sadaya modél ingkang wonten kaliyan kapabilitasipun.

Balasan

Balasan 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
    }
  ]
}

Senarai swara

GET /v1/voices/

Kembalikan dhaptar saka kabeh swara kang ana, kanthi pilihan disaring miturut modél utawa basa.

Paramèter pitakon

ParamèterTipeKeterangan
model string Saringan miturut ID model (misalné, kokoro)
language string Saringan miturut kodhe basa (misalné, en)
gender string Saringan miturut jinis: male, female, neutral

Balasan

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

Subtitles (SRT / VTT) anyar

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

Ngembangaken subtitle sing disensoré kanggo tugas TTS kang wis rampung. Ngjalanake Whisper alignment ing audio lan mbalekaké SRT utawa WebVTT. Hasilé disimpen ing diska supaya panjaluk kaping kalih kanggo uuid sing padha iku maca diska.

Paramèter pitakon

ParamèterDiperlukanKeterangan
uuidYaDhèwèké tau main ing filem-filem kaya ta: 1001 Nights, V1, lan 1001 Nights.
formatOrasrt (default) utawa vtt.
downloadOra1 kanggo ngirim Content-Disposition: attachment supaya browser nyimpen tinimbang ngasilaké.
languageOraTip kanggo modél panyelarapan (ditemokaké kanthi otomatis yèn ora dilebokake).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Kamus Panulisan anyar

GET POST DELETE /api/v1/pronunciations/

Nyathet ing mesin TTS cara nyerat tembung-tembung kang ditemtokake. Entri sing disimpan bakal ditrapake kanthi otomatis ing saben panjaluk TTS sing sampeyan lakoni. Batas 200 entri saben akun.

Badan pitakonan (POST)

ParamèterTipeKeterangan
wordstringKata ingkang kedah dipun-ganti (misalnya GIF, Anthropic). Warna-batas tembung sarujuk.
replacementstringIng basa Inggris, tembung iki bisa dijupuk saka tembung "code" (kode) lan "code" (kode).
languagestringKode ISO pilihan. Kosong = ditrapake kanggo kabèh basa.
case_sensitivebooleanfalse pitadosan. Ngganti aksara cilik/besar nalika 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-..."

Ing basa Inggris, tembung "code" bisa dijupuk saka tembung "code" (kode) lan "code" (kode) utawa saka tembung "code" lan "code" (kode).

Pendhaftaran anyar

Nglewati