API dokumentacija

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

REST API OpenAI kompatibilan JSON Odgovori Podrška za streaming

Pregled

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

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

Svi API zahtjevi zahtijevaju autentifikaciju putem nosioca token 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.

Osnovni URL

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

All endpoints are relative to this base URL. For example, the TTS endpoint is:

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

Limiti brzine

API rate limits vary by plan:

Plan Zahtjevi/min Concurrent Maksimalna dužina teksta
Pro 60 5 5,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 jedinica
TTS (Besplatni modeli: Piper, VITS, MeloTTS) 1 kredit na 1.000 znakova
TTS (standardni modeli: Kokoro, CosyVoice 2, itd.) 2 kredita na 1.000 znakova
TTS (Premium modeli: Tortoise, Chatterbox, itd.) 4 kredita na 1.000 znakova
Pretvori govor u tekst 2 kredita po minuti zvuka
Kloniranje glasa 4 kredita na 1.000 znakova
Izmjenjivač glasa 3 kredita po minuti zvuka
Poboljšanje zvuka 2 kredita po minuti zvuka
Voice Removal / Stem Splitting 3-4 kredita po minuti zvuka
Prevođenje govora 5 kredita 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 Da. ID modela (npr. kokoro, chatterbox, piper)
text string Da. Tekst koji će se pretvoriti u govor (maksimalno 5.000 znakova za Pro, 50.000 za Enterprise)
voice string Da. Glasovni ID (koristite /v1/voices/ za popis raspoloživih glasova)
format string Ne. Izlazni format: mp3 (uobičajeno), wav, flac, ogg
speed float Ne. Množitelj brzine govora. Uobičajeno: 1.0. Raspon: 0.5 do 2.0
language string Ne. Kod jezika (npr. en, es). Automatski otkriven ako je izostavljen.
stream boolean Ne. Omogući stream odgovor. 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

Odgovor

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

Zaglavlja odgovora
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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. STT model: whisper (uobičajeno), faster-whisper, sensevoice
language string Ne. Kod jezika. auto za automatsko otkrivanje (default).
timestamps boolean Ne. Uključi vremenske pečate na nivou riječi. Uobičajeno: false
diarize boolean 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. Referentni glasovni audio (preporučeno 10-30 sekundi). Maksimalno 20MB.
text string Da. Tekst koji će se izgovoriti kloniranim glasom.
model string Ne. Model klona: chatterbox (uobičajeno), cosyvoice2, gpt-sovits
format string Ne. Izlazni format: mp3 (uobičajeno), wav, flac
language string Ne. Ciljni kod jezika. Mora biti podržan od strane odabranog modela.

Odgovor

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

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. Model pretvorbe glasa: openvoice (uobičajeno), knn-vc
format string 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. Glas za prevedeni izlaz. Automatski odabran ako se izostavi.
preserve_voice boolean Ne. Pokušaj sačuvati originalni zvučnik

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/

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

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. Model: openvoice (uobičajeno), chatterbox
emotion string Ne. Ciljana emocija: neutral, happy, sad, angry, excited
speed float 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

Audio processing endpoints for enhancement, vocal removal, stem splitting, and more.

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 booleanPoboljšaj kvalitet zvuka (uobičajeno: neistinito)
strength integer1-3 (lak, srednji, jak). Uobičajeno: 2
POST /v1/audio/separate/

Odvojiti vokale od instrumentala (vokalno uklanjanje) ili podijeliti u stabljike.

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

Analiza zvuka 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 stringTarget format: mp3, wav, flac, ogg, m4a, aac
bitrate integerIzlazni bitrate u kbps: 64, 128, 192, 256, 320
sample_rate integerBrzina 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.* Audio ulaz (potreban je audio ili text)
text string Ne.* Unos teksta (potreban je audio ili text)
voice string Ne. Glas za AI odgovor. Uobičajeno: af_bella
tts_model string Ne. TTS model za odgovor. Uobičajeno: kokoro
system_prompt string Ne. Prilagođeni sistemski prompt za AI
conversation_id string 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
}

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
}

Primjeri koda

Tekst-u-govor

Python - requests
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')}")

Pretvori govor u tekst

Python - requests
# 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"])

Kloniranje glasa

Python - requests
# 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)

Tekst-u-govor

JavaScript - fetch
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();

Pretvori govor u tekst

JavaScript - fetch
// 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);

Tekst-u-govor

cURL
# 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

Pretvori govor u tekst

cURL
# 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"

Kloniranje glasa

cURL
# 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

Poboljšanje zvuka

cURL
# 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

Kodovi grešaka

Sve greške vraćaju JSON odgovor sa error Polje.

Format odgovora na grešku
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
HTTP statusError CodeOpis
400 bad_request Nevažeći zahtjevni parametri. Provjerite poruku o grešci za detalje.
401 unauthorized Nedostaje ili nije valjan API ključ.
402 insufficient_credits Nema dovoljno kredita. Kupite više na /pricing/.
403 forbidden API pristup nije dostupan na vašem planu.
404 not_found Model ili glas nije pronađen.
413 file_too_large Učitana datoteka prelazi ograničenje veličine.
429 rate_limited Previše zahtjeva. Provjerite zaglavlja ograničenja brzine.
500 internal_error Greška servera. Pokušajte ponovo kasnije.
503 model_loading Model se učitava. Pokušajte ponovo za nekoliko sekundi.

Webhooks

Za dugotrajnije zadatke (podjelu stabla, batch TTS), možete navesti parametar webhook_url. Kada je zadatak završen, mi ćemo poslati rezultat na vaš URL.

Webhook Payload
{
  "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"
}
Rezultati webhooka su dostupni za preuzimanje 24 sata nakon završetka. Pobrinite se da ih odmah preuzmete.

Spreman za izgradnju?

Get your API key and start integrating TTS.ai into your applications.