API dokumentacija
Iнтегрirajte TTS.ai u vaše aplikacije s našim REST API. OpenAI kompatibilan format za jednostavnu migraciju.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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
Svi ishodi su u odnosu na ovaj bazni URL. Na primjer, TTS ishod je:
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
Pretvori tekst u govorni zvuk. Vraća zvučnu datoteku u zahtjevnom formatu.
Zahtjevno tijelo
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| model | string | Ne. | ID modela (npr., kokoro , chatterbox , piper. Ako izostavimo, automatski odaberemo model koji podržava traženi 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 |
| 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 -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 Podrazumijevani format datuma za 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
tumačenje-kao Unos Govori 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 mdy za engleski i dmy drugdje; poništiti s 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.Full example
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.
Govor prema tekstu
Transcribe audio na tekst. Podržava 99 jezika s auto-detekcijom.
Zahtjevno tijelo (multipart/form-data)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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
{
"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
Generiši govor kloniranim glasom. Pošalji referentni zvuk i tekst.
Zahtjevno tijelo (multipart/form-data)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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), |
| 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
Pretvori zvuk u zvuk kao drugi glas. Pošalji izvorni zvuk i odaberi ciljani glas.
Zahtjevno tijelo (multipart/form-data)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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 -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
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)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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>, |
| 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
{
"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
Transformirati stil govora, emocije, ili isporuka istovremeno održavanje sadržaja. Korisno za prilagodbu tona, hodanje, i izražavanje.
Zahtjevno tijelo (multipart/form-data)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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 |
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.
Pojačaj kvalitetu zvuka: denoise, poboljšaj jasnoću, super rezoluciju.
| file file | Zvučna datoteka za poboljšanje |
| denoise boolean | Omogući denoziranje (uobičajeno: postavljeno) |
| enhance_clarity boolean | Povećaj jasnoću govora (uobičajeno: istinito) |
| super_resolution boolean | Povećana kvaliteta zvuka (uobičajeno: netačno) |
| strength integer | 1-3 (svjetlost, srednja, jaka). Uobičajeno: 2 |
Odvojeni vokali od instrumentala (glasno uklanjanje) ili podijeljeni na stabljike.
| file file | Zvučna datoteka za odvajanje |
| model string | demucs (uobičajeno) ili spleeter |
| stems integer | Broj stabljika: 2, 4, 5 ili 6 (podrazumijevano: 2) |
| format string | Izlazni format: wav, >mp3, flac |
Ukloni odjek i reverb iz zvučnih snimaka.
| file file | Zvučna datoteka za obradu |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analizirajte zvuk kako biste otkrili ključ, BPM i vremenski potpis.
| file file | Zvučna 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 | Zvučna datoteka za pretvaranje |
| format string | Ciljni format: >m3, , |
| bitrate integer | Izlazna bitna brzina u kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Brzina uzorka: 22050, 44100, 48000 |
| channels string | mono ili stereo |
Glasovni razgovor
Pošaljite zvuk ili tekst i primite odgovor AI sintetičkim govorom.
Zahtjevno tijelo (multipart/form-data ili JSON)
| Parametri | Vrsta | Potrebno | Opis |
|---|---|---|---|
| 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
{
"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
Pošalji više tekstova za paralelnu TTS generaciju. Opcionalno primiti webhook povratni poziv kada svi poslovi završe.
Parametri
| Parametri | Vrsta | Opis |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Odgovor
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Istraži napredak s GET /v1/tts/batch/rezult/?batch_id=abc123
Glasovno ugrađenje
Pretplatite ugradnju glasa iz referentnog zvuka. Koristite povratni embed_id u narednim zahtjevima za kloniranje glasa za skoro instant generaciju.
Parametri
| Parametri | Vrsta | 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
Provjerite GPU status poslužitelja, učitane modele i veličinu reda. Nema potrebe za autorizacijom.
Odgovor
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Popis modela
Vraća popis svih dostupnih modela s 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
}
]
}
Popis glasova
Vraća popis svih dostupnih glasova, opcionalno filtriranih po modelu ili jeziku.
Parametri upita
| Parametri | Vrsta | Opis |
|---|---|---|
| model | string | Filtriraj po ID-u modela (npr. kokoro) |
| language | string | Filtriraj po jeziku (npr. en ) |
| gender | string | Filtriraj po spolu: male , žena , |
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
}
Titule (SRT / VTT) novi
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
| Parametri | Potrebno | Opis |
|---|---|---|
| uuid | -Da. -Da. | Job UUID vratio /v1/tts / ili /v1/voice-klon/. |
| format | Ne. | Srt (uobičajeno) ili vt . |
| download | Ne. | 1 za slanje Content- Disposition: privitak tako da preglednik sprema umjesto prikaza. |
| language | Ne. | Nagovještaj modelu poravnanja (auto-otkriveno ako je izostavljeno). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Rječnik izgovora novi
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)
| Parametri | Vrsta | Opis |
|---|---|---|
| word | string | Riječ koju treba premostiti (npr. GIF , Antropic ). |
| replacement | string | Kako to napisati za model (npr. jiff , an THROP ick ). |
| language | string | Slobodan ISO kod. Prazan = vrijedi za sve jezike. |
| case_sensitive | boolean | Uobičajeni false . Poklapa se točno kada 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 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