API dokumentacija
TTS.ai integrirajte u svoje aplikacije sa našim REST API-jem. OpenAI-kompatibilni format za jednostavnu migraciju.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Osnovni URL
Sve krajnje tačke su relativne prema ovom osnovnom URL-u. Naprimjer, krajnja tačka TTS-a je:
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
Pretvori tekst u audio govor. Vraća audio datoteku u traženom formatu.
Tijelo zahtjeva
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| model | string | Ne, ne, ne. | ID modela (npr. kokoro, chatterbox, piper). Ako se izostavi, automatski ćemo odabrati model koji podržava zatraženi language — kokoro 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 -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 Format datuma je 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
interpretiraj ih Ulaz Govori 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 mdy za engleski jezik i dmy za ostale jezike; nadmaši ga sa format=\{
"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
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.Cijeli primjer
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.
Pretvori govor u tekst
Pretvori audio u tekst. Podržava 99 jezika sa automatskim prepoznavanjem.
Tijelo zahtjeva (multipart/form-data)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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
{
"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
Generiraj govor u kloniranom glasu. Učitaj referentni audio i tekst.
Tijelo zahtjeva (multipart/form-data)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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
Pretvori zvuk da zvuči kao drugi glas. Učitaj izvorni zvuk i izaberi ciljani glas.
Tijelo zahtjeva (multipart/form-data)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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 -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
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)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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
{
"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
Transformirajte stil govora, emocije ili isporuku, zadržavajući sadržaj. Korisno za podešavanje tona, tempa i ekspresivnosti.
Tijelo zahtjeva (multipart/form-data)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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.
Poboljšanje kvaliteta zvuka: uklanjanje buke, poboljšanje jasnoće, super rezolucija.
| file file | Zvučna datoteka za poboljšanje |
| denoise boolean | Omogući uklanjanje šuma (uobičajeno: true) |
| enhance_clarity boolean | Poboljšaj jasnoću govora (uobičajeno: istina) |
| super_resolution boolean | Povećaj kvalitet zvuka (uobičajeno: neistinito) |
| strength integer | 1-3 (lak, srednji, jak). Uobičajeno: 2 |
Odvajaju vokale od instrumentala (odstranjivanje vokala) ili ih dijele na dijelove.
| file file | Audio datoteka za odvajanje |
| model string | demucs (po defaultu) ili spleeter |
| stems integer | Broj stabljika: 2, 4, 5, ili 6 (uobičajeno: 2) |
| format string | Izlazni format: wav, mp3, flac |
Ukloni eho i reverb iz audio snimaka.
| file file | Audio datoteka za obradu |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analizirajte zvuk za otkrivanje ključa, BPM-a i taktnog znaka.
| file file | Audio datoteka za analizu |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Pretvori zvuk između formata.
| file file | Audio datoteka za pretvorbu |
| format string | Ciljni format: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Izlazna brzina prijenosa u kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Frekvencija uzorkovanja: 22050, 44100, 48000 |
| channels string | mono ili stereo |
Glasovni razgovor
Pošalji audio ili tekst i primi AI odgovor sa sintetiziranim govorom.
Tijelo zahtjeva (multipart/form-data ili JSON)
| Parametar | Tip | Obvezno | Opis |
|---|---|---|---|
| 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
{
"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
Pošalji više tekstova za paralelno TTS generiranje. Opcionalno primi webhook poziv kada svi poslovi budu završeni.
Parametri
| Parametar | Tip | Opis |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Opcionalni URL za POST rezultate kada se serija završi. |
Odgovor
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Napredak ankete sa GET /v1/tts/batch/result/?batch_id=abc123
Ugrađivanje glasa
Pre-računavanje ugradnje glasa iz referentnog zvuka. Koristite vraćeni embed_id u kasnijim zahtjevima za kloniranje glasa za skoro trenutnu generaciju.
Parametri
| Parametar | Tip | Opis |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Odgovor
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Provjera zdravlja
Provjeri status GPU servera, učitanih modela i veličinu reda. Nije potrebna autentifikacija. Keširano na 30 sekundi.
Odgovor
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Lista modela
Vraća listu svih dostupnih modela sa njihovim mogućnostima.
Odgovor
{
"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
Vraća listu svih dostupnih glasova, opcionalno filtriranih po modelu ili jeziku.
Parametri
| Parametar | Tip | Opis |
|---|---|---|
| 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
{
"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
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
| Parametar | Obvezno | Opis |
|---|---|---|
| uuid | Da. | UUID posla vraćen od strane /v1/tts/ ili /v1/voice-clone/. |
| format | Ne, ne, ne. | srt (standardno) ili vtt. |
| download | Ne, ne, ne. | 1 za slanje Content-Disposition: attachment tako da preglednik sprema umjesto da prikazuje. |
| language | Ne, ne, ne. | Naznaka modela poravnanja (automatski detektovana ako je izostavljena). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Rječnik izgovora novo
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)
| Parametar | Tip | Opis |
|---|---|---|
| word | string | Riječ koju treba nadjačati (npr. GIF, Anthropic). Podudarnost granica riječi. |
| replacement | string | Kako ga ispisati za model (npr. jiff, ann THROP ick). |
| language | string | Neobavezni ISO kod. Prazno = primjenjuje se na sve jezike. |
| case_sensitive | boolean | Uobičajeni false. Poravnaj velika i mala slova tačno kada je 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-..."
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 oznaku na bilo koju stranicu članka i posjetioci će dobiti fiksnu traku čitača koja će napisati stranicu na klik. Automatski detektuje tijelo članka, podržava prilagođeni glas / model / poziciju / boju naglaska.
<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>
Options
| Parametar | Opis |
|---|---|
data-pk | Ključ koji se može objaviti (pk-tts-…). Domenska ograničenja nametnuta putem allowed_domains polja ključa. |
data-voice | Voice ID. Uobičajeno af_bella. |
data-model | TTS model ID. Standard kokoro. |
data-extract | auto (uobičajeno) — pokušava article/main/.post-content/.entry-content selektore, vraća se na najgušću grupu paragrafa. Ili proslijedi bilo koji CSS selektor da cilja određeni element. |
data-position | bottom (standardno) ili top. |
data-color | Boja naglaska (bilo koja CSS boja). Uobičajeno #e60000. |
data-min-chars / data-max-chars | Preskoči liniju ako je članak kraći od min-characters (uobičajeno 200). Ograniči unos na max-characters (uobičajeno 50.000). |
Widget gumba za slušanje
Ugrađeni stil gumba. Renderira se pored oznake i reproducira kratki isječak pokrenut dugmetom. Različit oblik od Pripovjedača članka iznad (koji automatski umetne traku koja se proteže preko stranice i priča cijeli članak).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Spremljeni glasovi (trajni klonovi)
Učitaj referentni audio jedanput, vrati uporni voice_id, zatim se referiraj na taj id u TTS zahtjevima umjesto ponovnog učitavanja audiozapisa svaki put. Idealno za integracije velikih količina.
Pošalji glas
POST
https://tts.ai/api/v1/user-voices/
Potrebna je autorizacija
Višedijelni obrazac. Polja: datoteka (potrebno, 5-30s audio), ime (potrebno), jezik (neobavezno, uobičajeno en), model (neobavezno — automatski bira cosyvoice2 za zh/ja/ko inače openvoice), consent_confirmed (potrebno, bilo koja istinita vrijednost).
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"
}
Koristi spremljeni glas u TTS
POST u /api/v1/tts/ (NAPOMENA: web VPS host, ne api.tts.ai) sa user_voice_id. Učitavamo pohranjeni audio i rutaciju u kloniranje.
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.
Izbriši
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
Arhiviraj / ponovno aktiviraj (slobodno)
Arhivirani glasovi ostaju na vašem računu ali se ne mogu koristiti u TTS-u. Korisno za neaktivne krajnje korisnike tako da vaša lista ostane čista.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Primjeri koda
Tekst-u-govor
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
# 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
# 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
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
// 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
# 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
# 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
# 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
# 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.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP status | Kod greške | Opis |
|---|---|---|
| 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 znakova. Kupite više na /pricing/. |
| 403 | forbidden |
Nemate dozvolu za pristup ovom resursu (npr. anketiranje posla drugog korisnika). API pristup je uključen u svaki plan. |
| 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. |
| 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.
{
"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"
}
Spreman za izgradnju?
Dobijte svoj API ključ i počnite integrirati TTS.ai u svoje aplikacije.