Dokimantasyon API
Enkòpore TTS.ai nan aplikasyon ou yo ak REST API nou an. OpenAI-kompatib fòma pou migrasyon fasil.
Aperçu
API TTS.ai a bay aksè programatik nan tout karakteristik platfòm la: sintezis tèks-nan-parole, transkripsiyon pale-nan-tèks, klonaj vwa, amelyore son, ak plis ankò.API a itilize konvansyon REST estanda ak kò demann / repons JSON.
Clé API
Jwenn kle API ou soti nan Konfigurasyon kont. Disponib sou plan Pro ak Enterprise.
URL baz
https://api.tts.ai/v1/
Auth
Bearer token via Authorization header
Authentification
/v1/tts/ travay san okenn auth, jiska 5,000 karaktè / jou pa IP, lè l sèvi avèk nenpòt nan modèl nou yo gratis (piper, vits, melotts, kokoro). Enskri pou yon kont gratis pou jwenn 15,000 karaktè bonus ak aksè a modèl prim.
Tout demann API mande pou autentifikasyon via yon Bearer token nan Authorization header.
Authorization: Bearer sk-tts-your-api-key-here
SDKs
Ofisyèl SDKs fè li fasil pou enkòpore TTS.ai nan aplikasyon ou.Tout de yo se sous louvri ak disponib sou 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 baz
Tout pwent bout yo se relativ a URL baz sa a. Pou egzanp, pwent bout TTS la se:
Limit
Limit pousantaj API varye selon plan an:
| Plan | Demands/min | Konpatib | Longè maksimòm tèks |
|---|---|---|---|
| Gratis | 10 | 2 | 500 karaktè |
| Starter | 30 | 3 | 1,000,000 chars |
| Pro | 60 | 5 | 1,000,000 chars |
| Enterprise | 300 | 20 | 50,000 chars |
Entèval limit entèval yo enkli nan chak repons: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Kout kredi
| Sèvis | Koute | Unit |
|---|---|---|
| TTS (Models gratis: Piper, VITS, MeloTTS) | 1 kredi | pou chak 1,000 karaktè |
| TTS (Models estanda: Kokoro, CosyVoice 2, etc.) | 2 kredi | pou chak 1,000 karaktè |
| TTS (Premium modèl: Tortoise, Chatterbox, elatriye) | 4 kredi | pou chak 1,000 karaktè |
| Konvèti pale an tèksName | 2 kredi | per minute of audio |
| Klonaj Vokal | 4 kredi | pou chak 1,000 karaktè |
| Chanjman Voy | 3 kredi | per minute of audio |
| Amelyore son | 2 kredi | per minute of audio |
| Vokal Removal / Stem divizyon | 3-4 kredi | per minute of audio |
| Tradiksyon | 5 kredi | per minute of audio |
| Konvèsasyon Vokal | 3 kredi | per turn |
| Key & BPM Finder | Gratis | -- |
| Audio Convertisseur | Gratis | -- |
Text to SpeechGenericName
Convert text to speech audio. Returns audio file in the requested format.
Kò demann lan
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| model | string | Non | ID modèl la (e.g., kokoro, chatterbox, piper) |
| text | string | Wi | Text to convert to speech (max 5,000 chars for Pro, 50,000 for Enterprise) |
| voice | string | Wi | Voice ID (itilize /v1/voices/ pou lis vwa ki disponib) |
| format | string | Non | fòma devwa: mp3 (pa défaut), wav, flac, ogg |
| speed | float | Non | Multiplier vitès pale. Pa default: 1.0. Range: 0.5 to 2.0 |
| language | string | Non | Kòd lang lan (e.g., en, es). Deteksyon otomatik si li omite. |
| instructions | string | Non | Aksyon / livrezon cues (≤500 karaktè). e. g. < kòd >\ |
| pronunciations | object | array | Non | {\ |
| stream | boolean | Non | Enable streaming response. Default: false |
Ekzanp demann
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
Baliz SSML
Enwodiksyon
| interpret-as | Enfòmasyon | Pale tankou |
|---|---|---|
cardinal | 1234 | one thousand two hundred thirty-four |
ordinal | 21 | twenty-first |
date | 1999-12-31 | December thirty-first, nineteen ninety-nine |
time | 14:30 | two thirty PM |
telephone | +1-555-867-5309 | plus one five five five eight six seven… |
currency | $1,234.56 | one thousand two hundred thirty-four dollars and fifty-six cents |
spell-out | NASA | N A S A |
Date fòma defaults nan mdy pou angle ak dmy ailleurs; override ak 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."
}
Reponn
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
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}
Step 2: Poll for result
Poll this endpoint every 1-2 seconds until status is completed or failed.
{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
{
"status": "processing"
}
Step 3: Download audio
Fetch the 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)
Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
Konvèti pale an tèksName
Transkri audio pou tèks. Soti nan 99 lang ak deteksyon otomatik.
Kò demann lan (multipart/form-data)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| file | file | Wi | Fichiers Audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Non | Modèl STT: whisper (pa défaut), faster-whisper, sensevoice |
| language | string | Non | Kode lang. auto pou deteksyon otomatik (pa défaut). |
| timestamps | boolean | Non | Gen ladann dat/tan nan nivo mo. Pa default: false |
| diarize | boolean | Non | Aktive diarization oratè. Par défaut: false |
Reponn
{
"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"
}
]
}
Klonaj Vokal
Kreye pale nan yon vwa klone. Upload yon referans son ak tèks.
Kò demann lan (multipart/form-data)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| reference_audio | file | Wi | Referans vwa audio (10-30 segonn rekòmande). Max 20MB. |
| text | string | Wi | Text to speak in the cloned voice. |
| model | string | Non | Klone modèl: chatterbox (pa défaut), cosyvoice2, gpt-sovits |
| format | string | Non | fòma devwa: mp3 (pa défaut), wav, flac |
| language | string | Non | Kòd lang objektif la. Li dwe sipòte pa modèl la chwazi. |
Reponn
Retounen dosye son an kòm done binè, menm jan ak pwent bout TTS la.
Chanjman Voy
Convert audio to sound like a different voice. Upload source audio and choose a target voice.
Kò demann lan (multipart/form-data)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| file | file | Wi | Fichiè odyo sous (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Wi | Identifyan vwa pou konvèti nan (itilize /v1/voices/ pou lis vwa ki disponib) |
| model | string | Non | Modèl konvèsyon vwa: openvoice (pa défaut), knn-vc |
| format | string | Non | fòma devwa: wav (pa défaut), mp3, flac |
Ekzanp demann
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
Reponn
Retounen nan dosye son ki te transfòme a kòm done binè.
Tradiksyon
Tradwi odyo pale soti nan yon lang nan yon lòt. Konbine pale-a-tèks, tradiksyon, ak tèks-a-vokal nan yon sèl apèl.
Kò demann lan (multipart/form-data)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| file | file | Wi | Fichiè odyo sous nan lang orijinèl la. Max 100MB. |
| target_language | string | Wi | Kode lang target (e.g., es, fr, de, ja) |
| voice | string | Non | Voy pou rezilta tradiksyon an. Seleksyone otomatikman si li omite. |
| preserve_voice | boolean | Non | Tente pou kenbe oratè orijinal la |
Reponn
{
"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
}
Pale pou paleComment
Travèse style pale, emosyon, oswa livrezon pandan y ap kenbe kontni an. Itil pou ajiste ton, pacing, ak ekspresyon.
Kò demann lan (multipart/form-data)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| file | file | Wi | Fichiè odyo vwa sous la. Maksimòm 50MB. |
| voice | string | Wi | Identifyan vwa pou pale deyò a |
| model | string | Non | Modèl: openvoice (pa défaut), chatterbox |
| emotion | string | Non | Emosyon target: neutral, happy, sad, angry, excited |
| speed | float | Non | Ajustman vitès. Default: 1.0. Range: 0.5 to 2.0 |
Reponn
Retounen nan fichye son transfòme a kòm done binè.
OdinatèName
Endpoints Audio pwosesis pou amelyore, retire vokal, stem divizyon, ak plis ankò.
Amelyore kalite son: denoise, amelyore klète, super résolution.
| file file | Fichiè son pou amelyore |
| denoise boolean | Activer la suppression du bruit (défaut: vrai) |
| enhance_clarity boolean | Enhance speech clarity (default: true) |
| super_resolution boolean | Amelyore kalite son (pa défaut: false) |
| strength integer | 1-3 (fèb, mwayen, fò). Pa défaut: 2 |
Separe vokal soti nan enstrimantal (eliminasyon vokal) oswa divize an stems.
| file file | Fichiè son pou separe |
| model string | demucs (default) or spleeter |
| stems integer | Nimewo tige: 2, 4, 5, oswa 6 (pa défaut: 2) |
| format string | fòma devwa: wav, mp3, flac |
Retire echo ak reverb soti nan enregistrements son.
| file file | Fichiè son pou trete |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analize son pou deteksyon kle, BPM, ak tan signature.
| file file | Fichiè son pou analize |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konvèti audio ant fòma.
| file file | Fichiè son pou konvèti |
| format string | Fòmat objektif: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate sortie an kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Sample rate: 22050, 44100, 48000 |
| channels string | mono or stereo |
Konvèsasyon Vokal
Envoye odyo oswa tèks ak resevwa yon repons AI ak pale synthesized.
Kò demann lan (multipart/form-data or JSON)
| Paramèt | Tipe | Required | Deskripsyon |
|---|---|---|---|
| audio | file | Non* | Entèfas son (oswa son oswa tèks nesesè) |
| text | string | Non* | Enpòte tèks (oswa audio oswa text nesesè) |
| voice | string | Non | Voy pou repons AI. Pa défaut: af_bella |
| tts_model | string | Non | Modèl TTS pou repons lan. Pa default: kokoro |
| system_prompt | string | Non | Pwompt sistèm Custom pou AI |
| conversation_id | string | Non | Kontinye yon konvèsasyon ki egziste |
Reponn
{
"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
Submit multiple texts for parallel TTS generation. Optionally receive a webhook callback when all jobs complete.
Paramèt
| Paramèt | Tipe | Deskripsyon |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Reponn
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Poll progress with GET /v1/tts/batch/result/?batch_id=abc123
Enkòporasyon Vokal
Pre-kalkile yon enkòporasyon vwa soti nan son referans. Itilize embed_id ki retounen nan demann klonaj vwa ki vini apre pou yon jenerasyon prèske imedyat.
Paramèt
| Paramèt | Tipe | Deskripsyon |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Reponn
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Verifikasyon sante
Tcheke estati sèvè GPU, modèl chaje, ak gwosè file. Pa gen autentifikasyon mande. Mete nan memwa pou 30 segonn.
Reponn
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
List Models
Retounen yon lis tout modèl ki disponib ak kapasite yo.
Reponn
{
"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
}
]
}
Liy vwa
Retounen yon lis tout vwa ki disponib, ki ka filtre pa modèl oswa lang.
Paramèt kesyon
| Paramèt | Tipe | Deskripsyon |
|---|---|---|
| model | string | Filtre pa ID modèl (e.g., kokoro) |
| language | string | Filtre pa kòd lang (e.g., fr) |
| gender | string | Filtre pa sèks: male, female, neutral |
Reponn
{
"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
}
Sous-titres (SRT / VTT) nouvo
Pwodui sous-titres sinkronize pou nenpòt travay TTS ki te fini. Egzekite alignman Whisper sou son an epi retounen SRT oswa WebVTT. Rezulte a se nan cache sou disk pou yon dezyèm apèl pou menm uuid la se yon lekti diskèt.
Paramèt kesyon
| Paramèt | Required | Deskripsyon |
|---|---|---|
| uuid | Wi | UUID travay la retounen pa /v1/tts/ oswa /v1/voice-clone/. |
| format | Non | srt (pa défaut) oswa vtt. |
| download | Non | 1 pou voye Content-Disposition: attachment pou navigatè a ka sove epi pa montre. |
| language | Non | Yon konsèy pou modèl alignman an (deteksyon otomatik si li pa gen ladan l). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Diksyonè Pronunciation nouvo
Di motè TTS kijan pou li pwonunsye mo espesifik. Enfòmasyon ki te sove yo ap aplike otomatikman pou chak demann TTS ou fè. Limit 200 enstriksyon pou chak kont.
Kò demann lan (POST)
| Paramèt | Tipe | Deskripsyon |
|---|---|---|
| word | string | Mo pou retounen (e.g. GIF, Anthropic). Word-boundary matched. |
| replacement | string | Li se yon eleman nan kòd la ki gen yon valè (pou egzanp, j) epi li ka itilize pou defini yon kòd (pou egzanp, j). |
| language | string | Kode ISO fasyal. Vide = aplike pou tout lang. |
| case_sensitive | boolean | false pa default. Konpare lèt ki pi piti ak pi gwo lè 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-..."
Ou ka tou pase overrides pa demann san yo pa sove yo — enkli pronunciations sou nenpòt apèl /v1/tts/ kòm yon objè oswa yon array (gade paramèt pwen bout TTS).
Narrateur nouvo
Drop yon sèl tag sou nenpòt paj atik ak vizitè yo jwenn yon bar lektè fiks ki narre paj la sou klike sou. Auto-detekte kò a atik, sipòte Custom vwa / modèl / pozisyon / koulè 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>
Opsyon
| Paramèt | Deskripsyon |
|---|---|
data-pk | Clé publiable (pk-tts-…). Restriksyon domèn ki aplike via jaden allowed_domains clé a. |
data-voice | ID Vokal. af_bella pa défaut. |
data-model | ID modèl TTS. kokoro pa défaut. |
data-extract | auto (pa défaut) — eseye article/main/.post-content/.entry-content sélecteurs, retounen nan klasman paragraf ki pi dens. Ou pase nenpòt CSS sélecteur pou mete yon eleman espesifik. |
data-position | bottom (pa défaut) oswa top. |
data-color | Koulè aksan (nenpòt koulè CSS). #e60000 pa défaut. |
data-min-chars / data-max-chars | Pa janm mete bar si atik la pi kout pase min-chars (pa default 200). Cap entrée a max-chars (pa default 50,000). |
Widget bouton Li
Enkòporasyon style bouton anndan. Rendi adjasan ak baliz li epi jwe yon ti bout tèks ki triye pa yon bouton. Diferan fòme nan Narrateur atik la anwo a (ki enjekte otomatikman yon bar ki kouvri tout paj la epi ki narre atik la tout antye).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Voyeurs sauvegardés (Clons persistants)
Enpòte yon referans son yon fwa, jwenn yon voice_id persistent, epi refere sa id nan demann TTS an plas pou re-enpòte son chak apèl. Itil pou entègrasyon gwo volim.
Enpòte yon vwa
POST
https://tts.ai/api/v1/user-voices/
Otorizasyon nesesè
Fòm multipart. Champs: dosye (required, 5-30s son), non (required), lang (favè, default en), modèl (favè — oto-pige cosyvoice2 pou zh/ja/ko si se pa openvoice), consent_confirmed (required, nenpòt valè ki vre).
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"
}
Etap 1:
POST to /api/v1/tts/ (NOTE: web VPS host, not api.tts.ai) with user_voice_id. Nou chaje son an ou estoke ak wout la nan klonaj la.
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.
List / delete
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
Arkive / re-aktive (gratis)
Voyeurs archivés restent dans votre compte mais ne peuvent pas être utilisés dans TTS. Utile pour les utilisateurs finaux dormants afin que votre liste reste propre.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Ekzanp kòd
Text to SpeechGenericName
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')}")
Konvèti pale an tèksName
# 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"])
Klonaj Vokal
# 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)
Text to SpeechGenericName
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();
Konvèti pale an tèksName
// 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);
Text to SpeechGenericName
# 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
Konvèti pale an tèksName
# 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"
Klonaj Vokal
# 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
Amelyore son
# 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
Kòd erè
Tout erè retounen yon repons JSON ak yon error jaden.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Status of an item | Kòd erè | Deskripsyon |
|---|---|---|
| 400 | bad_request |
Paramèt demann lan pa valab. Tcheke mesaj erè a pou plis detay. |
| 401 | unauthorized |
Clè API ki manke oswa ki pa valab. |
| 402 | insufficient_credits |
Pa gen ase kredi. Achte plis nan /pricing/. |
| 403 | forbidden |
Ou pa gen pèmisyon pou w aksese resous sa a (pou egzanp, pou w vote pou travay yon lòt itilizatè). Akses API a se enkli nan chak plan. |
| 404 | not_found |
Modèl oswa vwa pa jwenn. |
| 413 | file_too_large |
Fichiè enpòte a depase limit gwosè a. |
| 429 | rate_limited |
Trop demann. Tcheke ankadre limit vitès la. |
| 500 | internal_error |
Error server. Try again later. |
| 503 | model_loading |
Modèl la ap chaje. Retounen nan kèk segonn. |
Webhooks
Pou travay ki ap kouri pou yon tan long (separasyon branch, TTS batch), ou ka bay yon paramèt webhook_url. Lè travay la fini, nou pral POST rezilta a nan URL ou.
{
"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"
}
Prepare pou konstwi?
Jwenn kle API ou a epi kòmanse enkòpore TTS.ai nan aplikasyon ou yo.