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

Svi API zahtjevi zahtijevaju autentičnost putem Nositelja ž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 100.000 znakova
Profesionalno 60 5 100.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 -Da. -Da. ID modela (npr. kokoro, chatterbox , piper)
text string -Da. -Da. Tekst za pretvaranje u govor (max 100.000 znakova po zahtjevu)
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.
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

Odgovor

Vraća zvučnu datoteku kao binarne podatke s odgovarajućim Kontent-Type zaglavljem (audio/mpeg, audio/wav, itd.).

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

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
}

Primjeri koda

Tekst za 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')}")

Govor prema tekstu

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 za 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();

Govor prema tekstu

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 za 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

Govor prema tekstu

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

Poveć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

Šifre grešaka

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

Format odgovora na grešku
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP StatusŠifra greškeOpis
400 bad_request Neispravni parametri zahtjeva. Provjerite poruku greške za detalje.
401 unauthorized Nedostaje ili neispravan API ključ.
402 insufficient_credits Nema dovoljno znakova. 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 Uploadirana datoteka nadmašuje ograničenje veličine.
429 rate_limited Previše zahtjeva. Provjerite ograničenja zaglavlja.
500 internal_error Greška poslužitelja. Pokušajte kasnije.
503 model_loading Model se učitava.Ponovite za nekoliko sekundi.

Webhooks

Za dugotrajne zadatke (podjela stema, serija TTS) možete pružiti webhook_url parametar. Kada zadatak završi, mi ćemo POST 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"
}
Webhook rezultati su dostupni za preuzimanje za 24 sata nakon završetka. Pobrinite se da ih odmah preuzmete.

Spreman za izgradnju?

Uzmite API ključ i počnite uključivati TTS.ai u vaše aplikacije.