Dokumentatioun

D'Integratioun vun TTS.ai an Är Applikatiounen mat eiser REST API. OpenAI-kompatibelt Format fir einfach Migratioun.

REST API OpenAI-kompatibel JSON Antworten Streaming-Unterstützung

Iwwersiicht

D'TTS.ai API bitt programmateschen Zougang zu all Plattformfeatures: Text-to-Speech Synthese, Speech-to-Text Transkriptioun, Stëmm Klonen, Audioverbesserung, a méi. D'API benotzt Standard REST Konventiounen mat JSON Request/Response Bodyen.

API Schlëssel

Gitt Ären API Schlëssel heihier Kont-Einstellungen. Et gëtt och en Enterprise-Programm.

Basis-URL

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

Auth

Lëscht vu lëtzebuergesche Schrëftsteller Authorization Kopfzeil

Authentifikatioun

All API-Ufroen erfuerderen eng Authentifizéierung iwwer e Bearer-Token am Authorization Kopfzeil.

HTTP-Kopplung
Authorization: Bearer sk-tts-your-api-key-here
Den Haaptuert ass Clairvaux. Gitt et net mat Client-Code, ëffentleche Repositories oder Protokoller gedeelt. Rotéiert Schlëssel regelméisseg aus Äre Kont-Einstellungen.

Basis-URL

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

All Endpunkte sinn relativ zu dëser Basis- URL. Zum Beispill ass den TTS- Endpunkt:

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

Geschwindegkeetsbegrenzung

D'Gréisst vun de Planzen variéiert.

Planz Ufroen/min Gläichzäiteg Maximal Textlängt
Pro 60 5 5.000 Zeilen
Enterprise 300 20 50.000 Zeilen

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditkoart

Service Käschte Eenheet
TTS (Fräi Modeller: Piper, VITS, MeloTTS) 1 Kredit pro 1. 000 Zeichen
D'Standard-Modeller (Kokoro, CosyVoice 2, etc.) 2 Punkten pro 1. 000 Zeichen
Den Haaptuert ass Tourcoing (fréier: Tourcoing, Tourcoing, etc.). 4 Punkten pro 1. 000 Zeichen
Sprooch op Text 2 Punkten per minute of audio
Stëmmklonung 4 Punkten pro 1. 000 Zeichen
Stimmwiessel 3 Punkten per minute of audio
Audioverbesserung 2 Punkten per minute of audio
Lëscht vu lëtzebuergesche Schrëftsteller 3-4 Säiten. per minute of audio
Sproochiwwersetzung 5 Punkten per minute of audio
Stëmmchat 3 Punkten pro Zyklus
Key & BPM Finder Fräi --
Audiokonverter Fräi --

Text- op- Sprooch

POST /v1/tts/

Konvertéiert Text an Sprooch. Gitt eng Audiodatei am ugefuerderte Format zréck.

Ufrokörper

ParameterTypErfuerderlechBeschreiwung
model string Ja Modell-ID (z. B. kokoro, chatterbox, piper)
text string Ja Text fir an Sprooch ze konvertéieren (max. 5.000 Zeichen fir Pro, 50.000 fir Enterprise)
voice string Ja Stëmm-ID (Benotzt /v1/voices/ fir verfügbar Stimmen opzelëschten)
format string Nee Ausgabeformat: mp3 (Standard), wav, flac, ogg
speed float Nee Multiplikator fir d'Sproochgeschwindegkeet. Standard: 1.0. Beräich: 0.5 bis 2.0
language string Nee Sproochcode (z.B. en, es). Automatesch erkannt wann net uginn.
stream boolean Nee Streaming-Äntwert aktivéieren. Standard: false

D'Ufro

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

Äntwert

Gitt d'Audiodatei als Binärdaten zréck mat der entspriechender Content-Type Kopfzeil (audio/mpeg, audio/wav, asw.)

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

Sprooch op Text

POST /v1/stt/

Audio an Text ëmwandelen. Ënnerstëtzt 99 Sproochen mat automatescher Erkennung.

Ufrokörper (multipart/form-data)

ParameterTypErfuerderlechBeschreiwung
file file Ja Audiodatei (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nee STT-Modell: whisper (Standard), faster-whisper, sensevoice
language string Nee D'Code-Sprooche sinn d'Code-Sproochen (Code-Languages) an d'Code-Sproochen (Code-Languages).
timestamps boolean Nee Zäitstempel op Wuertniveau abezéien. Standard: false
diarize boolean Nee Lautsprecherdiariséierung aktivéieren. Standard: false

Äntwert

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

Stëmmklonung

POST /v1/tts/clone/

Sprooch an enger geklonter Stëmm generéieren. Referenz-Audio an -Text erofladen.

Ufrokörper (multipart/form-data)

ParameterTypErfuerderlechBeschreiwung
reference_audio file Ja Referenz Stëmm Audio (10-30 Sekonnen empfohlen). Max 20MB.
text string Ja Den Haaptuert ass Clohars-Carnoët.
model string Nee Klonmodell: chatterbox (Standard), cosyvoice2, gpt-sovits
format string Nee Ausgabeformat: mp3 (Standard), wav, flac
language string Nee Code vun der Zilsprooch. Et muss vum ausgewielte Modell ënnerstëtzt ginn.

Äntwert

Gitt d'Audiodatei als Binärdaten zréck, déi selwecht wéi den TTS-Ennpunkt.

Stimmwiessel

POST /v1/voice-convert/

Audio ëmwandelen fir wéi eng aner Stëmm ze klingen. Quell-Audio laden an eng Zilstëmm wielen.

Ufrokörper (multipart/form-data)

ParameterTypErfuerderlechBeschreiwung
file file Ja Quell-Audiodatei (MP3, WAV, FLAC). Max 50MB.
target_voice string Ja Ziel-Stëmm-ID fir ze konvertéieren (Benotzt /v1/voices/ fir verfügbar Stimmen opzelëschten)
model string Nee Stëmmkonversiounsmodell: openvoice (Standard), knn-vc
format string Nee Ausgabeformat: wav (Standard), mp3, flac

D'Ufro

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

Äntwert

Gitt d' ëmgewandelt Audiodatei als Binärdaten zréck.

Sproochiwwersetzung

POST /v1/speech-translate/

Iwwersetzt gesot Audio vun enger Sprooch an eng aner. Kombinéiert Sprooch-zu-Text, Iwwersetzung a Text-zu-Sprooch an engem eenzegen Uruff.

Ufrokörper (multipart/form-data)

ParameterTypErfuerderlechBeschreiwung
file file Ja Quell-Audiodatei an der Originalsprooch. Max 100MB.
target_language string Ja Code vun der Zilsprooch (z. B. es, fr, de, ja)
voice string Nee Sprooch fir d'iwwersat Ausgabe. Automatesch ausgewielt wann net opginn.
preserve_voice boolean Nee Versuchen, den urspréngleche Sprecher ze behalen

Äntwert

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

Speech to Speech

POST /v1/speech-to-speech/

Transforméiert de Sproochstil, d'Emotioun oder d'Liesung andeems Dir den Inhalt behält. Nützlech fir den Ton, d'Tempo an d'Ausdrécklechkeet unzepassen.

Ufrokörper (multipart/form-data)

ParameterTypErfuerderlechBeschreiwung
file file Ja Quell- Audiodatei fir Sprooch. Max 50MB.
voice string Ja Ziel-Stëmm-ID fir d'Ausgabe-Sprooch
model string Nee Modell: openvoice (Standard), chatterbox
emotion string Nee D'Resultat ass d'Resultat vun der Kombinatioun vun den Elementer a, b, c, d an e.
speed float Nee Geschwindegkeetsaanpassung. Standard: 1.0. Beräich: 0.5 bis 2.0

Äntwert

Gitt d'transforméiert Audiodatei als Binärdaten zréck.

Audio-Tools

D'Resultat vun dësem Prozess ass d'Verstäerkung, d'Verstäerkung, d'Verstäerkung, d'Verstäerkung.

POST /v1/audio/enhance/

D'Resultat ass eng verbessert Leeschtung, méi Stabilitéit, méi Präzisioun an e bessere Sound.

file fileAudiodatei fir ze verbesseren
denoise booleanAnti- Rauschen aktivéieren (Standard: true)
enhance_clarity booleanSproochklarheet verbesseren (Standard: true)
super_resolution booleanAudioqualitéit erhéijen (Standard: falsch)
strength integer1- 3 (liicht, mëttel, staark). Standard: 2
POST /v1/audio/separate/

Et gëtt verschidden Aarte vun Instrumenter (oder Instrumentergruppen) fir d'Spill.

file fileAudiodatei fir ze trennen
model stringdemucs (Standard) oder spleeter
stems integerZuel vun de Stämm: 2, 4, 5 oder 6 (Standard: 2)
format stringAusgabeformat: wav, mp3, flac
POST /v1/audio/dereverb/

Et gëtt och en Audio-CD-Recorder.

file fileAudiodatei ze verarbeiten
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Fräi

Analyséiert Audio fir Schlëssel, BPM, a Taktsignatur ze detektéieren.

file fileAudiodatei fir ze analyséieren
Äntwert
{
  "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/ Fräi

Audio tëscht Formaten ëmwandelen.

file fileZe konvertéierend Audiodatei
format stringZilformat: mp3, wav, flac, ogg, m4a, aac
bitrate integerAusgangsbitrate a kbps: 64, 128, 192, 256, 320
sample_rate integerAbrëll 2018, S. 450, 451, 452
channels stringmono oder stereo

Stëmmchat

POST /v1/voice-chat/

Et gëtt och Texter oder Audiodateien, déi mat engem Synthesizer gespillt ginn.

Ufrokörper (multipart/form-data oder JSON)

ParameterTypErfuerderlechBeschreiwung
audio file Nee* Audioinput (entweder audio oder text erfuerderlech)
text string Nee* Textinput (entweder audio oder text erfuerderlech)
voice string Nee Stëmm fir KI-Äntwert. Standard: af_bella
tts_model string Nee TTS-Modell fir d'Äntwert. Standard: kokoro
system_prompt string Nee Eegen Systemprompt fir d'KI
conversation_id string Nee En existent Gespréich weiderféieren

Äntwert

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

Modellen opzielen

GET /v1/models/

Gitt eng Lëscht vun alle verfügbare Modeller mat hire Fäegkeeten zréck.

Äntwert

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

Lëscht vu Stëmmen

GET /v1/voices/

Gitt eng Lëscht vun alle verfügbare Stëmmen zréck, méiglecherweis no Modell oder Sprooch gefiltert.

Parameter

ParameterTypBeschreiwung
model string Filter no Modell-ID (z. B. kokoro)
language string Filter no Sproochcode (z. B. lu)
gender string Filter no Geschlecht: male, female, neutral

Äntwert

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

Code Beispiller

Text- op- Sprooch

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

Sprooch op Text

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

Stëmmklonung

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)

Text- op- Sprooch

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

Sprooch op Text

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

Text- op- Sprooch

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

Sprooch op Text

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"

Stëmmklonung

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

Audioverbesserung

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

Fehlercodes

All Feeler ginn eng JSON-Antwort mat engem error Feld.

Format fir d'Fehlerantwort
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
HTTP StatusFehlercodeBeschreiwung
400 bad_request Ongülteg Ufroparameter. Kuckt d' Feelermeldung fir Detailer.
401 unauthorized Fëllenden oder ongültege API Schlëssel.
402 insufficient_credits Net genuch Kreditter. Kaaft méi bei /pricing/.
403 forbidden API-Zugang ass op Ärem Plang net verfügbar.
404 not_found Modell oder Stëmm net fonnt.
413 file_too_large Déi erofgeladen Datei iwwerschreift d'Gréisstlimit.
429 rate_limited Zu vill Ufroen. Iwwerpréift d' Kopfzeilen mat der Geschwindegkeetsbegrenzung.
500 internal_error Serverfehler. Probéiert et méi spéit nach eng Kéier.
503 model_loading Modell gëtt geladen. Probéiert et an e puer Sekonnen erëm.

Webhooks

Fir laang lafend Aufgaben (Stem Splitting, Batch TTS), kënnt Dir e webhook_url Parameter uginn. Wann d'Aufgab fäerdeg ass, wäerte mir d'Resultat un Är URL POST maachen.

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 Resultater sinn fir 24 Stonnen no der Fertigstellung erofzelueden. Gitt sécher se séier erofzelueden.

Bereet ze bauen?

D'Applikatioun ass gratis an et kann een se op verschiddene Plattformen installéieren.