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

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

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

Alle API-verzoeken vereisen authenticatie via 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.

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 Concurrent Maximale tekstlengte
Pro 60 5 5.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) 1 krediet per 1000 tekens
TTS (standaardmodellen: Kokoro, CosyVoice 2, enz.) 2 kredieten per 1000 tekens
TTS (Premiummodellen: Tortoise, Chatterbox, enz.) 4 kredieten per 1000 tekens
Toespraak naar tekst 2 kredieten per minuut audio
Stemklonen 4 kredieten per 1000 tekens
Spraakwisselaar 3 kredieten per minuut audio
Audio-verbetering 2 kredieten per minuut audio
Vocal Removal / Stam Splitsing 3-4 kredieten per minuut audio
Spraakvertaling 5 kredieten per minuut audio
Spraakgesprek 3 kredieten 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 Ja. Model ID (bv. kokoro, chatterbox, piper)
text string Ja. Tekst om te zetten naar spraak (max 5.000 tekens voor Pro, 50.000 voor Enterprise)
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.
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

Respons

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

Response Headers
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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 oorspronkelijke spreker te behouden

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 fileAudiobestand 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
}

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
}

Codevoorbeelden

Tekst naar spraak

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

Toespraak naar tekst

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"])

Stemklonen

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 naar spraak

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

Toespraak naar tekst

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 naar spraak

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

Toespraak naar tekst

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"

Stemklonen

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

Audio-verbetering

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

Foutcodes

Alle fouten geven een JSON antwoord terug met een error veld.

Fout in antwoordformaat
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
HTTP-statusError CodeOmschrijving
400 bad_request Ongeldige aanvraagparameters. Controleer het foutbericht voor details.
401 unauthorized Ontbrekende of ongeldige API-sleutel.
402 insufficient_credits Niet genoeg credits. Koop meer bij /prijs/.
403 forbidden API toegang niet beschikbaar op uw 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.

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 resultaten zijn beschikbaar om te downloaden voor 24 uur na voltooiing. Zorg ervoor dat ze snel te downloaden.

Klaar om te bouwen?

Haal je API-sleutel en begin met het integreren van TTS.ai in je applicaties.