API dokumentacija

TTS.ai integrirajte u svoje aplikacije sa našim REST API-jem. OpenAI-kompatibilni format za jednostavnu migraciju.

REST API OpenAI kompatibilan JSON Odgovori Podrška za streaming

Pregled

TTS.ai API pruža programski pristup svim značajkama platforme: sinteza teksta u govor, transkripcija govora u tekst, kloniranje glasa, poboljšanje zvuka i još mnogo toga.

API ključ

Nabavi svoj API ključ od Postavke računa. Dostupno na Pro i Enterprise planovima.

Osnovni URL

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

Autorizacija

Token nosioca preko Authorization zaglavlje

Autentifikacija

Slobodni nivo - nije potreban ključ. Anonimno /v1/tts/ radi bez ikakve autorizacije, do 5000 znakova dnevno po IP-u, koristeći bilo koji od naših besplatnih modela (piper, vits, melotts, kokoro). Registrirajte se za besplatni račun i dobit ćete 15.000 bonus likova i pristup premium modelima.

Za premium modele i više stope ograničenja, autentificirajte se sa nosilac tokena u Authorization zaglavlje.

HTTP zaglavlje
Authorization: Bearer sk-tts-your-api-key-here
Čuvaj svoj API ključ u tajnosti. Nemojte ga dijeliti u klijentskom kodu, javnim repozitorijima ili dnevnicima. Redovito rotirajte ključeve iz postavki računa.

SDK

Službeni SDK-ovi olakšavaju integraciju TTS.ai u vašu aplikaciju.Oboje su otvorenog koda i dostupni na GitHubu.

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

Osnovni URL

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

Sve krajnje tačke su relativne prema ovom osnovnom URL-u. Naprimjer, krajnja tačka TTS-a je:

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

Ograničenje brzine

API brzina ograničenja variraju po planu:

Plan Zahtjevi/min Istovremena Maksimalna dužina teksta
Slobodan 10 2 500 znakova
Starter 30 3 1,000,000 znakova
Pro 60 5 1,000,000 znakova
Enterprise 300 20 50,000 znakova

Brzina ograničenja zaglavlja su uključeni u svaki odgovor: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Troškovi kredita

Servis Trošak Unit
TTS (Besplatni modeli: Piper, VITS, MeloTTS) 1,000 znakova na 1.000 znakova
TTS (standardni modeli: Kokoro, CosyVoice 2, itd.) 2,000 znakova na 1.000 znakova
TTS (Premium modeli: Tortoise, Chatterbox, itd.) 4,000 znakova na 1.000 znakova
Pretvori govor u tekst 2,000 znakova po minuti zvuka
Kloniranje glasa 4,000 znakova na 1.000 znakova
Izmjenjivač glasa 3 kredita po minuti zvuka
Poboljšanje zvuka 2,000 znakova po minuti zvuka
Uklanjanje vokala / razdvajanje glasa 3,000-4,000 znakova po minuti zvuka
Prevođenje govora 5000 znakova po minuti zvuka
Glasovni razgovor 3 kredita po potezu
Key & BPM Finder Slobodan --
Pretvornik zvuka Slobodan --

Tekst-u-govor

POST /v1/tts/

Pretvori tekst u audio govor. Vraća audio datoteku u traženom formatu.

Tijelo zahtjeva

ParametarTipObveznoOpis
model string Ne, ne, ne. ID modela (npr. kokoro, chatterbox, piper). Ako se izostavi, automatski ćemo odabrati model koji podržava zatraženi languagekokoro za en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper za ostale podržane jezike (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Da. Tekst koji će se pretvoriti u govor. Maksimalan broj znakova po zahtjevu: 500 znakova (anonimno), 5.000 (besplatan račun), 1.000.000 (plaćeni račun). Dugi unosi se automatski razdvajaju na serveru.
voice string Da. Glasovni ID (koristite /v1/voices/ za popis raspoloživih glasova)
format string Ne, ne, ne. Izlazni format: mp3 (uobičajeno), wav, flac, ogg
speed float Ne, ne, ne. Množitelj brzine govora. Uobičajeno: 1.0. Raspon: 0.5 do 2.0
language string Ne, ne, ne. Kod jezika (npr. en, es). Automatski otkriven ako je izostavljen.
instructions string Ne, ne, ne. 2015.  "About the 500-year-old castle" (jezik: engleski).
pronunciations object | array Ne, ne, ne. Izgovor po zahtjevu nadmašuje. Ili {\
stream boolean Ne, ne, ne. Omogući odgovor strujanja. Uobičajeno: false

Primjer zahtjeva

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 oznake

Omotaj brojeve, datume, valutu, telefonske brojeve i akronime u

interpretiraj ihUlazGovori se kao
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Decembar 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

Format datuma je mdy za engleski jezik i dmy za ostale jezike; nadmaši ga sa format=\

Primjer
{
  "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."
}

Odgovor

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.

Cijeli primjer

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.

Pretvori govor u tekst

POST /v1/stt/

Pretvori audio u tekst. Podržava 99 jezika sa automatskim prepoznavanjem.

Tijelo zahtjeva (multipart/form-data)

ParametarTipObveznoOpis
file file Da. Audio datoteka (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maksimalno 100MB.
model string Ne, ne, ne. STT model: whisper (uobičajeno), faster-whisper, sensevoice
language string Ne, ne, ne. Kod jezika. auto za automatsko otkrivanje (default).
timestamps boolean Ne, ne, ne. Uključi vremenske pečate na nivou riječi. Uobičajeno: false
diarize boolean Ne, ne, ne. Omogući diarizaciju zvučnika. Uobičajeno: false

Odgovor

Odgovor 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"
    }
  ]
}

Kloniranje glasa

POST /v1/tts/clone/

Generiraj govor u kloniranom glasu. Učitaj referentni audio i tekst.

Tijelo zahtjeva (multipart/form-data)

ParametarTipObveznoOpis
reference_audio file Da. Referenčni glasovni audio (preporučeno 10-30 sekundi). Maksimalno 20MB.
text string Da. Tekst koji će se izgovoriti kloniranim glasom.
model string Ne, ne, ne. Model klona: chatterbox (uobičajeno), cosyvoice2, gpt-sovits
format string Ne, ne, ne. Izlazni format: mp3 (uobičajeno), wav, flac
language string Ne, ne, ne. Ciljni kod jezika. Mora biti podržan od strane odabranog modela.

Odgovor

Vraća audio datoteku kao binarne podatke, isto kao i krajnja tačka TTS-a.

Izmjenjivač glasa

POST /v1/voice-convert/

Pretvori zvuk da zvuči kao drugi glas. Učitaj izvorni zvuk i izaberi ciljani glas.

Tijelo zahtjeva (multipart/form-data)

ParametarTipObveznoOpis
file file Da. Izvorna audio datoteka (MP3, WAV, FLAC). Maksimalno 50MB.
target_voice string Da. Ciljni glasovni ID za pretvorbu u (koristite /v1/voices/ za prikaz raspoloživih glasova)
model string Ne, ne, ne. Model pretvorbe glasa: openvoice (uobičajeno), knn-vc
format string Ne, ne, ne. Izlazni format: wav (uobičajeno), mp3, flac

Primjer zahtjeva

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

Odgovor

Vraća konvertiranu audio datoteku kao binarne podatke.

Prevođenje govora

POST /v1/speech-translate/

Prevodi izgovoreni zvuk sa jednog jezika na drugi. Kombinira govor-u-tekst, prijevod i tekst-u-govor u jednom pozivu.

Tijelo zahtjeva (multipart/form-data)

ParametarTipObveznoOpis
file file Da. Izvorna audio datoteka na originalnom jeziku. Maksimalno 100MB.
target_language string Da. Kod ciljanog jezika (npr. es, fr, de, ja)
voice string Ne, ne, ne. Glas za prevedeni izlaz. Automatski odabran ako se izostavi.
preserve_voice boolean Ne, ne, ne. Pokušaj sačuvati karakteristike glasa izvornog govornika. Uobičajeno: false

Odgovor

Odgovor 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
}

Govor u govor

POST /v1/speech-to-speech/

Transformirajte stil govora, emocije ili isporuku, zadržavajući sadržaj. Korisno za podešavanje tona, tempa i ekspresivnosti.

Tijelo zahtjeva (multipart/form-data)

ParametarTipObveznoOpis
file file Da. Izvorna audio datoteka govora. Maksimalno 50MB.
voice string Da. Ciljni glasovni ID za izlazni govor
model string Ne, ne, ne. Model: openvoice (uobičajeno), chatterbox
emotion string Ne, ne, ne. Ciljana emocija: neutral, happy, sad, angry, excited
speed float Ne, ne, ne. Podešavanje brzine. Uobičajeno: 1.0. Raspon: 0.5 do 2.0

Odgovor

Vraća transformiranu audio datoteku kao binarne podatke.

Audio Alati

Završne tačke za obradu zvuka za poboljšanje, uklanjanje vokala, razdvajanje stabljike i još mnogo toga.

POST /v1/audio/enhance/

Poboljšanje kvaliteta zvuka: uklanjanje buke, poboljšanje jasnoće, super rezolucija.

file fileZvučna datoteka za poboljšanje
denoise booleanOmogući uklanjanje šuma (uobičajeno: true)
enhance_clarity booleanPoboljšaj jasnoću govora (uobičajeno: istina)
super_resolution booleanPovećaj kvalitet zvuka (uobičajeno: neistinito)
strength integer1-3 (lak, srednji, jak). Uobičajeno: 2
POST /v1/audio/separate/

Odvajaju vokale od instrumentala (odstranjivanje vokala) ili ih dijele na dijelove.

file fileAudio datoteka za odvajanje
model stringdemucs (po defaultu) ili spleeter
stems integerBroj stabljika: 2, 4, 5, ili 6 (uobičajeno: 2)
format stringIzlazni format: wav, mp3, flac
POST /v1/audio/dereverb/

Ukloni eho i reverb iz audio snimaka.

file fileAudio datoteka za obradu
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Slobodan

Analizirajte zvuk za otkrivanje ključa, BPM-a i taktnog znaka.

file fileAudio datoteka za analizu
Odgovor
{
  "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/ Slobodan

Pretvori zvuk između formata.

file fileAudio datoteka za pretvorbu
format stringCiljni format: mp3, wav, flac, ogg, m4a, aac
bitrate integerIzlazna brzina prijenosa u kbps: 64, 128, 192, 256, 320
sample_rate integerFrekvencija uzorkovanja: 22050, 44100, 48000
channels stringmono ili stereo

Glasovni razgovor

POST /v1/voice-chat/

Pošalji audio ili tekst i primi AI odgovor sa sintetiziranim govorom.

Tijelo zahtjeva (multipart/form-data ili JSON)

ParametarTipObveznoOpis
audio file Ne, ne, ne.* Audio ulaz (potreban je audio ili text)
text string Ne, ne, ne.* Unos teksta (potreban je audio ili text)
voice string Ne, ne, ne. Glas za AI odgovor. Uobičajeno: af_bella
tts_model string Ne, ne, ne. TTS model za odgovor. Uobičajeno: kokoro
system_prompt string Ne, ne, ne. Prilagođeni sistemski prompt za AI
conversation_id string Ne, ne, ne. Nastavi postojeći razgovor

Odgovor

Odgovor 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
}

Batch TTS

POST /v1/tts/batch/

Pošalji više tekstova za paralelno TTS generiranje. Opcionalno primi webhook poziv kada svi poslovi budu završeni.

Parametri

ParametarTipOpis
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOpcionalni URL za POST rezultate kada se serija završi.

Odgovor

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

Napredak ankete sa GET /v1/tts/batch/result/?batch_id=abc123

Ugrađivanje glasa

POST /v1/voice-embed/

Pre-računavanje ugradnje glasa iz referentnog zvuka. Koristite vraćeni embed_id u kasnijim zahtjevima za kloniranje glasa za skoro trenutnu generaciju.

Parametri

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

Odgovor

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

Provjera zdravlja

GET /v1/health/

Provjeri status GPU servera, učitanih modela i veličinu reda. Nije potrebna autentifikacija. Keširano na 30 sekundi.

Odgovor

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

Lista modela

GET /v1/models/

Vraća listu svih dostupnih modela sa njihovim mogućnostima.

Odgovor

Odgovor 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
    }
  ]
}

Lista glasova

GET /v1/voices/

Vraća listu svih dostupnih glasova, opcionalno filtriranih po modelu ili jeziku.

Parametri

ParametarTipOpis
model string Filtriraj po ID-u modela (npr. kokoro)
language string Filtriraj po kodu jezika (npr. en)
gender string Filter po spolu: muško, žensko, neutralno

Odgovor

Odgovor 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
}

Podnaslovi novo

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

Generiraj sinkronizirane titlove za bilo koji završeni TTS zadatak. Pokreće Whisper poravnanje preko audio i vraća SRT ili WebVTT. Rezultat je u kešu na disku tako da je drugi poziv za isti uuid čitanje diska.

Parametri

ParametarObveznoOpis
uuidDa.UUID posla vraćen od strane /v1/tts/ ili /v1/voice-clone/.
formatNe, ne, ne.srt (standardno) ili vtt.
downloadNe, ne, ne.1 za slanje Content-Disposition: attachment tako da preglednik sprema umjesto da prikazuje.
languageNe, ne, ne.Naznaka modela poravnanja (automatski detektovana ako je izostavljena).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Rječnik izgovora novo

GET POST DELETE /api/v1/pronunciations/

Recite TTS mašini kako da izgovori određene riječi. Spremljeni unos se automatski primjenjuje na svaki TTS zahtjev koji napravite. Ograničenje od 200 unosa po računu.

Tijelo zahtjeva (POST)

ParametarTipOpis
wordstringRiječ koju treba nadjačati (npr. GIF, Anthropic). Podudarnost granica riječi.
replacementstringKako ga ispisati za model (npr. jiff, ann THROP ick).
languagestringNeobavezni ISO kod. Prazno = primjenjuje se na sve jezike.
case_sensitivebooleanUobičajeni false. Poravnaj velika i mala slova tačno kada je 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-..."

Također možete proslijediti po-zahtjev nadglasavanja bez spremanja ih - uključiti pronunciations na bilo koji /v1/tts/ poziv kao objekt ili niz (vidi TTS krajnje tačke parametara).

Pripovjedač novo

Ispustite jednu