Dokumen
Ngagabungkeun TTS.ai kana aplikasi anjeun nganggo REST API kami. Format kompatibel OpenAI pikeun migrasi anu gampang.
Gambaran Umum
API TTS.ai nyayogikeun aksés program kana sadaya fitur platform: sintésis teks-ka-wacana, transkripsi basa-ka-wacana, kloning sora, paningkatan audio, sareng sajabana. API nganggo konvensi REST standar sareng awak pamundut / tanggapan JSON.
Kunci API
Njupuk kunci API sampeyan saka Pengaturan Akun. Digunakaké ing industri lan pertambangan.
URL Dasar
https://api.tts.ai/v1/
Autentikasi
Bearer token via Authorization header
Autentikasi
/v1/tts/ kerja tanpa auth, nganti 5,000 karakter / dina saben IP, nggunakake salah siji saka model gratis kita (piper, vits, melotts, kokoro). Sign up for a free account to get 15,000 bonus characters and access to premium models.
Kabeh pitakonan API mbutuhake autentikasi liwat token Bearer ing Authorization header.
Authorization: Bearer sk-tts-your-api-key-here
SDK
SDK resmi ngamungkinkeun gampang ngagabungkeun TTS.ai kana aplikasi anjeun. Keduanya sumber terbuka dan tersedia di 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
Kabeh titik pungkasan relatif marang URL dasar iki. Contone, titik pungkasan TTS ya iku:
Batas kecepatan
API watesan kacepetan beda-beda miturut rencana:
| Plane | Takon/menit | Sampurna | Panjang Teks Maksimum |
|---|---|---|---|
| Bebas | 10 | 2 | 500 karakter |
| Pemula | 30 | 3 | 1,000,000 aksara |
| Pro | 60 | 5 | 1,000,000 aksara |
| Enterprise | 300 | 20 | 50,000 aksara |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Penggunaan aksara
| Layanan | Biaya | Unit |
|---|---|---|
| TTS (model gratis: Piper, VITS, MeloTTS) | 1 кредит | saben 1,000 aksara |
| TTS (model standar: Kokoro, CosyVoice 2, lsp.) | 2,000 karakter | saben 1,000 aksara |
| TTS (model Premium: Tortoise, Chatterbox, lsp.) | 4 кредит | saben 1,000 aksara |
| Suara menyang Teks | 2,000 karakter | per minute of audio |
| Kloning Suara | 4 кредит | saben 1,000 aksara |
| Pengubah SuaraName | 3 кредит | per minute of audio |
| Tambahan Audio | 2,000 karakter | per minute of audio |
| Voice Removal / Stem Splitting | 3-4 kredit | per minute of audio |
| Terjemah | 5 кредит | per minute of audio |
| Chat Suara | 3 кредит | per turn |
| Pencari Kunci & BPM | Bebas | -- |
| Аудио конвертер | Bebas | -- |
Teks-ka-waca
Ngowahi teks dadi swara. Ngembalikeun file audio nganggo format anu dibutuhkeun.
Tubuh Panggonan
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| model | string | Ora | Model ID (misal, kokoro, chatterbox, piper) |
| text | string | Iya | Teks kanggo dikonversi dadi swara (maksimum 5,000 aksara kanggo Pro, 50,000 kanggo Enterprise) |
| voice | string | Iya | ID Suara (gunakake /v1/voices/ kanggo nyaring suara-suara sing ana) |
| format | string | Ora | Bentuk output: mp3 (piawai), wav, flac, ogg |
| speed | float | Ora | Multiplier kecepatan ngomong. Piawai: 1.0. Jarak: 0.5 nganti 2.0 |
| language | string | Ora | Kode basa (misalna, en, es). Dideteksi sacara otomatis lamun diabaikan. |
| instructions | string | Ora | Akting / pengiriman cues (≤500 karakter). contone |
| pronunciations | object | array | Ora | Pangucapan saben panjaluk diwaca. {\ |
| stream | boolean | Ora | Aktifake balasan streaming. Piawai: 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
Tag SSML
Nglebur angka, tanggal, mata uang, nomer telpon, lan singkatan ing Format tanggal diwatesi dadi 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
tafsirkan Input Diucapkan minangka 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 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.Full example
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.
Suara menyang Teks
Nerjemahkeun audio kana teks. Dukungan 99 basa kalayan deteksi otomatis.
Tubuh Panggonan (multipart/form-data)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| file | file | Iya | File audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Ora | STT model: whisper (piawai), faster-whisper, sensevoice |
| language | string | Ora | Kode basa. auto pikeun deteksi otomatis (default). |
| timestamps | boolean | Ora | Ngemot tanda wektu tingkat tembung. Piawai: false |
| diarize | boolean | Ora | Aktifake diarisasi pembicara. Piawai: 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 Suara
Ngembangake swara kloning. Ngunggah audio lan teks referensi.
Tubuh Panggonan (multipart/form-data)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| reference_audio | file | Iya | Referensi swara audio (10-30 detik dianjurake). Max 20MB. |
| text | string | Iya | Teks kanggo diucapake nganggo swara kloning. |
| model | string | Ora | Model klon: chatterbox (piawai), cosyvoice2, gpt-sovits |
| format | string | Ora | Bentuk hasil: mp3 (piawai), wav, flac |
| language | string | Ora | Kode basa target. Kudu didukung ku model anu dipilih. |
Balasan
Balikkeun berkas audio minangka data biner, sami sareng titik akhir TTS.
Pengubah SuaraName
Ngowahi audio dadi swara sing beda. Unggah audio sumber lan pilih swara target.
Tubuh Panggonan (multipart/form-data)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| file | file | Iya | Berkas audio sumber (MP3, WAV, FLAC). Maksimum 50MB. |
| target_voice | string | Iya | ID suara target kanggo dikonversi (gunakan /v1/voices/ kanggo nyaring suara-suara sing ana) |
| model | string | Ora | Model konversi swara: openvoice (piawai), knn-vc |
| format | string | Ora | Bentuk hasil: 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 file audio yang dikonversi sebagai data biner.
Terjemah
Terjemahkeun audio anu diucapkeun ti hiji basa ka basa séjén. Ngagabungkeun pangucap-ka-teks, panerjemahan, jeung teks-ka-pangucap dina hiji telepon.
Tubuh Panggonan (multipart/form-data)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| file | file | Iya | Berkas audio sumber ing basa asli. Maksimum 100MB. |
| target_language | string | Iya | Kode basa target (kayata, es, fr, de, ja) |
| voice | string | Ora | Suara kanggo output terjemahan. Dipilih sacara otomatis yen ora ana. |
| preserve_voice | boolean | Ora | Coba kanggo nyimpen pembicara 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
Ngarobah gaya pangucapan, emosi, atawa pangiriman bari ngajaga isina. Mampuh pikeun ngaluyukeun nada, laju, jeung ekspresi.
Tubuh Panggonan (multipart/form-data)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| file | file | Iya | Fail audio swara sumber. Maksimum 50MB. |
| voice | string | Iya | ID suara target kanggo pidato hasil |
| model | string | Ora | Model: openvoice (piawai), chatterbox |
| emotion | string | Ora | Emosi target: neutral, happy, sad, angry, excited |
| speed | float | Ora | Pangowahan kecepatan. Piawai: 1.0. Jarak: 0.5 nganti 2.0 |
Balasan
Kembalikan berkas audio sing ditransformasi minangka data biner.
Alat Audio
Digunakaké kanggo nyegah gangguan pernafasan, nyeri sirah, nyeri punggung, lan liya-liyane.
Ngaronjatkeun kualitas audio: denoise, ningkatake kajelasan, resolusi super.
| file file | Fail audio kanggo dioptimalake |
| denoise boolean | Aktifake denoisising (piawai: bener) |
| enhance_clarity boolean | Nambah kejelasan swara (piawai: bener) |
| super_resolution boolean | Ningkatake kualitas audio (piawai: salah) |
| strength integer | 1-3 (cetha, menengah, kuat). Piawai: 2 |
Vokal dipisahkeun tina instrumen (vokal removal) atanapi dipisahkeun kana stems.
| file file | Fayl audio kanggo dipisahkan |
| model string | demucs (:стандарт) utawa spleeter |
| stems integer | Jumlah batang: 2, 4, 5, utawa 6 (piawai: 2) |
| format string | Format hasil: wav, mp3, flac |
Mbusak gema lan reverberasi saka rekaman audio.
| file file | Berkas audio kanggo diolah |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Nganalisis audio kanggo ndeteksi kunci, BPM, lan tanda wektu.
| file file | Fayl 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"]
}
Ngganti audio ing antarane format.
| file file | Fayl 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 | Kacepetan sampel: 22050, 44100, 48000 |
| channels string | mono utawa stereo |
Chat Suara
Kirim audio utawa teks lan nampa tanggapan AI nganggo basa sintetis.
Tubuh Panggonan (multipart/form-data utawa JSON)
| Parameter | Type | Diperlukan | Keterangan |
|---|---|---|---|
| audio | file | Ora* | Input audio (audio utawa text dibutuhake) |
| text | string | Ora* | Input teks (audio utawa teks dibutuhake) |
| voice | string | Ora | Suara kanggo balasan AI. Lawas: af_bella |
| tts_model | string | Ora | Model TTS kanggo balasan. Piawai: kokoro |
| system_prompt | string | Ora | Prompt sistem standar kanggo AI |
| conversation_id | string | Ora | Lanjutkan percakapan yang ada |
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
}
TTS batches
Ngekspor teks ganda kanggo panghasilan TTS paralel. Pilihan nampa callback webhook nalika kabeh tugas rampung.
Parameter
| Parameter | Type | Gambaran |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Balasan
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Poll progress with GET /v1/tts/batch/result/?batch_id=abc123
Ngembangake Suara
Pre-hitungan ngandung sora ti audio rujukan. Gunakeun embed_id anu dikembalikan dina pamundut kloning sora saterusna pikeun ngahasilkeun langsung.
Parameter
| Parameter | Type | Gambaran |
|---|---|---|
| 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
}
Pengujian Kesehatan
Ngetes status pelayan GPU, model anu dimuat, sarta ukuran gulungan. Teu diperlukeun otentikasi. Disimpen salami 30 detik.
Balasan
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Daftar Model
Balikkeun daftar sadaya model anu aya sareng kamampuanna.
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
}
]
}
Daftar Suara
Balikkeun daftar sakabéh sora anu aya, disaring numutkeun model atawa basa.
Parameter Query
| Parameter | Type | Keterangan |
|---|---|---|
| model | string | Sarana miturut ID model (misal, kokoro) |
| language | string | Sarana miturut kode basa (misalne, en) |
| gender | string | Saringan miturut jinis: laki, wanita, 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
}
Суроо-жауап new
Nyiptakeun subtitle anu disinkronisasikeun pikeun sagala tugas TTS anu réngsé. Ngajalankeun panyajan Whisper kana audio sarta balikkeun SRT atawa WebVTT. Hasilna disimpen dina diska supados pamanggilan kadua pikeun uuid anu sami nyaéta maca diska.
Parameter Query
| Parameter | Diperlukan | Keterangan |
|---|---|---|
| uuid | Iya | UUID tugas kang dikembalikan dening /v1/tts/ utawa /v1/voice-clone/. |
| format | Ora | srt (piranti lunak) utawa vtt. |
| download | Ora | 1 kanggo ngirim Content-Disposition: attachment supaya panyungsi nyimpen tinimbang némbongkeun. |
| language | Ora | Tip ka model panyetaraan (ditéwak sacara otomatis lamun dileupaskeun). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Kamus Panulisan new
Nyatakeun mesin TTS kumaha ngaucapkeun kecap-kecap husus. Catatan anu disimpan diterapkeun sacara otomatis kana unggal pancén TTS anu anjeun lakukeun. Batas 200 catetan per akun.
Tubuh Panggonan (POST)
| Parameter | Type | Keterangan |
|---|---|---|
| word | string | Kata kanggo diganti (contona GIF, Anthropic). wates-kata cocog. |
| replacement | string | Cara nulisna kanggo model (misalna jiff, ann THROP ick). |
| language | string | Kode ISO pilihan. Kosong = berlaku kanggo kabeh basa. |
| case_sensitive | boolean | false piawai. Nyambungake huruf gedhé/cekak persis 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-..."
Anjeun ogé bisa ngirim overrides per-permintaan tanpa nyimpen eta — ngawengku pronunciations dina sagala /v1/tts/ panggilan salaku obyék atawa array (tingali TTS endpoint parameters).
Narasi Artikel new
Lebetkeun hiji tag dina kaca artikel mana wae sarta para pengunjung bakal meunangkeun bar maca anu ditetepkeun anu nyaritakeun halaman nalika klik. Ngadeteksi awak artikel sacara otomatis, ngadukung sora / 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>
Pilihan
| Parameter | Keterangan |
|---|---|
data-pk | Kunci anu bisa diterbitkeun (pk-tts-…). Kabentangan domain dilaksanakeun ngaliwatan medan allowed_domains kunci. |
data-voice | ID swara. af_bella piawai. |
data-model | TTS model ID. kokoro standar. |
data-extract | auto (piawai) — nyobaan pemilih artikel/kandungan utama/.kandungan-post/.kandungan-entry, balik deui ka cluster paragraf panggedéna. Utawa ngirim pemilih CSS mana wae pikeun nyambungkeun unsur husus. |
data-position | bottom (piranti lunak) utawa top. |
data-color | Warna aksésori (warna CSS apa wae). Lawas #e60000. |
data-min-chars / data-max-chars | Lebetkeun baris lamun artikelna pondok ti min-characters (laos 200). Cap input at max-chars (laos 50,000). |
Widget tombol Listen
Ngandung gaya tombol-ka-garis. Digambarkeun di samping tag -na sarta maénkeun snippet pondok anu dipikahurungkeun ku tombol. Bentukna béda ti Narator Artikel di luhur (nu otomatis nyetak palang page-spanning sarta nyaritakeun sakumna 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)
Ngaupload audio referensi sakali, meunangkeun voice_id persisten, tuluy ngarefer id éta dina pancén TTS sabalikna ti ngaupload deui audio unggal telepon. Ideal pikeun integrasi volume luhur.
Ngalalekaké suara
POST
https://tts.ai/api/v1/user-voices/
Keterangan dibutuhake
Formulir multi-bagian. Jalur: file (perlu, audio 5-30s), name (perlu), language (opsional, piawai en), model (opsional — milih cosyvoice2 sacara otomatis pikeun zh/ja/ko else openvoice), consent_confirmed (perlu, nilai bener mana waé).
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 ka /api/v1/tts/ (PERHATIAN: web VPS host, lain api.tts.ai) kalawan user_voice_id. Kami ngamuat audio anu disimpan sareng rute ka 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.
Daftar / Buang
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)
Suara anu diarsip tetep dina akun anjeun tapi henteu tiasa dianggo dina TTS. Manfaat pikeun pangguna akhir anu teu aktif supados daftar anjeun tetep bersih.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Contoh 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')}")
Suara menyang Teks
# 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 Suara
# 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();
Suara menyang Teks
// 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
Suara menyang Teks
# 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 Suara
# 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
Tambahan 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 bakal 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 |
Parameter panjaluk ora sah. Priksa kabar ralat kanggo rincian. |
| 401 | unauthorized |
Kunci API ilang utawa ora valid. |
| 402 | insufficient_credits |
Ora cukup kredit. Tuku luwih ing / pricing /. |
| 403 | forbidden |
Anjeun teu boga ijin pikeun ngakses sumber daya ieu (misalna, polling tugas pamaké séjén). Akses API sorangan diasupkeun kana unggal rencana. |
| 404 | not_found |
Model utawa swara ora ditemokake. |
| 413 | file_too_large |
Berkas sing diunggah ngluwihi wates ukuran. |
| 429 | rate_limited |
Akeh banget panjaluk. Priksa header wates kecepatan. |
| 500 | internal_error |
Kesalahan pelayan. Coba maneh mengko. |
| 503 | model_loading |
Model lagi dimuat. Coba maneh sawisé sawetara detik. |
Webhooks
Pikeun tugas anu dijalankeun salami lami (pilah-pilah akar, TTS batches), anjeun tiasa nyayogikeun parameter webhook_url. Nalika tugas réngsé, urang bakal POST hasilna ka URL anjeun.
{
"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 miwiti nggabungake TTS.ai menyang aplikasi sampeyan.