Fakkeenyaaf

TTS.ai akka fayyadamtu REST API keenyaan. Foormaatti OpenAI-compatible akka hin milkoofne.

REST API OpenAI Jawaabni JSON Sukkanneessaa Daawwannaa

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

Tarree hin qabne — mallattoo hin barbaachisu. Anonoomni POSTs to /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.

Ogeeyyii HTTP
Authorization: Bearer sk-tts-your-api-key-here
Kiyyaa API kee sirreessuu. Haayyu itti fayyadamu kodii-balaa, repositorii-aadaa, ykn log. Kiibxataa yeroon-ga'ee irraatti fuula fuula.

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")
GitHub

JavaScript / Node.js

npm install @ttsainpm/ttsai
const { TTSClient } = require('@ttsainpm/ttsai');

const client = new TTSClient({
  apiKey: 'sk-tts-...'
});
const audio = await client.generate({
  input: 'Hello world!',
  model: 'kokoro'
});
await client.saveToFile(audio, 'output.wav');
GitHub

URL aasaasii

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

Akkasumas, kan TTS'n kan guutu:

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

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

POST /v1/tts/

Convert text to speech audio. Returns audio file in the requested format.

Jijjiirama

ParameetriSa_alaBarnootaSirna
model string Haata'u ID'ii Modelii (eg, fuula, sajoo, piper). yoo hin gaggeeffamin, nuyi auto-pilchiina modeelli kan deeggaru kan gaafatu Afaan Oromoofuula 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
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

Interpret-asInputHojjachaa
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

Fuula guyyaan akkasitti mdy Afaan Oromoo dmy elsewhere; override with Foormaatti

Akkaataa
{
  "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

The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.

Step 1: Submit request

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Akkaataa guutuu

Python
import requests, time

API_KEY = "sk-tts-your-key"
BASE = "https://api.tts.ai"

# 1. Submit TTS request
resp = requests.post(f"{BASE}/v1/tts/", json={
    "model": "kokoro",
    "text": "Hello from TTS.ai!",
    "voice": "af_bella"
}, headers={"Authorization": f"Bearer {API_KEY}"})
data = resp.json()
uuid = data["uuid"]

# 2. Poll for result
while True:
    result = requests.get(f"{BASE}/v1/speech/results/",
        params={"uuid": uuid}).json()
    if result["status"] == "completed":
        # 3. Download audio
        audio = requests.get(result["result_url"])
        with open("output.mp3", "wb") as f:
            f.write(audio.content)
        break
    elif result["status"] == "failed":
        raise Exception(result.get("error", "Generation failed"))
    time.sleep(1.5)

Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.

Haati-dhaabbilee

POST /v1/stt/

Gargaarsa audio fi teeksta. Afaan 99 waliin hojjechuu danda'a.

Jijjiirama (multipart/form-data)

ParameetriSa_alaBarnootaSirna
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

Jawaabni JSON
{
  "text": "Hello, this is a transcription test.",
  "language": "en",
  "duration": 3.5,
  "segments": [
    {
      "start": 0.0,
      "end": 1.8,
      "text": "Hello, this is",
      "speaker": "SPEAKER_00"
    },
    {
      "start": 1.8,
      "end": 3.5,
      "text": "a transcription test.",
      "speaker": "SPEAKER_00"
    }
  ]
}

Dhaabbilee

POST /v1/tts/clone/

Jijjiirraa yaadaa sammuu kloonii. Akkaa fide odeeyfannoo fi teeksta.

Jijjiirama (multipart/form-data)

ParameetriSa_alaBarnootaSirna
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

POST /v1/voice-convert/

Fuula audio akka sammuu biraatti. Fuula audio fi sammuu itti fayyadama.

Jijjiirama (multipart/form-data)

ParameetriSa_alaBarnootaSirna
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
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

POST /v1/speech-translate/

Fakkaata afaanii kan dubbatamu gara afaan biraa. Fakkaata-to-text, fakkaata, fi teeksta-to-speech wal-ga'ii tokkoo keessatti.

Jijjiirama (multipart/form-data)

ParameetriSa_alaBarnootaSirna
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

Jawaabni JSON
{
  "original_text": "Hello, how are you?",
  "translated_text": "Hola, como estas?",
  "source_language": "en",
  "target_language": "es",
  "audio_url": "https://api.tts.ai/v1/results/translate_abc123.mp3",
  "credits_used": 5
}

Haati-gaafatama

POST /v1/speech-to-speech/

Transform speech style, emotion, or delivery while keeping the content. Useful for adjusting tone, pacing, and expressiveness.

Jijjiirama (multipart/form-data)

ParameetriSa_alaBarnootaSirna
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.

POST /v1/audio/enhance/

Fuula sammuu fooyyessuu: sammuu fooyyessuu, sammuu fooyyessuu, resorsii fooyyessuu.

file fileFayilii awdiyoo akka cimtu
denoise booleanFuula denoising (Predefault: true)
enhance_clarity booleanBarruu dabalataa (Predefault: true)
super_resolution booleanFuula sammuu ('%s')
strength integer1-3 (dhaamsa, caala, jabaa). Deetaa: 2
POST /v1/audio/separate/

Separate vocals from instrumentals (vocal removal) or split into stems.

file fileFayilii awdiyoo akka daangefamu
model stringdemucs (diibbaa) ykn spleeter
stems integerAkkasumas, 2, 4, 5, fi 6 (Predefinishiin: 2)
format stringFuula Output: wav, mp3, flac
POST /v1/audio/dereverb/

Dabalatu fi dabalatu irraa bu'uu.

file fileFayilii awdiyoo akka xumuru
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Birrii

Filannoo sammuu akka fudhatan, BPM, fi yeroon.

file fileFayilii awdiyoo akka analeeffatamu
Jawaabni
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Birrii

Fuula audioo gidduutti.

file fileFayilii awdiyoo akka ba'amu
format stringFoormaatti mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate output in kbps: 64, 128, 192, 256, 320
sample_rate integerSamploota: 22050, 44100, 48000
channels stringmono ykn stereo

Gaaffilee Dhawaa

POST /v1/voice-chat/

Deebi'i odeeffannoo ykn teeksta fi galmee AI'ii waliin dhaamsa ittisaa argatti.

Jijjiirama (multipart/form-data ykn JSON)

ParameetriSa_alaBarnootaSirna
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

Jawaabni JSON
{
  "conversation_id": "conv_abc123",
  "user_text": "What is the capital of France?",
  "ai_text": "The capital of France is Paris.",
  "audio_url": "https://api.tts.ai/v1/audio/tmp/resp_xyz.mp3",
  "credits_used": 3
}

Bakka-TTS

POST /v1/tts/batch/

Akkaataa hedduu galchi akka TTS uumuuf. Webhook callback argattu yoo hojiin hundaa'e.

Parameetri

ParameetriSa_alaSirna
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringURL'n filatamaa akka POST'u yoo baatii itti xumurame.

Jawaabni

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

Akkasumas, kan GET /v1/tts/batch/result/?batch_id=abc123

Daangeessuu Dhaaba

POST /v1/voice-embed/

Pre-compute a voice embedding from reference audio. Use the returned embed_id in subsequent voice cloning requests for near-instant generation.

Parameetri

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

Jawaabni

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

Filannoo Jijjiirama

GET /v1/health/

Filannoo haala sarara GPU, moodeeloota lakkifame, fi bakkoota filataa. Aadaa galchuu hin barbaachisu. Cache'e 30 sekondii.

Jawaabni

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

Li_staa Modeloota

GET /v1/models/

Keeyyata mo'ellaa hundaa'ee fi dandeettii isaaniitti deebi'a.

Jawaabni

Jawaabni JSON
{
  "models": [
    {
      "id": "kokoro",
      "name": "Kokoro",
      "type": "tts",
      "tier": "standard",
      "languages": ["en", "ja", "ko", "zh", "fr"],
      "supports_cloning": false,
      "supports_streaming": true,
      "credits_per_1k_chars": 2
    },
    {
      "id": "chatterbox",
      "name": "Chatterbox",
      "type": "tts",
      "tier": "premium",
      "languages": ["en"],
      "supports_cloning": true,
      "supports_streaming": true,
      "credits_per_1k_chars": 4
    }
  ]
}

Dhaamsa liqaa

GET /v1/voices/

Keeyyata sammuu hundaa'ee, kan filatamee akka moolaayii fi afaanii.

Qiyaamata

ParameetriSa_alaSirna
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

Jawaabni JSON
{
  "voices": [
    {
      "id": "af_bella",
      "name": "Bella",
      "model": "kokoro",
      "language": "en",
      "gender": "female",
      "preview_url": "https://api.tts.ai/v1/voices/preview/af_bella.mp3"
    }
  ],
  "total": 142
}

Subtitles (SRT / VTT) haaraa

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

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

ParameetriBarnootaSirna
uuidYaUUID hojiin deebi'e kan /v1/tts/ ykn /v1/voice-clone/.
formatHaata'usrt (default) or vtt.
downloadHaata'u1 to send Fakkeenyaaf: akkasii bu'uurri kun akka hin mul'atin gad-qabsiisa.
languageHaata'uFakkeenyaaf, kan mo'ellaa wal-ga'ii (kan-qabatee yoo hin-qabne).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Digreesii haaraa

GET POST DELETE /api/v1/pronunciations/

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)

ParameetriSa_alaSirna
wordstringHaala akka bu'u (e.g. GIF, Anthropic). Haalli harkifataa-warra walqabatee.
replacementstringAkkamitti akka mo'ellaa (eg. jiff, ann THROP ick(Inni) kan isaan (warra) hin beekneedha.
languagestringKoodii ISO filatamaa. Haangala = kan fayyadamu afaan hundaaf.
case_sensitivebooleanDefault false. Match case exactly when true.
cURL
# Save an entry
curl -X POST https://tts.ai/api/v1/pronunciations/ \
  -H "Authorization: Bearer sk-tts-..." \
  -H "Content-Type: application/json" \
  -d '{"word": "GIF", "replacement": "jiff"}'

# List your entries
curl https://tts.ai/api/v1/pronunciations/ -H "Authorization: Bearer sk-tts-..."

# Delete entry by id
curl -X DELETE "https://tts.ai/api/v1/pronunciations/?id=42" -H "Authorization: Bearer sk-tts-..."

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