Documentare API

Integrați TTS.ai în aplicațiile dvs. cu API REST. Format compatibile cu OpenAI pentru o migrație ușoară.

API REST Compatibil cu OpenAI Răspunsuri ale JSON Suport de fluxuri

Prezentare generală

API TTS.ai oferă acces programmatic la toate caracteristicile platformei: sinteză text-to-speech, transcripție vocală-to-text, clonare vocală, îmbunătățire audio și mai mult. API utilizează convenții standard REST cu JSON cerere/corps de răspuns.

Cheie API

Obțineți cheia API de la Setări contului. Disponibil pe Pro şi Enterprise planuri.

URL de bază

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

Auth

Figură de purtător prin intermediul Authorization antet

Autentificare

Nivel liber — nu este necesară cheie. POST-uri anonime la /v1/tts/ lucrează fără nici o autorizație, până la 5.000 de caractere/zi pe IP, folosind oricare dintre modelele noastre gratuite (piper, vits, melotts, kokoro). Înregistrează-te pentru un cont gratuit pentru a obține 15.000 de personaje bonus și acces la modele premium.

Pentru modelele premium și limitele ratei mai mari, autentificați cu un token Bearer în Authorization antet.

Header HTTP
Authorization: Bearer sk-tts-your-api-key-here
Ţine-ţi cheia API secretă. Nu-l împărtășiți în codul client-side, depozite publice sau loguri. Rotiți cheile cu regularitate din setările contului.

SDK

SDK-urile oficiale fac ușor să integreze TTS.ai în aplicația dumneavoastră. Ambele sunt surse deschise și disponibile pe 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

URL de bază

URL de bază: https://api.tts.ai/v1/

Toate punctele finale sunt legate de această URL de bază. De exemplu, punctul final TTS este:

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

Limitele ratei

Limitele ratei API variază după plan:

Plan Cereri/min Concurenţi Lungimea maximă a textului
Gratuit 10 2 500 de caractere
Pornitor 30 3 1.000.000 de caractere
Pro 60 5 1.000.000 de caractere
Întreprindere 300 20 50.000 de caractere

Înălțimea limită a ratei sunt incluse în fiecare răspuns: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Utilizarea caracterelor

Serviciu Costuri Unitate
TTS (modele gratuite: Piper, VITS, MeloTTS) 1000 de caractere per 1000 de caractere
TTS (modele standard: Kokoro, CosyVoice 2, etc.) 2000 de caractere per 1000 de caractere
TTS (Modele premium: Tortoise, Chatterbox, etc.) 4000 caractere per 1000 de caractere
Discursul textului 2000 de caractere pe minut de audio
Clonarea vocală 4000 caractere per 1000 de caractere
Schimbător de voce 3.000 de caractere pe minut de audio
Îmbunătățire audio 2000 de caractere pe minut de audio
Eliminarea vocală / divizarea stemului 3.000-4.000 caractere pe minut de audio
Traducerea discursului 5.000 de caractere pe minut de audio
Conversare vocală 3.000 de caractere pe rând
Căutător de cheie & BPM Gratuit --
Convertitor audio Gratuit --

Text la discurs

POST /v1/tts/

Convertiți textul în audio de voce. returnează fișierul audio în formatul solicitat.

Organismul de cerere

ParametrulTipNecesităDescriere
model string Nu. Model ID (de exemplu, kokoro, chatterbox, piper). Dacă este omis, alegem automat un model care suportă lingkokoro pentru en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper pentru alte limbi suportate (ar/pl/nl/cs/da/el/hu/tr/uk/vi/etc).
text string Da. Textul pentru a converti în vorbire. capac per-request: 500 chars (anonymous), 5.000 (cont liber), 1.000.000 (plan plătit). Introducerile lungi sunt latura server-chincate automat.
voice string Da. ID voce (utilizați /v1/voci/ pentru a lista vocile disponibile)
format string Nu. Format de ieșire: mp3 (default), wav, flac, ogg
speed float Nu. Se vorbește multiplicator de viteză. Predefinit: 1.0. Gama: 0.5 la 2.0
language string Nu. Codul limbii (de exemplu en , es). Detectat automat dacă este omis.
instructions string Nu. Indici de acțiune / livrare (≤500 caractere). de exemplu \
pronunciations object | array Nu. Pronunțarea per-request omite. Ori {\
stream boolean Nu. Activează răspunsul streaming. Predefinit: false

Cerere de exemplu

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 etichete

Numerele, datele, moneda, numerele de telefon și acronimele în

interpretare-sub formă deIntrareAm vorbit ca
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

Formatul de date implicit în mdy pentru engleză și dmy în altă parte; înlocuiți cu format=\

Exemplu
{
  "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."
}

Răspuns

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.

Discursul textului

POST /v1/stt/

Transcrie audio la text. Susține 99 de limbi cu auto-detectare.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
file file Da. Fișier audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nu. Modelul STT: whisper (defect), rapid-whisper, sensevoice
language string Nu. Codul limbii. auto pentru detectare automată (defect).
timestamps boolean Nu. Include marca de date a nivelului cuvântului. Predefinit: false
diarize boolean Nu. Activează diarizarea speakerului. Implicit: false

Răspuns

Răspuns 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"
    }
  ]
}

Clonarea vocală

POST /v1/tts/clone/

Generați vocea într-o voce clonată. Încărcaţi un audio de referință și un text.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
reference_audio file Da. Audio vocal de referință (10-30 secunde recomandate). Max 20MB.
text string Da. Text pentru a vorbi în voce clonată.
model string Nu. Model clonat: chatterbox (default), cosyvoice2, gpt-sovits
format string Nu. Format de ieșire: mp3 (defect), wav, flac
language string Nu. Codul limbii ţintă. Trebuie susţinut de modelul ales.

Răspuns

Returnează fișierul audio ca date binare, la fel ca punctul final TTS.

Schimbător de voce

POST /v1/voice-convert/

Convertiți audio pentru a suna ca o voce diferită. Încărcaţi audio sursă și alegeți o voce țintă.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
file file Da. Fișier audio sursă (MP3, WAV, FLAC). Max 50MB.
target_voice string Da. ID voce țintă pentru a converti în (utiliza /v1/voci/ pentru a lista vocile disponibile)
model string Nu. Model de conversie vocală: openvoice (defect), knn-vc
format string Nu. Format de ieșire: wav (defect), mp3, flac

Cerere de exemplu

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

Răspuns

Returnează fișierul audio convertit ca date binare.

Traducerea discursului

POST /v1/speech-translate/

Traduceţi audio vorbit dintr-o limbă în alta. Combinaţi discursul-în-text, traducere şi text-în-speech într-un singur apel.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
file file Da. Fișier audio sursă în limba originală. Max 100MB.
target_language string Da. Codul limbii ţintă (de exemplu, es , fr, de, ja)
voice string Nu. Voce pentru ieșire tradusă. Auto-selectat dacă este omit.
preserve_voice boolean Nu. Încearcă să păstreze caracteristicile vocale originale ale speakerului. Predefinit: false

Răspuns

Răspuns 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
}

Discursul discursului

POST /v1/speech-to-speech/

Transformați stilul de vorbire, emoție sau livrare în timp ce păstrați conținutul. Util pentru ajustarea tonului, pacing și expresivitate.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
file file Da. Fișier audio de voce sursă. Max 50MB.
voice string Da. ID voce țintă pentru discursul de ieșire
model string Nu. Model: openvoice (defect), chatterbox
emotion string Nu. Emoție țintă: neutral, happy, sad, angry, excitat
speed float Nu. Ajustarea vitezei: 1.0 . Gama: 0.5 la 2.0

Răspuns

Returnează fișierul audio transformat ca date binare.

Unelte audio

Endpointe de procesare audio pentru îmbunătăţire, îndepărtare vocală, divizare stem, și mai mult.

POST /v1/audio/enhance/

Îmbunătățirea calității audio: denoise, îmbunătățește claritatea, super rezoluție.

file fileFișier audio pentru îmbunătățire
denoise booleanActivează denoizarea (defect: true)
enhance_clarity booleanÎmbunătățiți claritatea vorbirii (defect: adevărat)
super_resolution booleanCalitatea audio de vârf (defect: fals)
strength integer1-3 (lumină, medie, puternică).
POST /v1/audio/separate/

Voci separate de instrumentale (îndepărtare vocală) sau împărțite în tulpini.

file fileFișier audio pentru separare
model stringdemucs (implicit) sau spleeter
stems integerNumărul tijelor: 2, 4, 5, sau 6 (defect: 2)
format stringFormat de ieșire: wav, mp3, flac
POST /v1/audio/dereverb/

Elimină eco și reverb din înregistrările audio.

file fileFișier audio de procesat
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Gratuit

Analiză audio pentru a detecta cheie, BPM și semnătură de timp.

file fileFișier audio de analizat
Răspuns
{
  "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/ Gratuit

Convertește audio între formate.

file fileFișier audio de convertit
format stringFormat țintă: mp3, wav, flac, ogg, m4a, aac
bitrate integerTaxa de bits de ieșire în kbps: 64, 128, 192, 256, 320
sample_rate integerRata eșantionului: 22050, 44100, 48000
channels stringmono sau stereo

Conversare vocală

POST /v1/voice-chat/

Trimite audio sau text și primește un răspuns al IA cu discurs sintetizat.

Organismul de cerere (multipart/form-data sau JSON)

ParametrulTipNecesităDescriere
audio file Nu.* Introducere audio ( fie audio sau text necesar)
text string Nu.* Introducerea textului ( fie audio sau text necesar)
voice string Nu. Voce pentru răspunsul IA. Predefinit: af_bella
tts_model string Nu. Modelul TTS pentru răspuns. Predefinit: kokoro
system_prompt string Nu. Prompt de sistem personalizat pentru IA
conversation_id string Nu. Continuați o conversație existentă

Răspuns

Răspuns 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
}

Serie TTS

POST /v1/tts/batch/

Trimite mai multe texte pentru generarea paralelă a TTS. Opțional primește un apelback webhook atunci când toate locurile de muncă se completează.

Parametri

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

Răspuns

Răspuns JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Progresul sondajului cu GET /v1/tts/batch/result/?batch_id=abc123

Incorporare vocală

POST /v1/voice-embed/

Pre-compută o încorporare vocală din audio de referință. Utilizați incorporarea_id returnată în cererile ulterioare de clonare vocală pentru generarea aproape-instant.

Parametri

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

Răspuns

Răspuns JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Verificarea sănătăţii

GET /v1/health/

Verificați starea serverului GPU, modelele încărcate și dimensiunea coada. Nu este necesară autentificare. Cached timp de 30 de secunde.

Răspuns

Răspuns JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Listă modele

GET /v1/models/

Întoarce o listă cu toate modelele disponibile cu capacitatea lor.

Răspuns

Răspuns 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 vocilor

GET /v1/voices/

Returnează o listă cu toate vocile disponibile, opțional filtrate prin model sau limbaj.

Parametrii cercetării

ParametrulTipDescriere
model string Filtru după ID-ul modelului (de exemplu kokoro)
language string Filtrare prin cod limbaj (de exemplu en)
gender string Filtrat după gen: mascul , femal, neutral

Răspuns

Răspuns 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
}

Subtitrare (SRT / VTT) nou

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

Generați subtitrari sincronizate pentru orice job TTS finalizat. Execută alinierea Whisper pe audio și returnează SRT sau WebVTT. Rezultatul este cached pe disc astfel încât un al doilea apel pentru același uuid este un disc citit.

Parametrii cercetării

ParametrulNecesităDescriere
uuidDa.Loc de muncă UUID a revenit de /v1/tts/ sau /v1/voce-clone/.
formatNu.srt (defect) sau vtt.
downloadNu.1 pentru a trimite Content-Dispoziție: atașament astfel că browserul economisește mai degrabă decât afișează.
languageNu.Sfat la modelul de aliniere (detectat automat dacă este omis).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Dicţionar de pronunţare nou

GET POST DELETE /api/v1/pronunciations/

Spune motorul TTS cum să pronunțe cuvinte specifice. Salvate înregistrări auto-apply la fiecare cerere TTS pe care o faceți. 200-intrare pe cont limită.

Organismul de cerere (POST)

ParametrulTipDescriere
wordstringCuvânt de înlocuit (de exemplu GIF, Anthropic).
replacementstringCum să-l scrie pentru model (de exemplu jiff, ann THROP ick).
languagestringCodul ISO opțional. Goală = se aplică tuturor limbilor.
case_sensitivebooleanPredefinit false . Cazul se potrivește exact atunci când 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-..."

De asemenea, puteți trece pe-request override fara a le salva — includeți pronunțații pe orice /v1/tts/ call fie ca un obiect sau un array (vezi parametele punctului final TTS).

Articolul Narator nou

Aruncă un singur