API-Dokumentation

Integrieren Sie TTS.ai in Ihre Anwendungen mit unserer REST API. OpenAI-kompatibles Format für einfache Migration.

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

Überblick

Die TTS.ai API bietet programmatischen Zugriff auf alle Plattformfunktionen: Text-zu-Speech-Synthese, Sprach-zu-Text-Transkription, Sprachklonen, Audio-Verbesserung und vieles mehr. Die API verwendet Standard-REST-Konventionen mit JSON Request/Response-Organen.

API-Schlüssel

Holen Sie sich Ihren API-Schlüssel aus Kontoeinstellungen. Verfügbar auf Pro- und Enterprise-Pläne.

Basis-URL

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

Auth

Träger Token über Authorization Kopfzeile

Authentifizierung

Alle API-Anfragen erfordern die Authentifizierung über ein Bearer Token im Authorization Kopfzeile.

HTTP-Header
Authorization: Bearer sk-tts-your-api-key-here
Halten Sie Ihren API-Schlüssel geheim. Teilen Sie es nicht im clientseitigen Code, öffentlichen Repositories oder Protokollen. Drehen Sie die Schlüssel regelmäßig aus Ihren Kontoeinstellungen.

SDKs

Offizielle SDKs machen es einfach, TTS.ai in Ihre Anwendung zu integrieren. Beide sind Open Source und auf GitHub verfügbar.

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 Endpunkte sind relativ zu dieser Basis-URL. Zum Beispiel ist der TTS-Endpunkt:

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

Steuersätze

Die Obergrenzen der API-Rate variieren je nach Plan:

ENTWICKLUNG Anträge/min Gleichzeitig Maximale Textlänge
Frei 10 2 500 Zeichen
Starter 30 3 100 000 Zeichen
Pro 60 5 100 000 Zeichen
Unternehmen 300 20 50.000 Zeichen

Rate Limit Header sind in jeder Antwort enthalten: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditkosten

Dienstleistung Kosten Einheit
TTS (kostenlose Modelle: Piper, VITS, MeloTTS) 1000 Zeichen je 1000 Zeichen
TTS (Standardmodelle: Kokoro, CosyVoice 2 usw.) 2.000 Zeichen je 1000 Zeichen
TTS (Premium-Modelle: Tortoise, Chatterbox, etc.) 4.000 Zeichen je 1000 Zeichen
Rede zum Text 2.000 Zeichen pro Minute Audio
Stimme Klonen 4.000 Zeichen je 1000 Zeichen
Sprachwechsler 3.000 Zeichen pro Minute Audio
Audio-Verbesserung 2.000 Zeichen pro Minute Audio
Stimmentfernung / Stem Splitting 3.000-4.000 Zeichen pro Minute Audio
Sprachübersetzung 5.000 Zeichen pro Minute Audio
Sprach-Chat 3.000 Zeichen pro Spielzug
Schlüssel & BPM-Finder Frei --
Audio-Konverter Frei --

Text in die Rede

POST /v1/tts/

Konvertieren von Text in Sprach-Audio. Gibt die Audiodatei im gewünschten Format zurück.

Antragsstelle

ParameterArtErforderlichWarenbezeichnung
model string Nein Muster-ID (z. B. kokoro , chatterbox , piper)
text string Nein Text zum Konvertieren in Sprache (max 100.000 Zeichen pro Anfrage)
voice string Nein Sprach-ID (Verwenden von /v1/voices/ zur Liste der verfügbaren Stimmen)
format string Nein Ausgabeformat: mp3 (Standard), wav, flac, ogg
speed float Nein Sprechender Geschwindigkeitsmultiplikator. Standard: 1.0 . Bereich: 0.5 bis 2.0
language string Nein Sprachcode (z.B. de , es ). Selbstentdeckt, falls weggelassen.
stream boolean Nein Streaming-Antwort aktivieren. Standard: false

Beispiel-Anforderung

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

Ansprechen

Gibt die Audiodatei als binäre Daten mit dem entsprechenden Content-Type Header (audio/mpeg , audio/wav , etc.) zurück.

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

Rede zum Text

POST /v1/stt/

Transcribe audio to text. Unterstützt 99 Sprachen mit automatischer Erkennung.

Antragsstelle (multipart/form-data)

ParameterArtErforderlichWarenbezeichnung
file file Nein Audiodatei (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max. 100MB.
model string Nein STT-Modell: whisper (Standard), faster-whisper , sensevoice
language string Nein Sprachcode. auto zur automatischen Erkennung (Standard).
timestamps boolean Nein Einschließen von Zeitstempeln auf Wortebene. Standard: false
diarize boolean Nein Lautsprecher-Diarisierung aktivieren. Standard: false

Ansprechen

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

Stimme Klonen

POST /v1/tts/clone/

Erzeugen Sie Sprache in einer geklonten Stimme. Hochladen Sie eine Referenz-Audio und Text.

Antragsstelle (multipart/form-data)

ParameterArtErforderlichWarenbezeichnung
reference_audio file Nein Referenzstimme Audio (10-30 Sekunden empfohlen). Max 20MB.
text string Nein Text, um in der geklonten Stimme zu sprechen.
model string Nein Klonmodell: Chatterbox (Standard), Cosyvoice2, gpt-sovits
format string Nein Ausgabeformat: mp3 (Standard), wav, flac
language string Nein Target language code. Muss durch das gewählte Modell unterstützt werden.

Ansprechen

Gibt die Audiodatei als binäre Daten zurück, genauso wie der TTS-Endpunkt.

Sprachwechsler

POST /v1/voice-convert/

Konvertieren Sie Audio, um wie eine andere Stimme zu klingen. Quelle Audio hochladen und wählen Sie eine Zielstimme.

Antragsstelle (multipart/form-data)

ParameterArtErforderlichWarenbezeichnung
file file Nein Quelle Audio-Datei (MP3, WAV, FLAC). Max 50MB.
target_voice string Nein Target Voice ID zum Konvertieren in (Verwenden von /v1/voices/ zur Liste verfügbarer Stimmen)
model string Nein Sprachumwandlungsmodell: openvoice (Standard), knn-vc
format string Nein Ausgabeformat: wav (Standard), mp3, flac

Beispiel-Anforderung

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

Ansprechen

Gibt die konvertierte Audiodatei als binäre Daten zurück.

Sprachübersetzung

POST /v1/speech-translate/

Übersetze gesprochenes Audio von einer Sprache zur anderen. Verbindet Sprach-zu-Text, Übersetzung und Text-zu-Sprechen in einem einzigen Aufruf.

Antragsstelle (multipart/form-data)

ParameterArtErforderlichWarenbezeichnung
file file Nein Quelle Audiodatei in der Originalsprache. Max 100MB.
target_language string Nein Zielsprachcode (z. B. es , fr, de , ja)
voice string Nein Stimme für übersetzte Ausgabe. Auto-selektiert, wenn weggelassen.
preserve_voice boolean Nein Versuch, die Spracheigenschaften des ursprünglichen Lautsprechers zu bewahren. Standard: false

Ansprechen

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
}

Rede zur Rede

POST /v1/speech-to-speech/

Transformieren Sie Sprachstil, Emotion, oder Lieferung unter Beibehaltung des Inhalts. Nützlich für die Anpassung Ton, Tempo, und Ausdruckskraft.

Antragsstelle (multipart/form-data)

ParameterArtErforderlichWarenbezeichnung
file file Nein Quelle Sprach-Audio-Datei. Max 50MB.
voice string Nein Target Voice ID für die Ausgabesprache
model string Nein Modell: openvoice (Standard), chatterbox
emotion string Nein Zielemotion: neutral , happy , sad , angry , excited
speed float Nein Geschwindigkeitsanpassung. Standard: 1.0 . Bereich: 0.5 bis 2.0

Ansprechen

Gibt die transformierte Audiodatei als binäre Daten zurück.

Audio-Werkzeuge

Audioverarbeitungsendpunkte zur Verbesserung, Stimmentfernung, Stammspaltung und mehr.

POST /v1/audio/enhance/

Verbesserung der Audioqualität: Denoise, Verbesserung der Klarheit, super Auflösung.

file fileAudio-Datei zu verbessern
denoise booleanDenoisieren aktivieren (Standard: true)
enhance_clarity booleanVerbesserung der Sprachklarheit (Standard: true)
super_resolution booleanHohe Audioqualität (Standard: false)
strength integer1-3 (leicht, mittel, stark). Voreinstellung: 2
POST /v1/audio/separate/

Trennen Sie Vocals von Instrumentals (Gesangsentfernung) oder in Stängel aufgeteilt.

file fileAudiodatei zum Trennen
model stringdemucs (Voreinstellung) oder spleeter
stems integerAnzahl der Stängel: 2, 4, 5 oder 6 (Standard: 2)
format stringAusgabeformat: wav, mp3, flac
POST /v1/audio/dereverb/

Entfernen Sie Echo und Reverb von Audioaufnahmen.

file fileZu verarbeitende Audiodatei
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Frei

Analysieren Sie Audio, um Schlüssel, BPM und Zeitsignatur zu erkennen.

file fileAudiodatei zur Analyse
Ansprechen
{
  "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/ Frei

Konvertieren Sie Audio zwischen Formaten.

file fileAudiodatei zum Konvertieren
format stringZielformat: mp3, wav, flac, ogg, m4a, aac
bitrate integerAusgangsbitrate in kbps: 64, 128, 192, 256, 320
sample_rate integerStichprobenrate: 22050, 44100, 48000
channels stringmono oder stereo

Sprach-Chat

POST /v1/voice-chat/

Senden Sie Audio oder Text und erhalten Sie eine KI-Reaktion mit synthetisierter Sprache.

Antragsstelle (multipart/form-data oder JSON)

ParameterArtErforderlichWarenbezeichnung
audio file Nein* Audioeingabe (entweder Audio oder Text erforderlich)
text string Nein* Texteingabe (entweder audio oder text erforderlich)
voice string Nein Stimme für KI-Antwort. Standard: af_bella
tts_model string Nein TTS-Modell für Antwort. Standard: kokoro
system_prompt string Nein Benutzerdefinierte Systemaufforderung für die KI
conversation_id string Nein Ein bestehendes Gespräch fortsetzen

Ansprechen

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
}

Batch TTS

POST /v1/tts/batch/

Senden Sie mehrere Texte für die parallele TTS-Generierung. Optional erhalten Sie einen Webhook-Callback, wenn alle Aufträge abgeschlossen sind.

Parameter

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

Ansprechen

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

Umfragefortschritt mit GET /v1/tts/batch/result/?batch_id=abc123

Einbetten der Stimme

POST /v1/voice-embed/

Vorkomprimieren Sie eine Spracheinbettung aus Referenz-Audio. Verwenden Sie die zurückgegebene embed_id in anschließenden Sprach-Klonanfragen für nahezu instant Generierung.

Parameter

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

Ansprechen

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

Gesundheitscheck

GET /v1/health/

Überprüfen Sie den GPU-Serverstatus, geladene Modelle und Warteschlangengröße. Keine Authentifizierung erforderlich.

Ansprechen

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

Listenmodelle

GET /v1/models/

Gibt eine Liste aller verfügbaren Modelle mit ihren Fähigkeiten zurück.

Ansprechen

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

Stimmen auflisten

GET /v1/voices/

Gibt eine Liste aller verfügbaren Stimmen zurück, wahlweise gefiltert nach Modell oder Sprache.

Abfrageparameter

ParameterArtWarenbezeichnung
model string Filter nach Modell-ID (z. B. kokoro )
language string Nach Sprachcode filtern (z.B. de )
gender string Filter nach Geschlecht: männlich , weiblich , neutral

Ansprechen

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

Text in die Rede

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

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

Stimme Klonen

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 in die Rede

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

Rede zum 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 in die Rede

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

Rede zum 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"

Stimme Klonen

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

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

Alle Fehler liefern eine JSON-Antwort mit einem error field.

Fehler-Antwort-Format
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP-StatusFehlercodeWarenbezeichnung
400 bad_request Ungültige Request-Parameter. Überprüfen Sie die Fehlermeldung für Details.
401 unauthorized Fehlender oder ungültiger API-Schlüssel.
402 insufficient_credits Nicht genug Zeichen. Kaufen Sie mehr bei /pricing/.
403 forbidden API-Zugriff auf Ihren Plan nicht verfügbar.
404 not_found Modell oder Stimme nicht gefunden.
413 file_too_large Die hochgeladene Datei übersteigt die Größe.
429 rate_limited Zu viele Anfragen. Kontrollieren Sie die Geschwindigkeitsbegrenzungs-Header.
500 internal_error Serverfehler. Versuchen Sie es später noch einmal.
503 model_loading Das Modell wird geladen und in wenigen Sekunden erneut getestet.

Webhooks

Für langlaufende Aufgaben (Stammspaltung, Batch TTS) können Sie einen Parameter webhook_url angeben. Wenn die Aufgabe abgeschlossen ist, werden wir das Ergebnis auf Ihre URL POST setzen.

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 Ergebnisse stehen zum Download für 24 Stunden nach Abschluss zur Verfügung. Stellen Sie sicher, sie prompt herunterladen.

Bereit zum Bauen?

Holen Sie sich Ihren API-Schlüssel und integrieren Sie TTS.ai in Ihre Anwendungen.