API-documentatie
Integreer TTS.ai in uw toepassingen met onze REST API. OpenAI-compatibel formaat voor eenvoudige migratie.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Basis-URL
Alle eindpunten zijn relatief ten opzichte van deze basis-URL. Bijvoorbeeld, het TTS eindpunt is:
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
Converteer tekst naar spraakaudio. Geeft audiobestand terug in het gewenste formaat.
Verzoek om een instantie
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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 -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 Datumformaat standaard voor 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
interpret-as Invoer Gesproken 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 mdy voor Engels en dmy elders; overschrijven met 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."
}Respons
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.Volledig voorbeeld
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.
Toespraak naar tekst
Audio overschrijven op tekst. Ondersteunt 99 talen met automatische detectie.
Verzoek om een instantie (multipart/form-data)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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
{
"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
Spraak genereren in een gekloonde stem. Upload een referentie audio en tekst.
Verzoek om een instantie (multipart/form-data)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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
Converteer audio naar geluid als een andere stem. Upload bron audio en kies een doelstem.
Verzoek om een instantie (multipart/form-data)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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 -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
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)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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
{
"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
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)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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.
Verbeter audiokwaliteit: denoise, verbetering van de helderheid, super resolutie.
| file file | Audiobestand om te verbeteren |
| denoise boolean | Denoising inschakelen (standaard: waar) |
| enhance_clarity boolean | Verbeter de spraakhelderheid (standaard: waar) |
| super_resolution boolean | Opwaarderen van audiokwaliteit (standaard: false) |
| strength integer | 1-3 (licht, gemiddeld, sterk). Standaard: 2 |
Aparte zang van instrumentale (vocale verwijdering) of gesplitst in stengels.
| file file | Audiobestand om te scheiden |
| model string | demucs (standaard) of spleeter |
| stems integer | Aantal stengels: 2, 4, 5 of 6 (standaard: 2) |
| format string | Uitvoerformaat: wav, mp3, flac |
Verwijder echo en reverb van audio-opnames.
| file file | Audiobestand om te verwerken |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analyseer audio om sleutel, BPM, en tijd handtekening te detecteren.
| file file | Audio-bestand om te analyseren |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Converteer audio tussen formaten.
| file file | Audiobestand om te converteren |
| format string | Doelformaat: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Outputbitrate in kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Monsterpercentage: 22050, 44100, 48000 |
| channels string | mono of stereo |
Spraakgesprek
Stuur audio of tekst en ontvang een AI reactie met gesynthetiseerde spraak.
Verzoek om een instantie (multipart/form-data of JSON)
| Parameter | Type | Vereist | Omschrijving |
|---|---|---|---|
| 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
{
"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
Stuur meerdere teksten voor parallelle TTS-generatie. Optioneel ontvangt u een webhook callback wanneer alle taken voltooid zijn.
Parameters
| Parameter | Type | Omschrijving |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optionele URL naar POST resultaten wanneer batch voltooid. |
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
Een voice-inbedding van referentie-audio vooraf berekenen. Gebruik de returned embed_id in latere voice-kloonverzoeken voor bijna-instant-generatie.
Parameters
| Parameter | Type | Omschrijving |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Respons
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Gezondheidscontrole
Controleer de GPU-serverstatus, geladen modellen en wachtrijgrootte. Er is geen authenticatie vereist. Gevangen gedurende 30 seconden.
Respons
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Lijstmodellen
Geeft een lijst van alle beschikbare modellen met hun mogelijkheden.
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
Geeft een lijst van alle beschikbare stemmen, optioneel gefilterd door model of taal.
Parameters opvragen
| Parameter | Type | Omschrijving |
|---|---|---|
| model | string | Filter op model-ID (bv. kokoro) |
| language | string | Filter op taalcode (bv. en) |
| gender | string | Filter op geslacht: mannelijk, vrouwelijke, neutraal |
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
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
| Parameter | Vereist | Omschrijving |
|---|---|---|
| uuid | Ja. | Job UUID geretourneerd door /v1/tts/of /v1/voice-clone/. |
| format | Nee | srt (standaard) of vtt. |
| download | Nee | 1 om Content-Dispositie te versturen: bijlage zodat de browser opslaat in plaats van displays. |
| language | Nee | Hint naar het uitlijningsmodel (automatisch gedetecteerd indien weggelaten). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Woordenboek van de uitspraak nieuw
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)
| Parameter | Type | Omschrijving |
|---|---|---|
| word | string | Word to override (bijv. GIF, Anthropisch). Woordgebonden afgestemd. |
| replacement | string | Hoe je het spelt voor het model (bv. jiff, ann pyrazol ick). |
| language | string | Optionele ISO-code. Leeg = geldt voor alle talen. |
| case_sensitive | boolean | Standaard vals. Match geval precies wanneer 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-..."
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 tag vallen op een artikelpagina en bezoekers krijgen een vaste lezersbalk die de pagina vertelt op de klik. Auto-detecteert de inhoud van het artikel, ondersteunt aangepaste spraak / model / positie / accentkleur.
<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>
Opties
| Parameter | Omschrijving |
|---|---|
data-pk | Publishbare sleutel (pk-tts-...). Domeinbeperkingen afgedwongen via toegewezen_domeinen veld van de sleutel. |
data-voice | Voice ID. Standaard af_bella. |
data-model | TTS model ID. Standaard kokoro. |
data-extract | auto (default) (inschakelt op artikel/main/.post-content/.entry-content selectors, valt terug naar de dichtste paragraaf cluster. Of passeer een CSS-selector om een bepaald element te richten. |
data-position | bottom (standaard) of top. |
data-color | Accentkleur (elke CSS-kleur). Standaard #e60000. |
data-min-chars / data-max-chars | Sla de balk over als het artikel korter is dan min-chars (standaard 200). Cap ingang bij max-chars (standaard 50.000). |
Luisterknop-widget
Inline knop-stijl inbedden. Renders naast de tag en speelt een knop-triggered korte knipsel. Verschillende vorm dan de Artikel-Verteller hierboven (die automatisch een pagina-spanner inwerpt en het hele artikel vertelt).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Opgeslagen stemmen (persistent klonen)
Upload een referentie audio eenmaal, krijg terug een aanhoudende voice_id, dan referentie dat id in TTS-verzoeken in plaats van opnieuw te uploaden audio elke oproep. Ideaal voor high-volume integraties.
Een stem uploaden
POST
https://tts.ai/api/v1/user-voices/
Auth vereist
Multipart formulier. Velden: bestand (equired, 5-30s audio), naam (equired), taal (optioneel, default en), model (optioneel auto-picks cosyvoice2 voor zh/ja/ko anders openvoice), consent_confirmed (equired, any trutyy value).
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"
}
Gebruik de opgeslagen stem in TTS
POST naar /api/v1/tts/ (NOTE: web VPS host, niet api.tts.ai) met user_voice_id. Wij laden uw opgeslagen audio en route naar de kloonpijpleiding.
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.
Lijst / verwijderen
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
Archief / reactiveren (vrij)
Gearchiveerde stemmen blijven in uw account, maar kunnen niet worden gebruikt in TTS. Nuttig voor slapende eindgebruikers zodat uw lijst schoon blijft.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Codevoorbeelden
Tekst naar spraak
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')}")
Toespraak naar 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"])
Stemklonen
# 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 naar spraak
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();
Toespraak naar 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 naar spraak
# 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
Toespraak naar 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"
Stemklonen
# 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
Audio-verbetering
# 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
Foutcodes
Alle fouten geven een JSON antwoord terug met een error veld.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP-status | Foutcode | Omschrijving |
|---|---|---|
| 400 | bad_request |
Ongeldige aanvraagparameters. Controleer het foutbericht voor details. |
| 401 | unauthorized |
Ontbrekende of ongeldige API-sleutel. |
| 402 | insufficient_credits |
Niet genoeg karakters. Koop meer bij /pricing/. |
| 403 | forbidden |
U heeft geen toestemming om toegang te krijgen tot deze hulpbron (bijv. de taak van een andere gebruiker na te trekken). API-toegang zelf is opgenomen in elk plan. |
| 404 | not_found |
Model of stem niet gevonden. |
| 413 | file_too_large |
Geüpload bestand overschrijdt de limiet van de grootte. |
| 429 | rate_limited |
Te veel verzoeken. Controleer snelheid limiet headers. |
| 500 | internal_error |
Serverfout. Probeer het later nog eens. |
| 503 | model_loading |
Model is aan het laden. |
Webhooks
Voor lang lopende taken (stem splitsen, batch TTS), kunt u een webhook_url parameter geven. Wanneer de taak is voltooid, zullen we het resultaat naar uw URL POSTen.
{
"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"
}
Klaar om te bouwen?
Krijg je API-sleutel en begin TTS.ai in je applicaties te integreren.