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

Freie Stufe — kein Schlüssel erforderlich. Anonyme POSTs an /v1/tts/ Arbeit ohne Auth, bis zu 5.000 Zeichen/Tag pro IP, mit einem unserer kostenlosen Modelle (piper, vits, melotts, kokoro). Melden Sie sich für ein kostenloses Konto an, um 15.000 Bonuszeichen und Zugriff auf Premium-Modelle zu erhalten.

Bei Premiummodellen und höheren Steuersätzen authentifizieren Sie sich mit einem Träger-Token in der 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 1.000.000 Zeichen
Pro 60 5 1.000.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 Modell-ID (z.B. kokoro , chatterbox , piper). Falls weggelassen, wählen wir automatisch ein Modell aus, das die gewünschte Sprache kokoro für de/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper für andere unterstützte Sprachen (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.) unterstützt.
text string Nein Text zum Konvertieren in Sprache. Pro-Request-Cap: 500 Zeichen (anonym), 5.000 (kostenloses Konto), 1.000.000 (paid plan). Lange Eingänge sind automatisch gekunken Server-Seite.
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.
instructions string Nein Acting / Delivery-Queues (≤500 Zeichen). z.B. \
pronunciations object | array Nein Pro-Request Aussprache überschreibt. Entweder {\
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

SSML Tags

Wrap-Nummern, Daten, Währung, Telefonnummern und Akronyme in

interpret-asEingabeGesprochen als
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Dezember einunddreißig, neunzehn neunundneunzig
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

Datumsformat standardmäßig mdy für Englisch und dmy an anderer Stelle; Überschreiben mit format=\

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

Ansprechen

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.

Vollständiges Beispiel

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.

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_urlstringOptionale URL zu POST-Ergebnissen, wenn Batch abgeschlossen wird.

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
}

Untertitel (SRT / VTT) neu

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

Generieren Sie synchronisierte Untertitel für jeden abgeschlossenen TTS-Auftrag. Läuft Whisper-Ausrichtung über das Audio und gibt SRT oder WebVTT zurück. Ergebnis wird auf der Festplatte zwischengespeichert, so dass ein zweiter Aufruf für dasselbe uuid ein Laufwerk ist, das gelesen wird.

Abfrageparameter

ParameterErforderlichWarenbezeichnung
uuidNeinJob UUID wird von /v1/tts/ oder /v1/voice-clone/ zurückgegeben.
formatNeinsrt (Standard) oder vtt .
downloadNein1 zum Senden von Content-Disposition: Anhang , also speichert der Browser statt Displays.
languageNeinHinweis zum Ausrichtungsmodell (automatisch erkannt, falls weggelassen).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Aussprache Wörterbuch neu

GET POST DELETE /api/v1/pronunciations/

Sagen Sie der TTS-Engine, wie Sie bestimmte Wörter aussprechen. Gespeicherte Einträge automatisch auf jede TTS-Anfrage anwenden, die Sie machen. 200-Eintrag pro Kontolimit.

Antragsstelle (POST)

ParameterArtWarenbezeichnung
wordstringWort, das überschrieben werden soll (z.B. GIF , Anthropic ).
replacementstringWie buchstabiert man es für das Modell (z.B. jiff , ann THROP ick ).
languagestringOptionaler ISO-Code. Leer = gilt für alle Sprachen.
case_sensitivebooleanStandard false . Passen Sie den Fall genau an, wenn 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-..."

Sie können auch pro-Request-Überschreibungen übergeben, ohne sie zu speichern — enthalten pronunciations auf jedem /v1/tts/Aufruf entweder als Objekt oder als Array (siehe die TTS-Endpunktparams).

Artikel Erzähler neu

Lassen Sie einen einzelnen