Dokumen
Inggabungake TTS.ai ing aplikasi sampeyan nganggo REST API kita. Format sing kompatibel karo OpenAI kanggo migrasi sing gampang.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
URL Dasar
Saben titik pungkasan relatif marang URL dasar iki. Contoné, titik pungkasan TTS ya iku:
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
Ngganti teks dadi swara. Kembalikan file audio ing format sing dibutuhaké.
Badan pitakonan
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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 -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 Format tanggal diwatesi kanggo The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
Interpreter Input Diucapake 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 mdy kanggo basa Inggris lan dmy ing papan liya; ganti karo format=\{
"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
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Conto lengkap
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)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
Prasasti
Transkrip audio dadi teks. Dukung 99 basa kanthi deteksi otomatis.
Badan pitakonan (multipart/form-data)
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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
{
"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
Nyiptakaké pidato ing swara kloning. Ngundhuh referensi audio lan teks.
Badan pitakonan (multipart/form-data)
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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
Konversi audio dadi swara kang beda. Unggah sumber audio lan pilih swara target.
Badan pitakonan (multipart/form-data)
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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 -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
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èter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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
{
"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
Transformasi gaya pangucapan, emosi, utawa pangiriman nalika tetep isiné. Migunakaké kanggo nyetel ton, pacing, lan ekspresi.
Badan pitakonan (multipart/form-data)
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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.
Akèh-akèhé digawé saka bahan-bahan alami, kaya ta: godhong, wiji, lan woh-wohan.
| file file | Berkas audio kanggo dioptimalake |
| denoise boolean | Aktifake denoisising (piawai: bener) |
| enhance_clarity boolean | Ngluwihi kajelasan swara (piranti loropaken: bener) |
| super_resolution boolean | Ningkat kualitas audio (latar mburi: salah) |
| strength integer | 1-3 (cetha, menengah, kuat). Lawas: 2 |
Saliyané iku, ana uga vokal sing dipisahaké saka instrumen (vokal removal) utawa dipisahaké ing stem.
| file file | Berkas audio kanggo dipisahake |
| model string | demucs (default) utawa spleeter |
| stems integer | Jumlah batang: 2, 4, 5, utawa6(piawai: 2) |
| format string | Format output: wav, mp3, flac |
Dhèwèké misuwur amarga karyané ing babagan rekaman audio.
| file file | Berkas audio kanggo diproses |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analyze audio kanggo ndeteksi key, BPM, lan time signature.
| file file | Berkas audio kanggo dianalisis |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konversi audio antar format.
| file file | Berkas audio kanggo dikonversi |
| format string | Format target: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate output ing kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Kutha iki ndunungi 220.448 jiwa. |
| channels string | mono utawa stereo |
Sesambetan
Saliyané iku, dhèwèké uga dadi panulis lan juru basa basa Inggris.
Badan pitakonan (multipart/form-data utawa JSON)
| Paramèter | Tipe | Diperlukan | Keterangan |
|---|---|---|---|
| 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
{
"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
Nyedhiyakaké tèks kang akèh kanggo ngasilaké TTS paralel. Opsional nampa callback webhook nalika kabèh tugas rampung.
Paramèter
| Paramèter | Tipe | Keterangan |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | URL pilihan kanggo POST asil nalika batch rampung. |
Balasan
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Progres Poll karo GET /v1/tts/batch/result/?batch_id=abc123
Penyambungan swara
Pre-kalkulasi swara kang diundhuh saka referensi audio. Migunakaké embed_id kang dikembalikan ing panjaluk kloning swara sabanjuré kanggo ngasilaké langsung.
Paramèter
| Paramèter | Tipe | Keterangan |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Balasan
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Periksa Kaséhatan
Priksa status penjelajah GPU, modél kang diundhuh, lan ukuran gulungan. Ora mbutuhaké otentikasi. Disimpen ing cache kanggo 30 detik.
Balasan
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Daftar Model
Kembalikan dhaptar sadaya modél ingkang wonten kaliyan kapabilitasipun.
Balasan
{
"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
Kembalikan dhaptar saka kabeh swara kang ana, kanthi pilihan disaring miturut modél utawa basa.
Paramèter pitakon
| Paramèter | Tipe | Keterangan |
|---|---|---|
| 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
{
"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
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èter | Diperlukan | Keterangan |
|---|---|---|
| uuid | Ya | Dhèwèké tau main ing filem-filem kaya ta: 1001 Nights, V1, lan 1001 Nights. |
| format | Ora | srt (default) utawa vtt. |
| download | Ora | 1 kanggo ngirim Content-Disposition: attachment supaya browser nyimpen tinimbang ngasilaké. |
| language | Ora | Tip kanggo modél panyelarapan (ditemokaké kanthi otomatis yèn ora dilebokake). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Kamus Panulisan anyar
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èter | Tipe | Keterangan |
|---|---|---|
| word | string | Kata ingkang kedah dipun-ganti (misalnya GIF, Anthropic). Warna-batas tembung sarujuk. |
| replacement | string | Ing basa Inggris, tembung iki bisa dijupuk saka tembung "code" (kode) lan "code" (kode). |
| language | string | Kode ISO pilihan. Kosong = ditrapake kanggo kabèh basa. |
| case_sensitive | boolean | false pitadosan. Ngganti aksara cilik/besar nalika true. |
# 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 tag tunggal ing kaca artikel lan pengunjung njaluk bar pembaca fiksi sing narasi kaca ing klik. Auto-deteksi awak artikel, nyokong swara custom / model / posisi / warna accent.
<script src="https://tts.ai/narrator.js"
data-pk="pk-tts-your-publishable-key"
data-voice="af_bella"
data-model="kokoro"
data-extract="auto"
data-position="bottom"
data-color="#e60000"
data-locale="en"></script>
Opsi
| Paramèter | Keterangan |
|---|---|
data-pk | Kunci ingkang saged dipunpublikasikaken (pk-tts-...). Penghambatan domain dipuntepangaken liwat medan allowed_domains kunci. |
data-voice | ID swara. Lawas af_bella. |
data-model | Tembung "kokoro" iku asalé saka basa Jepang kokoro. |
data-extract | auto (piranti loropaken) — nyoba artikel/main/.post-content/.entry-content pemilih, mudhun bali menyang paling dense paragraf cluster. Utawa nyedhiyani sembarang CSS pemilih kanggo target elemen spesifik. |
data-position | bottom (piranti lunak) utawa top. |
data-color | Warna aksén (warna CSS apa waé). Lawas #e60000. |
data-min-chars / data-max-chars | Lenggahi bar yèn artikel luwih cekak tinimbang min-characters (piranti lunak 200). Cap input ing max-characters (piranti lunak 50,000). |
Widget tombol Listen
Ing-garis-gaya-tombol-ngambah. Dirender ing sakiwa-tengené tag lan mainake snippet cekak kang diwiwiti tombol. Bentuké beda saka Narator Artikel ing ndhuwur (sing kanthi otomatis nyelehake bar page-spanning lan nyritakaké kabèh artikel).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Suara sing disimpan (Klon Persisten)
Ngundhuh referensi audio sepisanan, njaluk balik voice_id kang persisten, banjur ngundhuh id iku ing panjaluk TTS tinimbang ngundhuh maneh audio saben panjaluk. Ideal kanggo integrasi volume dhuwur.
Ngunduh swara
POST
https://tts.ai/api/v1/user-voices/
Otentikasi dibutuhake
Formulir multi-bagian. Medan: file (dibutuhaké, 5-30s audio), jeneng (dibutuhaké), basa (opsional, pigura en), modél (opsional — milih kanthi otomatis cosyvoice2 kanggo zh/ja/ko yen ora openvoice), consent_confirmed (dibutuhaké, nilai truthy apa wae).
curl -X POST https://tts.ai/api/v1/user-voices/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@reference.wav" \
-F "name=My Narrator" \
-F "language=en" \
-F "consent_confirmed=true"
# Response:
{
"public_id": "uv_a1b2c3d4e5f6",
"id": 42,
"name": "My Narrator",
"model_name": "openvoice",
"language": "en",
"reference_audio_url": "https://tts.ai/media/user-voices/....wav",
"storage_status": "active",
"created_at": "2026-04-17T03:45:00+00:00"
}
Gunake swara sing disimpan ing TTS
POST menyang /api/v1/tts/ (CIRI: web VPS host, ora api.tts.ai) karo user_voice_id. Kita bakal ngunduh audio lan rute sing disimpan menyang pipa kloning.
curl -X POST https://tts.ai/api/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'
# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.
Seret / hapus
GET https://tts.ai/api/v1/user-voices/ # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6
Arsip / aktif maneh (gratis)
Arsip swara tetep ana ing akunmu nanging ora bisa digunakake ing TTS. Maguna kanggo pangguna pungkasan kang ora aktif supaya dhaptarmu tetep resik.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Conto Kode
Teks-ka-waca
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')}")
Prasasti
# 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"])
Kloning swara
# 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)
Teks-ka-waca
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();
Prasasti
// 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);
Teks-ka-waca
# 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
Prasasti
# 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"
Kloning swara
# 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
Peningkatan Audio
# 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
Kode Kesalahan
Kabeh kegagalan mbalekake balasan JSON karo error lapangan.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Status HTTP | Kode Kesalahan | Keterangan |
|---|---|---|
| 400 | bad_request |
Paramèter panjaluk ora sah. Priksa pesen kesalahan kanggo rincian. |
| 401 | unauthorized |
Kunci API kang ora ana utawa ora sah. |
| 402 | insufficient_credits |
Ora cukup kredit. Tuku luwih ing /pricing/. |
| 403 | forbidden |
Sampeyan ora duwe ijin kanggo ngakses sumber daya iki (kayata polling tugas pangguna liya). Akses API dhewe kalebu ing saben rencana. |
| 404 | not_found |
Model utawi swara boten kapanggih. |
| 413 | file_too_large |
Fayl kang diunggah ngluwihi wates ukuran. |
| 429 | rate_limited |
Akèh pitakonan. Priksa header wates laju. |
| 500 | internal_error |
Kesalahan penjelajah. Coba manèh sadurungé. |
| 503 | model_loading |
Model dipunundhuh. Coba malih ing sapérangan detik. |
Webhooks
Kanggo tugas-tugas kang ora bisa dirampungaké ing wektu sing suwe, sampeyan bisa nyedhiyani parameter webhook_url. Nalika tugas wis rampung, kita bakal POST asil menyang URL sampeyan.
{
"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"
}
Siap kanggo mbangun?
Njupuk kunci API lan wiwiti nggabungake TTS.ai ing aplikasimu.