Fakkeenyaaf
TTS.ai akka fayyadamtu REST API keenyaan. Foormaatti OpenAI-compatible akka hin milkoofne.
Fuula
API TTS.ain akka fayyadamu qophaa'a akka faaydaawwan foormulaa hundaa: sintesisi teeksta-to-waamicha, waamicha-to-waamicha, kloonii dhaamsa, fi kkf. APIn REST-konvenshiinii standartaa fayyadama JSON-fi'ee/gaafatama.
Sagantaa API
Fudhachaa Amaloota Kontaa. Ijoollee hunda irratti ni argama, akkasii akka akkountiiwwan hin qabneetti.
URL aasaasii
https://api.tts.ai/v1/
A_uth
Tokkeen barreeffamaa Authorization qubee gadii
Aadaa
/v1/tts/ hojiin hin taanee, hanga 1,500 karaaktara/dhaabatti IP tokkotti, kan fayyadamnu kan keenya (piper, vits, melotts, kokoro). Akkaataa hin qabnee fi 15,000 karaaktara bonusiifi galmeewwan premiumiif galmeewwan bilbilaa galmeewwan bilbilaa
Akka mo'ellaa premium fi liimii raati guddaa, authenticate waliin Bearer Token keessatti Authorization qubee gadii.
Authorization: Bearer sk-tts-your-api-key-here
SDK
SDK-n rasmii TTS.ai akka fayyadamuuf ni gargaara. Kanneen lamaanis fuula-abbooma ta'an fi kan GitHub'tti argamuu danda'u.
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 aasaasii
Akkasumas, kan TTS'n kan guutu:
Fuula
API rate limits vary by plan:
| Jijjiiramni | Deetaa/min | Akkasumas | Fuula Teeksta |
|---|---|---|---|
| Birrii | 10 | 2 | 500 karaat |
| Jijjiiramni | 30 | 3 | 1,000,000 karaak |
| Pro | 60 | 5 | 1,000,000 karaak |
| Biyyaa | 300 | 20 | 50,000 karaak |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Akkasumas
| Sirna | Qindaa'ina | Sa'aa |
|---|---|---|
| TTS (Moodeeloota hin-qabne: Piper, VITS, MeloTTS) | 1,000 karaaktara | Akkasumas |
| TTS (Moodeeloota Standartaa: Kokoro, CosyVoice 2, ect.) | 2,000 karaaktara | Akkasumas |
| TTS (Moodeeloota Premium: Tortoise, Chatterbox, etc.) | 4,000 karaaktara | Akkasumas |
| Haati-dhaabbilee | 2,000 karaaktara | per minute of audio |
| Dhaabbilee | 4,000 karaaktara | Akkasumas |
| Dabalataan | 3,000 karaaktara | per minute of audio |
| Jabaa'ina Sammuu | 2,000 karaaktara | per minute of audio |
| Fuula/Fuula | 3,000-4,000 characters | per minute of audio |
| Fakkii | 5,000 karaaktara | per minute of audio |
| Gaaffilee Dhawaa | 3,000 karaaktara | per turn |
| Fudhatu Qolqaa & BPM | Birrii | -- |
| Konvertii Oduu | Birrii | -- |
Akkaata gara Maatiitti
Convert text to speech audio. Returns audio file in the requested format.
Jijjiirama
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| model | string | Haata'u | ID'ii Modelii (eg, fuula, sajoo, piper). yoo hin gaggeeffamin, nuyi auto-pilchiina modeelli kan deeggaru kan gaafatu Afaan Oromoo — fuula for en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper akka afaanota birootiin (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Ya | Akkaata akka tarreetti jijjiiruuf. Akkaata akkasii: 500 karaak (anoniim), 5,000 (account free), 1,000,000 (payment plan). Inputs dheeraaf akkasii gara-garaa kan sirbaa-gaafatamudha. |
| voice | string | Ya | ID Dhaabbii (barreeffama) /v1/voices/ (to list available voices) |
| format | string | Haata'u | Fuula Output: mp3 (Prefeessummaa), wav, flac, ogg |
| speed | float | Haata'u | Mul'isa yeroo dubbatu. Deetaa: Addunyaa. Jijjiiramni: 0.5 to Addunyaa |
| language | string | Haata'u | Koodiin Afaanii (eg, en, es). Otoo-qabamuu yoo hin ga'in. |
| instructions | string | Haata'u | Akkaataa hojii / itti fayyadama (≤500 karaat). e.g. \ |
| pronunciations | object | array | Haata'u | Per-request pronunciation overrides. Either {"GIF": "jiff", "Anthropic": "ann THROP ick"} or [{"word": "GIF", "replacement": "jiff", "case_sensitive": false}]. Stacks on top of saved entries from /api/v1/pronunciations/. Applied as a pre-tokenizer pass — every TTS model honors them. |
| stream | boolean | Haata'u | Fuula dabalataa saagi. false |
Fuula
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 tags
Daangeessii lakkoofsa, guyyaa, doolaara, lakkoofsa teefoonaa fi akroonimaa Fuula guyyaan akkasitti 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
Interpret-as Input Hojjachaa cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-31Hagayya 31, 1999 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 Afaan Oromoo dmy elsewhere; override with Foormaatti{
"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."
}Jawaabni
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.Akkaataa guutuu
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.
Haati-dhaabbilee
Gargaarsa audio fi teeksta. Afaan 99 waliin hojjechuu danda'a.
Jijjiirama (multipart/form-data)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| file | file | Ya | Fayilii awdiyoo (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Haata'u | Moodeelii STT: fuula (Prefeessummaa), faster-whisper, sensevoice |
| language | string | Haata'u | Koodii Afaanii. Otoomii akka awwaalchisu (dippilootaa). |
| timestamps | boolean | Haata'u | Akkasumas yeroo-leeyilaa. false |
| diarize | boolean | Haata'u | Fuula dabalataa false |
Jawaabni
{
"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"
}
]
}
Dhaabbilee
Jijjiirraa yaadaa sammuu kloonii. Akkaa fide odeeyfannoo fi teeksta.
Jijjiirama (multipart/form-data)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| reference_audio | file | Ya | Oduu dhalootaa (10-30 sekondii itti gaafatama). Max 20MB. |
| text | string | Ya | Akkaata akka dubbatamu dhalootaan. |
| model | string | Haata'u | Fakkeenya: sajoo (Prefeessummaa), cosyvoice2, gpt-sovits |
| format | string | Haata'u | Fuula Output: mp3 (Prefeessummaa), wav, flac |
| language | string | Haata'u | Koodiin afaanii kan itti gaafatamaa. Akkasumas akka modeelii filatamee itti gaafatamaa ta'e. |
Jawaabni
Fayilii awdiinii akka dataa binaariitti deebisa, akka dhibee guutu TTS.
Dabalataan
Fuula audio akka sammuu biraatti. Fuula audio fi sammuu itti fayyadama.
Jijjiirama (multipart/form-data)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| file | file | Ya | Fayilii awdiyoo (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Ya | ID dhaamsa tarjaa akka jijjiirtu (gudda) /v1/voices/ (to list available voices) |
| model | string | Haata'u | Mo'ellaa dabalataa: openvoice (Prefeessummaa), knn-vc |
| format | string | Haata'u | Fuula Output: wav (Prefeessummaa), mp3, flac |
Fuula
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
Jawaabni
Fayilii awdiinii jijjiire akka dataa binaariitti deebisa.
Fakkii
Fakkaata afaanii kan dubbatamu gara afaan biraa. Fakkaata-to-text, fakkaata, fi teeksta-to-speech wal-ga'ii tokkoo keessatti.
Jijjiirama (multipart/form-data)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| file | file | Ya | Fayilii awdiyoo fuula duraa afaanii. Max 100MB. |
| target_language | string | Ya | Koodiin afaanii tarjaa (eg, es, fr, fi, fi) |
| voice | string | Haata'u | Dhaabbii fuula itti fufee. Akka ogummaati yoo hin xumure. |
| preserve_voice | boolean | Haata'u | Akkasumas, sammuu dabalataa fi dabalataa dabalataa false |
Jawaabni
{
"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
}
Haati-gaafatama
Transform speech style, emotion, or delivery while keeping the content. Useful for adjusting tone, pacing, and expressiveness.
Jijjiirama (multipart/form-data)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| file | file | Ya | Fayilii ogummaa afaanii. Max 50MB. |
| voice | string | Ya | ID dhaamsa kan itti fayyadamu akka dhaamsa ba'aa |
| model | string | Haata'u | Modelii: openvoice (Prefeessummaa), sajoo |
| emotion | string | Haata'u | Jijjiirama tarjaa: fuula, haqaa, sad, haadharraa, fuula |
| speed | float | Haata'u | Fuula fooyya'insa. Addunyaa. Jijjiiramni: 0.5 to Addunyaa |
Jawaabni
Fayilii awdiiyoo jijjiire akka dataa binaariitti deebisa.
Sajoo
Fuula dabalataa awdiyooa akka jabaa'u, akka dabalatu, akka dabalatu, fi kkf.
Fuula sammuu fooyyessuu: sammuu fooyyessuu, sammuu fooyyessuu, resorsii fooyyessuu.
| file file | Fayilii awdiyoo akka cimtu |
| denoise boolean | Fuula denoising (Predefault: true) |
| enhance_clarity boolean | Barruu dabalataa (Predefault: true) |
| super_resolution boolean | Fuula sammuu ('%s') |
| strength integer | 1-3 (dhaamsa, caala, jabaa). Deetaa: 2 |
Separate vocals from instrumentals (vocal removal) or split into stems.
| file file | Fayilii awdiyoo akka daangefamu |
| model string | demucs (diibbaa) ykn spleeter |
| stems integer | Akkasumas, 2, 4, 5, fi 6 (Predefinishiin: 2) |
| format string | Fuula Output: wav, mp3, flac |
Dabalatu fi dabalatu irraa bu'uu.
| file file | Fayilii awdiyoo akka xumuru |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Filannoo sammuu akka fudhatan, BPM, fi yeroon.
| file file | Fayilii awdiyoo akka analeeffatamu |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Fuula audioo gidduutti.
| file file | Fayilii awdiyoo akka ba'amu |
| format string | Foormaatti mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate output in kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Samploota: 22050, 44100, 48000 |
| channels string | mono ykn stereo |
Gaaffilee Dhawaa
Deebi'i odeeffannoo ykn teeksta fi galmee AI'ii waliin dhaamsa ittisaa argatti.
Jijjiirama (multipart/form-data ykn JSON)
| Parameetri | Sa_ala | Barnoota | Sirna |
|---|---|---|---|
| audio | file | Haata'u* | Inportii Oduu (maaliif Oduu ykn kitaaba (Ijaala) |
| text | string | Haata'u* | Ingiliziin Oduu ykn kitaaba (Ijaala) |
| voice | string | Haata'u | Dhaaba deebii AI. _Bakka |
| tts_model | string | Haata'u | Mo'ellaa TTS akka deebii'u. Deetaa: fuula |
| system_prompt | string | Haata'u | Sistima'ii fooyya'aa AI |
| conversation_id | string | Haata'u | Jaarsoo tokko itti fufsiisuu |
Jawaabni
{
"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
}
Bakka-TTS
Akkaataa hedduu galchi akka TTS uumuuf. Webhook callback argattu yoo hojiin hundaa'e.
Parameetri
| Parameetri | Sa_ala | Sirna |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | URL'n filatamaa akka POST'u yoo baatii itti xumurame. |
Jawaabni
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Akkasumas, kan GET /v1/tts/batch/result/?batch_id=abc123
Daangeessuu Dhaaba
Pre-compute a voice embedding from reference audio. Use the returned embed_id in subsequent voice cloning requests for near-instant generation.
Parameetri
| Parameetri | Sa_ala | Sirna |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Jawaabni
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Filannoo Jijjiirama
Filannoo haala sarara GPU, moodeeloota lakkifame, fi bakkoota filataa. Aadaa galchuu hin barbaachisu. Cache'e 30 sekondii.
Jawaabni
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Li_staa Modeloota
Keeyyata mo'ellaa hundaa'ee fi dandeettii isaaniitti deebi'a.
Jawaabni
{
"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
}
]
}
Dhaamsa liqaa
Keeyyata sammuu hundaa'ee, kan filatamee akka moolaayii fi afaanii.
Qiyaamata
| Parameetri | Sa_ala | Sirna |
|---|---|---|
| model | string | Filteefachuu akka mo_deelii ID (eg. fuula) |
| language | string | Filteefachuu akka koodi afaanii (eg. en) |
| gender | string | Filteefachuu kan akka: Male, dubartii, fuula |
Jawaabni
{
"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) haaraa
Jijjiirraa subtiilewwan synchronized akka hojii TTS tokko malee. Jijjiirraa Whisper alignment irratti audio fi deebisa SRT ykn WebVTT. Natiifachuun cache'ee diskiitti akka waamicha tokkoon tokkoo uuid tokko tokko diskiitti dubbisuu ta'e.
Qiyaamata
| Parameetri | Barnoota | Sirna |
|---|---|---|
| uuid | Ya | UUID hojiin deebi'e kan /v1/tts/ ykn /v1/voice-clone/. |
| format | Haata'u | srt (default) or vtt. |
| download | Haata'u | 1 to send Fakkeenyaaf: akkasii bu'uurri kun akka hin mul'atin gad-qabsiisa. |
| language | Haata'u | Fakkeenyaaf, kan mo'ellaa wal-ga'ii (kan-qabatee yoo hin-qabne). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Digreesii haaraa
Tell the TTS engine how to pronounce specific words. Saved entries auto-apply to every TTS request you make. 200-entry per-account limit.
Jijjiirama (POST)
| Parameetri | Sa_ala | Sirna |
|---|---|---|
| word | string | Haala akka bu'u (e.g. GIF, Anthropic). Haalli harkifataa-warra walqabatee. |
| replacement | string | Akkamitti akka mo'ellaa (eg. jiff, ann THROP ick(Inni) kan isaan (warra) hin beekneedha. |
| language | string | Koodii ISO filatamaa. Haangala = kan fayyadamu afaan hundaaf. |
| case_sensitive | boolean | Default false. Match case exactly when 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-..."
You can also pass per-request overrides without saving them — include pronunciations on any /v1/tts/ call as either an object or an array (see the TTS endpoint params).
Fakkeenyaaf haaraa
Daangeessii tokko fuula tokko malee.
<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>
Opshiinii
| Parameetri | Sirna |
|---|---|
data-pk | Kiyyaa maxxanfamu (pk-tts-…). Keewwata doomeenii kan akka kiyyaa's Allow_domains fiila. |
data-voice | Voice ID. Default af_bella. |
data-model | TTS model ID. Default kokoro. |
data-extract | Otoomii (Predefinitii) — fuula artii/main/.post-content/.entry-content-selectors, deebi'a gara paragraaffaa ciminaa. ykn CSS-selector tokko malee akka element-a-tti galchi. |
data-position | bottom (default) or top. |
data-color | Accent color (any CSS color). Default #e60000. |
data-min-chars / data-max-chars | Daangeessii barreeffama yoo maqaan isaa cimaan yoo ta'e (hiika 200). Daangeessii akka fakkii max-chars (hiika 50,000). |
Bu'aa Liitii
Inline button-style embed. Renders next to its fuula-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-ga'ee-
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Dhaamsa qulqullina hin qabne
Upload a reference audio once, get back a persistent voice_id, then reference that id in TTS requests instead of re-uploading audio every call. Ideal for high-volume integrations.
Lakkisuu
POST
https://tts.ai/api/v1/user-voices/
Authentication required
Dabalataan: fayilii (qabeessa, 5-30s audio), maqaa (qabeessa), afaan (qabeessa, diifoo en), moodeelli (qabeessa — cosyvoice2 akka zh/ja/ko ykn openvoice akka ta'e auto-picks), akkan_konsent_confirmed (qabeessa, waldaa tokko malee).
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"
}
Akkasumas, fayyadami afaanii kan galmee keessaa
POST to /api/v1/tts/ (NOTE: web VPS host, not api.tts.ai) with user_voice_id. We load your stored audio and route to the cloning pipeline.
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.
Liiti / Haalli
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
Arkii / reaktivee (free)
Dhaawwan arkibaatiin akka tarreeffaman tarreeffama, garuu TTS keessatti hin fayyadamu. Fakkeenyaaf, akka tarreeffamu kan gargaaru yoo hin fayyadamin.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Akkaataa Koodii
Akkaata gara Maatiitti
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')}")
Haati-dhaabbilee
# 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"])
Dhaabbilee
# 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)
Akkaata gara Maatiitti
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();
Haati-dhaabbilee
// 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);
Akkaata gara Maatiitti
# 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
Haati-dhaabbilee
# 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"
Dhaabbilee
# 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
Jabaa'ina Sammuu
# 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
Koodii Filannoo
Dhaabbileen hundaan deebii JSON kan qabdu error fiila.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Akkaataa HTTP | Koodiin galatii | Sirna |
|---|---|---|
| 400 | bad_request |
Parameetrawwan gaafatu hin salphaatin. Akkasumas, eegga haalata bu'aa'ee. |
| 401 | unauthorized |
Injiila API hin jiru ykn saalaa. |
| 402 | insufficient_credits |
Karaaktoota hin barbaachisu. Akka /pricing/ irraa hin iibsinne. |
| 403 | forbidden |
You don't have permission to access this resource (e.g. polling another user's job). API access itself is included on every plan. |
| 404 | not_found |
Mo'ellaa ykn sammuu hin argamin. |
| 413 | file_too_large |
Fayilii akkasii kan akka faallaa '%s' kan galmee'e |
| 429 | rate_limited |
Deebi'iinsa baay'ee. Filannoo qunnamtii fooyya'insa. |
| 500 | internal_error |
Faaydaa sarara. Dhimmii boodatti deebi'a. |
| 503 | model_loading |
Mo'ellii itti fufe. Dhimmii booda deebi'i. |
Webhooks
Akka hojiin dheeratu (stem splitting, batch TTS), webhook_url parameetirii. Akka tattaafataa itti guututti, nu POST'uu ni dandeessa.
{
"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"
}
Akkam hojjechaa?
Qaba API kee fi eegala TTS.ai akka galmee kee keessatti galchitu.