API-documentatie

Integreer TTS.ai in uw toepassingen met onze REST API. OpenAI-compatibel formaat voor eenvoudige migratie.

REST API OpenAI Compatible JSON-antwoorden Streaming Support

Overzicht

De TTS.ai API biedt programmatische toegang tot alle platformfuncties: tekst-naar-spraak synthese, spraak-naar-tekst transcriptie, stem klonen, audio-verbetering, en nog veel meer. De API maakt gebruik van standaard REST conventies met JSON verzoek/antwoord instanties.

API-sleutel

Krijg je API sleutel van Accountinstellingen. Beschikbaar op Pro en Enterprise plannen.

Basis-URL

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

Auth

Drager token via Authorization kop

Authenticatie

Gratis niveau.. geen sleutel vereist. Anonieme POST's naar /v1/tts/ werken zonder auth, tot 5.000 tekens/dag per IP, met behulp van een van onze gratis modellen (piper, vits, melotts, kokoro). Schrijf je in voor een gratis account om 15.000 bonus tekens en toegang tot premium modellen te krijgen.

Voor premium modellen en hogere tarieflimieten, authenticeren met een Bearer token in de Authorization kop.

HTTP-header
Authorization: Bearer sk-tts-your-api-key-here
Hou je API sleutel geheim. Deel het niet in client-side code, publieke repositories of logs. Draai sleutels regelmatig vanuit uw accountinstellingen.

SDK's

Officiële SDK's maken het eenvoudig om TTS.ai in uw applicatie te integreren. Beide zijn open source en beschikbaar op 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

Basis-URL

Basis-URL: https://api.tts.ai/v1/

Alle eindpunten zijn relatief ten opzichte van deze basis-URL. Bijvoorbeeld, het TTS eindpunt is:

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

Tarieflimieten

De API-snelheidslimieten variëren per plan:

Plan Verzoeken/min Gelijktijdig Maximale tekstlengte
Vrij 10 2 500 tekens
Starter 30 3 1.000.000 tekens
Pro 60 5 1.000.000 tekens
Onderneming 300 20 50.000 tekens

De headers zijn inbegrepen in elke reactie: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredietkosten

Dienst Kosten Eenheid
TTS (Vrije modellen: Piper, VITS, MeloTTS) 1000 tekens per 1000 tekens
TTS (standaardmodellen: Kokoro, CosyVoice 2, enz.) 2000 tekens per 1000 tekens
TTS (Premiummodellen: Tortoise, Chatterbox, enz.) 4.000 tekens per 1000 tekens
Toespraak naar tekst 2000 tekens per minuut audio
Stemklonen 4.000 tekens per 1000 tekens
Spraakwisselaar 3.000 tekens per minuut audio
Audio-verbetering 2000 tekens per minuut audio
Vocal Removal / Stam Splitsing 3.000-4.000 tekens per minuut audio
Spraakvertaling 5.000 tekens per minuut audio
Spraakgesprek 3.000 tekens per draai
Sleutel & BPM-zoeker Vrij --
Audioconverter Vrij --

Tekst naar spraak

POST /v1/tts/

Converteer tekst naar spraakaudio. Geeft audiobestand terug in het gewenste formaat.

Verzoek om een instantie

ParameterTypeVereistOmschrijving
model string Nee Model ID (bijv., kokoro, chatterbox, piper). Indien weggelaten, kiezen we automatisch een model dat de gevraagde taal ondersteunt kokoro voor en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper voor andere ondersteunde talen (ar/pl/nl/cs/da/el/hu/uk/vi/etc.).
text string Ja. Tekst om te zetten naar spraak. Per verzoek cap: 500 tekens (anonieme), 5.000 (gratis account), 1.000.000 (betaald plan). Lange ingangen zijn auto-chunked server-side.
voice string Ja. Voice ID (gebruik /v1/voices/ om beschikbare stemmen te tonen)
format string Nee Uitvoerformaat: mp3 (standaard), wav, flac, ogg
speed float Nee Speaking speed multiplier. Standaard: 1.0. Bereik: 0.5 tot 2.0
language string Nee Taalcode (bv. en, es). Automatisch gedetecteerd indien weggelaten.
instructions string Nee Acteren / leveren cues (≤500 tekens). bv. \
pronunciations object | array Nee De uitspraak per verzoek gaat over. Ofwel {\
stream boolean Nee streaming-antwoord inschakelen. Standaard: vals

Voorbeeldverzoek

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

Omloopnummers, datums, valuta, telefoonnummers en acroniemen in

interpret-asInvoerGesproken als
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31December eenendertig, negentienennegentig.
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

Datumformaat standaard voor mdy voor Engels en dmy elders; overschrijven met format=\

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

Respons

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.

Volledig voorbeeld

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.

Toespraak naar tekst

POST /v1/stt/

Audio overschrijven op tekst. Ondersteunt 99 talen met automatische detectie.

Verzoek om een instantie (multipart/form-data)

ParameterTypeVereistOmschrijving
file file Ja. Audiobestand (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nee STT-model: fluister (standaard), faster-fluister , sensevoice
language string Nee Taalcode. auto voor autodetectie (standaard).
timestamps boolean Nee Inclusief tijdstempels op woordniveau. Standaard: vals
diarize boolean Nee Speakerdiarisatie inschakelen. Standaard: vals

Respons

JSON-respons
{
  "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"
    }
  ]
}

Stemklonen

POST /v1/tts/clone/

Spraak genereren in een gekloonde stem. Upload een referentie audio en tekst.

Verzoek om een instantie (multipart/form-data)

ParameterTypeVereistOmschrijving
reference_audio file Ja. Referentie voice audio (10-30 seconden aanbevolen). Max 20MB.
text string Ja. Tekst om te spreken in de gekloonde stem.
model string Nee Kloonmodel: chatterbox (standaard), cosyvoice2, gpt-sovits
format string Nee Uitvoerformaat: mp3 (standaard), wav, flac
language string Nee Doeltaalcode. Moet worden ondersteund door het gekozen model.

Respons

Geeft het audiobestand terug als binaire gegevens, hetzelfde als het TTS-eindpunt.

Spraakwisselaar

POST /v1/voice-convert/

Converteer audio naar geluid als een andere stem. Upload bron audio en kies een doelstem.

Verzoek om een instantie (multipart/form-data)

ParameterTypeVereistOmschrijving
file file Ja. Bron audiobestand (MP3, WAV, FLAC). Max 50MB.
target_voice string Ja. Doelstem-ID om naar om te zetten (gebruik /v1/voices/ om beschikbare stemmen te tonen)
model string Nee Stemconversiemodel: openvoice (standaard), knn-vc
format string Nee Uitvoerformaat: wav (standaard), mp3, flac

Voorbeeldverzoek

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

Respons

Geeft het geconverteerde audiobestand terug als binaire gegevens.

Spraakvertaling

POST /v1/speech-translate/

Vertaal gesproken audio van de ene taal naar de andere. Combineert spraak-naar-tekst, vertaling, en tekst-tot-spraak in een enkele oproep.

Verzoek om een instantie (multipart/form-data)

ParameterTypeVereistOmschrijving
file file Ja. Bron audiobestand in de oorspronkelijke taal. Max 100MB.
target_language string Ja. Doeltaalcode (bv. es, fr, de, ja)
voice string Nee Stem voor vertaalde uitvoer. Automatisch geselecteerd indien weggelaten.
preserve_voice boolean Nee Poging om de spraakeigenschappen van de oorspronkelijke luidspreker te behouden. Standaard: vals

Respons

JSON-respons
{
  "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
}

Toespraak

POST /v1/speech-to-speech/

Transformeer spraakstijl, emotie of levering met behoud van de inhoud. Nuttig voor het aanpassen van toon, pacing, en expressiefheid.

Verzoek om een instantie (multipart/form-data)

ParameterTypeVereistOmschrijving
file file Ja. Bron spraak audiobestand. Max 50MB.
voice string Ja. Doelstem-ID voor de uitvoerspeech
model string Nee Model: openvoice (standaard), chatterbox
emotion string Nee Doelemotie: neutraal, happy, sad, angry, opgewond
speed float Nee Snelheidsaanpassing. Standaard: 1.0. Bereik: 0.5 tot 2.0

Respons

Geeft het getransformeerde audiobestand terug als binaire gegevens.

Audiogereedschappen

Audio processing eindpunten voor verbetering, vocale verwijdering, steel splitsen, en nog veel meer.

POST /v1/audio/enhance/

Verbeter audiokwaliteit: denoise, verbetering van de helderheid, super resolutie.

file fileAudiobestand om te verbeteren
denoise booleanDenoising inschakelen (standaard: waar)
enhance_clarity booleanVerbeter de spraakhelderheid (standaard: waar)
super_resolution booleanOpwaarderen van audiokwaliteit (standaard: false)
strength integer1-3 (licht, gemiddeld, sterk). Standaard: 2
POST /v1/audio/separate/

Aparte zang van instrumentale (vocale verwijdering) of gesplitst in stengels.

file fileAudiobestand om te scheiden
model stringdemucs (standaard) of spleeter
stems integerAantal stengels: 2, 4, 5 of 6 (standaard: 2)
format stringUitvoerformaat: wav, mp3, flac
POST /v1/audio/dereverb/

Verwijder echo en reverb van audio-opnames.

file fileAudiobestand om te verwerken
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Vrij

Analyseer audio om sleutel, BPM, en tijd handtekening te detecteren.

file fileAudio-bestand om te analyseren
Respons
{
  "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/ Vrij

Converteer audio tussen formaten.

file fileAudiobestand om te converteren
format stringDoelformaat: mp3, wav, flac, ogg, m4a, aac
bitrate integerOutputbitrate in kbps: 64, 128, 192, 256, 320
sample_rate integerMonsterpercentage: 22050, 44100, 48000
channels stringmono of stereo

Spraakgesprek

POST /v1/voice-chat/

Stuur audio of tekst en ontvang een AI reactie met gesynthetiseerde spraak.

Verzoek om een instantie (multipart/form-data of JSON)

ParameterTypeVereistOmschrijving
audio file Nee* Audio-invoer (ofwel audio of tekst vereist)
text string Nee* Tekstinvoer (hetzij audio hetzij tekst vereist)
voice string Nee Voice for AI response. Standaard: af_bella
tts_model string Nee TTS-model voor respons. Standaard: kokoro
system_prompt string Nee Aangepaste systeemprompt voor de AI
conversation_id string Nee Een bestaand gesprek voortzetten

Respons

JSON-respons
{
  "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
}

Partij TTS

POST /v1/tts/batch/

Stuur meerdere teksten voor parallelle TTS-generatie. Optioneel ontvangt u een webhook callback wanneer alle taken voltooid zijn.

Parameters

ParameterTypeOmschrijving
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptionele URL naar POST resultaten wanneer batch voltooid.

Respons

JSON-respons
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Bespreking van de voortgang met GET /v1/tts/batch/result/?batch_id=abc123

Voice Inbedding

POST /v1/voice-embed/

Een voice-inbedding van referentie-audio vooraf berekenen. Gebruik de returned embed_id in latere voice-kloonverzoeken voor bijna-instant-generatie.

Parameters

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

Respons

JSON-respons
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Gezondheidscontrole

GET /v1/health/

Controleer de GPU-serverstatus, geladen modellen en wachtrijgrootte. Er is geen authenticatie vereist. Gevangen gedurende 30 seconden.

Respons

JSON-respons
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Lijstmodellen

GET /v1/models/

Geeft een lijst van alle beschikbare modellen met hun mogelijkheden.

Respons

JSON-respons
{
  "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
    }
  ]
}

Lijst Stemmen

GET /v1/voices/

Geeft een lijst van alle beschikbare stemmen, optioneel gefilterd door model of taal.

Parameters opvragen

ParameterTypeOmschrijving
model string Filter op model-ID (bv. kokoro)
language string Filter op taalcode (bv. en)
gender string Filter op geslacht: mannelijk, vrouwelijke, neutraal

Respons

JSON-respons
{
  "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
}

Ondertiteling (SRT / VTT) nieuw

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

Genereer gesynchroniseerde ondertitels voor elke voltooide TTS-taak. Runs Whisper uitlijning over de audio en geeft SRT of WebVTT terug. Resultaat wordt gecached op de schijf dus een tweede oproep voor dezelfde uuid is een disk read.

Parameters opvragen

ParameterVereistOmschrijving
uuidJa.Job UUID geretourneerd door /v1/tts/of /v1/voice-clone/.
formatNeesrt (standaard) of vtt.
downloadNee1 om Content-Dispositie te versturen: bijlage zodat de browser opslaat in plaats van displays.
languageNeeHint naar het uitlijningsmodel (automatisch gedetecteerd indien weggelaten).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Woordenboek van de uitspraak nieuw

GET POST DELETE /api/v1/pronunciations/

Vertel de TTS-engine hoe specifieke woorden uit te spreken. Bewaarde entries automatisch op elk TTS-verzoek dat u doet. 200-entry per-account limiet.

Verzoek om een instantie (POST)

ParameterTypeOmschrijving
wordstringWord to override (bijv. GIF, Anthropisch). Woordgebonden afgestemd.
replacementstringHoe je het spelt voor het model (bv. jiff, ann pyrazol ick).
languagestringOptionele ISO-code. Leeg = geldt voor alle talen.
case_sensitivebooleanStandaard vals. Match geval precies wanneer 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-..."

U kunt ook per-request-overrides doorgeven zonder ze op te slaan, inclusief uitspraken op een /v1/tts/aanroep als object of een array (zie de TTS-eindpuntparams).

Artikel Verteller nieuw

Laat een enkele