API dokumentacija

Iнтегрirajte TTS.ai u vaše aplikacije s našim REST API. OpenAI kompatibilan format za jednostavnu migraciju.

REST API OpenAI kompatibilan Odgovori JSON-a Streaming podrška

Pregled

TTS.ai API pruža programski pristup svim značajkama platforme: sinteza teksta-na-speech, transkripcija govor-na-tekst, kloniranje glasa, audio pojašnjenje, i više. API koristi standardne REST konvencije s JSON zahtjev/odgovor tijela.

API tipka

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

Osnovni URL

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

Auth

Nositeljski znak preko Authorization zaglavlje

Ovjera

Besplatan stupanj – nije potreban ključ. Anonimni POST-ovi na /v1/tts/ raditi bez autorizacije, do 5000 znakova na dan po IP, koristeći bilo koji od naših besplatnih modela (piper, vits, melotts, kokoro). Prijavite se za besplatni račun za dobivanje 15.000 bonus znakova i pristup premium modelima.

Za premium modele i više stope ograničenja, autentičnost s Nositelj žetona u Authorization zaglavlje.

HTTP zaglavlje
Authorization: Bearer sk-tts-your-api-key-here
Čuvaj svoj API ključ tajnu. Ne dijelite ga kodom klijenta, javnim repozitorijima ili logovima. Tipke rotirajte redovito iz postavki vašeg računa.

SDKs

Službeni SDK-ovi olakšavaju integraciju TTS.ai u vašu aplikaciju. Oboje su otvoreni izvor i dostupni na 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")
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/

Svi ishodi su u odnosu na ovaj bazni URL. Na primjer, TTS ishod je:

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

Ograničenja stope

Ograničenja API stope variraju prema planu:

Plan Zahtjevi/min Istodobno Najveća dužina teksta
Slobodno 10 2 500 znakova
Pokretanje 30 3 1 000 000 znakova
Profesionalno 60 5 1 000 000 znakova
Poduzeće 300 20 50.000 znakova

Zaglavlja ograničenja brzine su uključena u svaki odgovor: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditni troškovi

Usluga Troškovi Jedinica
TTS (Besplatni modeli: Piper, VITS, Melotts) 1000 znakova po 1000 znakova
TTS (Standardni modeli: Kokoro, CosyVoice 2, itd.) 2.000 znakova po 1000 znakova
TTS (Premijum modeli: Tortoise, Chatterbox, itd.) 4.000 znakova po 1000 znakova
Govor prema tekstu 2.000 znakova po minuti zvuka
Kloniranje glasa 4.000 znakova po 1000 znakova
Promjena glasa 3.000 znakova po minuti zvuka
Povećanje zvuka 2.000 znakova po minuti zvuka
Uklanjanje glasa / razdvajanje 3.000-4.000 znakova po minuti zvuka
Prijevod govora 5000 znakova po minuti zvuka
Glasovni razgovor 3.000 znakova po skretanju
Nalaženje ključeva & BPM Slobodno --
Pretvarač zvuka Slobodno --

Tekst za govor

POST /v1/tts/

Pretvori tekst u govorni zvuk. Vraća zvučnu datoteku u zahtjevnom formatu.

Zahtjevno tijelo

ParametriVrstaPotrebnoOpis
model string Ne. ID modela (npr., kokoro , chatterbox , piper. Ako izostavimo, automatski odaberemo model koji podržava traženi jezik — kokoro za en/ja/zh/ko/fr/de/it/pt/es/hi/ru, za druge podržane jezike (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string -Da. -Da. Tekst koji će se pretvoriti u govor. Po zahtjevu kapa: 500 znakova (anonimno), 5000 (besplatan račun), 1 000 000 (plaćeni plan). Dugi ulazi su automatski začepljeni server stranice.
voice string -Da. -Da. Glasovni ID (koristi /v1/voices/ za popis dostupnih glasova)
format string Ne. Izlazni format: < kod> mp3 (zadano), < kod>wav, < kod>flac, < kod> ogg
speed float Ne. Množitelj brzine govora. Uobičajeno: < kod>1.0 . Raspon: < kod>0.5 do 2.0
language string Ne. Kod jezika (npr. en , es ). Automatski otkriven ako je izostavljen.
instructions string Ne. Remećenje / isporuka (≤500 znakova). npr. \
pronunciations object | array Ne. Izgovor po zahtjevu prevazilazi. Ili {\
stream boolean Ne. Uključi streaming odgovor. Uobičajeno: false

Zahtjev za primjerom

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

Prijelomi brojeve, datume, valute, brojeve telefona i akronime u

tumačenje-kaoUnosGovori se kao
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

Podrazumijevani format datuma za mdy za engleski i dmy drugdje; poništiti s 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.

Full example

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.

Govor prema tekstu

POST /v1/stt/

Transcribe audio na tekst. Podržava 99 jezika s auto-detekcijom.

Zahtjevno tijelo (multipart/form-data)

ParametriVrstaPotrebnoOpis
file file -Da. -Da. Audio datoteka (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ne. STT model: whisper (podrazumijevano), brže-whisper , smysl glas
language string Ne. Šifra jezika. auto za automatsko otkrivanje (uobičajeno).
timestamps boolean Ne. Uključi vremenske oznake na razini riječi. Uobičajeno: false
diarize boolean Ne. Uključi dijarizaciju zvučnika. Uobičajeno: false

Odgovor

Odgovor JSON-a
{
  "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/

Generiši govor kloniranim glasom. Pošalji referentni zvuk i tekst.

Zahtjevno tijelo (multipart/form-data)

ParametriVrstaPotrebnoOpis
reference_audio file -Da. -Da. Referentni glas audio (10-30 sekundi preporučeno). Max 20MB.
text string -Da. -Da. Tekst za govor u kloniranom glasu.
model string Ne. Klonov model: chatterbox (uobičajeno), cosyvoice2, gpt-sovits
format string Ne. Izlazni format: >mp3 (zadano), wav, flac
language string Ne. Šifra ciljnog jezika. Mora biti podržana odabranim modelom.

Odgovor

Vraća zvučnu datoteku kao binarne podatke, kao i ishod TTS-a.

Promjena glasa

POST /v1/voice-convert/

Pretvori zvuk u zvuk kao drugi glas. Pošalji izvorni zvuk i odaberi ciljani glas.

Zahtjevno tijelo (multipart/form-data)

ParametriVrstaPotrebnoOpis
file file -Da. -Da. Izvorna zvučna datoteka (MP3, WAV, FLAC). Max 50MB.
target_voice string -Da. -Da. Ciljni ID glasa pretvoriti u (koristite /v1/voices/ za popis dostupnih glasova)
model string Ne. Model konverzije glasa: openvoice (uobičajeno), knn-vc
format string Ne. Izlazni format: wav (zadano), >mp3, flac

Zahtjev za primjerom

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 pretvorenu zvučnu datoteku kao binarne podatke.

Prijevod govora

POST /v1/speech-translate/

Prevodi govorni zvuk s jednog jezika na drugi. Kombinira govor-na-tekst, prijevod, i tekst-na-speech u jednom pozivu.

Zahtjevno tijelo (multipart/form-data)

ParametriVrstaPotrebnoOpis
file file -Da. -Da. Izvorna zvučna datoteka na izvornom jeziku. Max 100MB.
target_language string -Da. -Da. Kod ciljnog jezika (npr. es , fr>/code>, de, , ja
voice string Ne. Glas za prevedeni izlaz. Automatski odabrani ako izostavljen.
preserve_voice boolean Ne. Pokušaj sačuvati glasovne karakteristike prvobitnog govornika. Uobičajeno: false

Odgovor

Odgovor JSON-a
{
  "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 govoru

POST /v1/speech-to-speech/

Transformirati stil govora, emocije, ili isporuka istovremeno održavanje sadržaja. Korisno za prilagodbu tona, hodanje, i izražavanje.

Zahtjevno tijelo (multipart/form-data)

ParametriVrstaPotrebnoOpis
file file -Da. -Da. Izvorni govorni zvučni dosije. Max 50MB.
voice string -Da. -Da. Ciljni glasni ID za izlazni govor
model string Ne. Model: openvoice (podrazumijevano), chatterbox
emotion string Ne. Ciljna emocija: neutral , sappy, sad , angry, uzbuđen
speed float Ne. Podešavanje brzine. Uobičajeno: < kod>1.0 . Raspon: < kod>0.5 do 2.0

Odgovor

Vraća transformiranu zvučnu datoteku kao binarne podatke.

Zvučni alat

Ishodi za obradu zvuka za poboljšanje, uklanjanje glasa, dijeljenje stabljika i više.

POST /v1/audio/enhance/

Pojačaj kvalitetu zvuka: denoise, poboljšaj jasnoću, super rezoluciju.

file fileZvučna datoteka za poboljšanje
denoise booleanOmogući denoziranje (uobičajeno: postavljeno)
enhance_clarity booleanPovećaj jasnoću govora (uobičajeno: istinito)
super_resolution booleanPovećana kvaliteta zvuka (uobičajeno: netačno)
strength integer1-3 (svjetlost, srednja, jaka). Uobičajeno: 2
POST /v1/audio/separate/

Odvojeni vokali od instrumentala (glasno uklanjanje) ili podijeljeni na stabljike.

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

Ukloni odjek i reverb iz zvučnih snimaka.

file fileZvučna datoteka za obradu
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Slobodno

Analizirajte zvuk kako biste otkrili ključ, BPM i vremenski potpis.

file fileZvučna 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/ Slobodno

Pretvori zvuk između formata.

file fileZvučna datoteka za pretvaranje
format stringCiljni format: >m3, wav, flac, , m4a, aac
bitrate integerIzlazna bitna brzina u kbps: 64, 128, 192, 256, 320
sample_rate integerBrzina uzorka: 22050, 44100, 48000
channels stringmono ili stereo

Glasovni razgovor

POST /v1/voice-chat/

Pošaljite zvuk ili tekst i primite odgovor AI sintetičkim govorom.

Zahtjevno tijelo (multipart/form-data ili JSON)

ParametriVrstaPotrebnoOpis
audio file Ne.* Unos zvuka (ili audio ili text neophodan)
text string Ne.* Unos teksta (ili audio ili text neophodan)
voice string Ne. Glas za odgovor AI. Uobičajeno: af_bella
tts_model string Ne. Model TTS za odgovor. Uobičajeno: kokoro
system_prompt string Ne. Prilagođeni zahtjev za AI
conversation_id string Ne. Nastavi postojeći razgovor

Odgovor

Odgovor JSON-a
{
  "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
}

Serija TTS

POST /v1/tts/batch/

Pošalji više tekstova za paralelnu TTS generaciju. Opcionalno primiti webhook povratni poziv kada svi poslovi završe.

Parametri

ParametriVrstaOpis
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Odgovor

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

Istraži napredak s GET /v1/tts/batch/rezult/?batch_id=abc123

Glasovno ugrađenje

POST /v1/voice-embed/

Pretplatite ugradnju glasa iz referentnog zvuka. Koristite povratni embed_id u narednim zahtjevima za kloniranje glasa za skoro instant generaciju.

Parametri

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

Odgovor

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

Provjera zdravlja

GET /v1/health/

Provjerite GPU status poslužitelja, učitane modele i veličinu reda. Nema potrebe za autorizacijom.

Odgovor

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

Popis modela

GET /v1/models/

Vraća popis svih dostupnih modela s njihovim mogućnostima.

Odgovor

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

Popis glasova

GET /v1/voices/

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

Parametri upita

ParametriVrstaOpis
model string Filtriraj po ID-u modela (npr. kokoro)
language string Filtriraj po jeziku (npr. en )
gender string Filtriraj po spolu: male , žena , neutralni

Odgovor

Odgovor JSON-a
{
  "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
}

Titule (SRT / VTT) novi

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

Generirati sinhronizirane podnaslove za bilo koji završeni TTS posao. Pokreće Whisper poravnanje preko zvuka i vraća SRT ili WebVTT. Rezultat je cached na disku tako drugi poziv za isti uuid je čitanje na disku.

Parametri upita

ParametriPotrebnoOpis
uuid-Da. -Da.Job UUID vratio /v1/tts / ili /v1/voice-klon/.
formatNe.Srt (uobičajeno) ili vt .
downloadNe.1 za slanje Content- Disposition: privitak tako da preglednik sprema umjesto prikaza.
languageNe.Nagovještaj modelu poravnanja (auto-otkriveno ako je izostavljeno).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Rječnik izgovora novi

GET POST DELETE /api/v1/pronunciations/

Recite TTS motoru kako izgovoriti specifične riječi. Spremljene unose automatski primijeniti na svaki TTS zahtjev koji napravite. 200-ulaz po računu limit.

Zahtjevno tijelo (POST)

ParametriVrstaOpis
wordstringRiječ koju treba premostiti (npr. GIF , Antropic ).
replacementstringKako to napisati za model (npr. jiff , an THROP ick ).
languagestringSlobodan ISO kod. Prazan = vrijedi za sve jezike.
case_sensitivebooleanUobičajeni false . Poklapa se točno kada 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 proći premošćavanje po zahtjevu bez njihovog spremanja – uključite izgovore na bilo kojem /v1/tts/ call kao objekt ili niz (vidjeti TTS ishod params).

Članak Narator novi

Ispustite jedan