API- dokumentation

Integrer TTS.ai i dine applikationer med vores REST API. OpenAI-kompatibelt format til nem migration.

REST API OpenAI Kompatibel JSON Responses Streaming- understøttelse

Oversigt

TTS.ai API giver programmatisk adgang til alle platform funktioner: tekst-til-tale syntese, tale-til-tekst transskription, stemme kloning, lydforbedring, og meget mere. API bruger standard REST konventioner med JSON anmodning / respons organer.

API- nøgle

Få din API-nøgle fra Kontoindstillinger. Tilgængelig på Pro og Enterprise planer.

Basis- URL

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

Auth

Bearer token via Authorization header

Godkendelse

Gratis niveau! ingen nøgle kræves. Anonyme POSTer til /v1/tts/ arbejde uden nogen auth, op til 5.000 tegn / dag per IP, ved hjælp af nogen af vores gratis modeller (piper, vits, melotts, kokoro). Tilmeld dig en gratis konto for at få 15.000 bonus tegn og adgang til premium modeller.

For premium modeller og højere sats grænser, autentificere med en Bearer token i Authorization header.

HTTP- header
Authorization: Bearer sk-tts-your-api-key-here
Hold din API-nøgle hemmelig. Del det ikke i klient-side kode, offentlige arkiver eller logfiler. Rotér nøgler regelmæssigt fra dine kontoindstillinger.

SDK

Officielle SDK'er gør det nemt at integrere TTS.ai i din ansøgning. Begge er open source og tilgængelige på 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")
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 endpoints er i forhold til denne basis- URL. For eksempel er TTS- endpointet:

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

Rategrænser

API-satsgrænserne varierer efter planen:

Plan Anmodninger/min Samtidig Maks. tekstlængde
Fri 10 2 500 chars
Starter 30 3 1.000.000 tegn
Pro 60 5 1.000.000 tegn
Virksomhed 300 20 50.000 tegn

Sats grænse overskrifter er inkluderet i hvert svar: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditomkostninger

Tjeneste Omkostninger Enhed
TTS (Gratis modeller: Piper, VITS, MeloTTS) 1000 tegn pr. 1.000 tegn
TTS (Standardmodeller: Kokoro, CosyVoice 2, etc.) 2.000 tegn pr. 1.000 tegn
TTS (Premium modeller: Tortoise, Chatterbox, etc.) 4.000 tegn pr. 1.000 tegn
Tale til tekst 2.000 tegn pr. minut lyd
Stemmekløvning 4.000 tegn pr. 1.000 tegn
Stemmeskifter 3.000 tegn pr. minut lyd
Lydforbedring 2.000 tegn pr. minut lyd
Vokal fjernelse / Stem opdeling 3.000-4.000 tegn pr. minut lyd
Taleoversættelse 5000 tegn pr. minut lyd
Stemmechat 3.000 tegn per tur
Nøgle & BPM Finder Fri --
Lydomformer Fri --

Tekst til tale

POST /v1/tts/

Konverter tekst til talelyd. Returnerer lydfil i det ønskede format.

Anmodningsorgan

ParameterTypeKrævetVarebeskrivelse
model string Nej Model ID (f.eks. kokoro , chatterbox , piper). Hvis udeladt, vælger vi automatisk en model, der understøtter den ønskede language ~ kokoro for en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper for andre understøttede sprog (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Ja Tekst til at konvertere til tale. Per-anmodning cap: 500 tegn (anonym), 5.000 (gratis konto), 1.000.000 (betalt plan). Lange indgange er auto-klukket server-side.
voice string Ja Stemme-id (brug /v1/voices/ til liste over tilgængelige stemmer)
format string Nej Outputformat: mp3 (standard), wav, flac , ogg
speed float Nej Talehastighedsmultiplikator. Standard: 1. 0. Område: 0.5 til 2. 0
language string Nej Sprogkode (f.eks. en , es ).
instructions string Nej Acting / delivery cues (≤500 tegn). f.eks. \
pronunciations object | array Nej Per- request udtale overrides. Enten {\
stream boolean Nej Aktivér streamingrespons. Standard: false

Eksempelanmodning

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 numre, datoer, valuta, telefonnumre og akronymer i

tolk- asInputSagt som
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-3131. december nitten nioghalvfems
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

Datoformat som standard for mdy for engelsk og dmy andetsteds; override med format=\

Eksempel
{
  "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

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.

Fuldt eksempel

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.

Tale til tekst

POST /v1/stt/

Transskriber lyd til tekst. Understøtter 99 sprog med auto-detektion.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrævetVarebeskrivelse
file file Ja Lydfil (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nej STT-model: whisper (standard), hurtigere-whisper , sensevoice
language string Nej Sprogkode. auto for auto-detektion (standard).
timestamps boolean Nej Inkludér tidsstempler på ordniveau. Standard: < kode>false
diarize boolean Nej Aktivér højttalerdiarisering. Standard: false

Respons

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

Stemmekløvning

POST /v1/tts/clone/

Generer tale i en klonet stemme. Upload en reference lyd og tekst.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrævetVarebeskrivelse
reference_audio file Ja Reference voice audio (10-30 sekunder anbefales). Max 20MB.
text string Ja Tekst til at tale i klonet stemme.
model string Nej Klonmodel: chatterbox (standard), cosyvoice2, gpt-sovits
format string Nej Outputformat: mp3 (standard), wav, flac
language string Nej Målsprogskode. Skal understøttes af den valgte model.

Respons

Returnerer lydfilen som binære data, samme som TTS endpoint.

Stemmeskifter

POST /v1/voice-convert/

Konverter lyd til at lyde som en anden stemme. Upload kildelyd og vælg et mål stemme.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrævetVarebeskrivelse
file file Ja Kildelydfil (MP3, WAV, FLAC). Max 50MB.
target_voice string Ja Målvoice-id til konvertering til (brug /v1/voices/ til listen over tilgængelige stemmer)
model string Nej Voice conversion model: openvoice (standard), knn-vc
format string Nej Outputformat: wav (standard), mp3, flac

Eksempelanmodning

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

Returnerer den konverterede lydfil som binære data.

Taleoversættelse

POST /v1/speech-translate/

Oversæt talt lyd fra et sprog til et andet. Kombinerer tale-til-tekst, oversættelse og tekst-til-tale i et enkelt opkald.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrævetVarebeskrivelse
file file Ja Kilde lydfil på originalsproget. Max 100MB.
target_language string Ja Målsprogskode (f.eks. es , fr, de, ja)
voice string Nej Stemme for oversat output. Auto-valgt hvis udeladt.
preserve_voice boolean Nej Forsøg at bevare den oprindelige højttalers stemmeegenskaber. Standard: false

Respons

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

Tale

POST /v1/speech-to-speech/

Transformér talestil, følelser eller levering samtidig med at indholdet holdes. Nyttig til at justere tone, pacing og udtryksfuldhed.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrævetVarebeskrivelse
file file Ja Kilde tale lydfil. Max 50MB.
voice string Ja Mål- stemme- ID for output- talen
model string Nej Model: openvoice (standard), chatterbox
emotion string Nej Målfølelse: neutral , happy , sad, angry , excited
speed float Nej Hastighedsjustering. Standard: 1.0. Range: 0.5 to 2.0

Respons

Returnerer den transformerede lydfil som binære data.

Lydværktøjer

Lydbehandling endpoints for ekstraudstyr, vokal fjernelse, stilk opdeling og meget mere.

POST /v1/audio/enhance/

Forbedre lydkvalitet: Denoise, forbedre klarhed, super opløsning.

file fileLydfil der skal forbedres
denoise booleanAktivér denoising (standard: true)
enhance_clarity booleanForbedre taleklarhed (standard: true)
super_resolution booleanOpskaler lydkvalitet (standard: falsk)
strength integer1-3 (lys, medium, stærk). Standard: 2
POST /v1/audio/separate/

Separate vokal fra instrumentaler (vokal fjernelse) eller opdelt i stilke.

file fileLydfil der skal adskilles
model stringdemucs (standard) eller spleeter
stems integerAntal stilke: 2, 4, 5 eller 6 (standard: 2)
format stringOutputformat: wav, mp3, flac
POST /v1/audio/dereverb/

Fjern ekko og reverb fra lydoptagelser.

file fileLydfil til proces
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Fri

Analyser lyd for at opdage nøgle, BPM og tidssignatur.

file fileLydfil til analyse
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/ Fri

Konverter lyd mellem formater.

file fileLydfil der skal konverteres
format stringMålformat: mp3, wav, flac, ogg , m4a , aac
bitrate integerOutput bitrate i kbps: 64, 128, 192, 256, 320
sample_rate integerPrøvehastighed: 22050, 44100, 48000
channels stringmono eller stereo

Stemmechat

POST /v1/voice-chat/

Send lyd eller tekst og modtage en AI svar med syntetiseret tale.

Anmodningsorgan (multipart/form-data eller JSON)

ParameterTypeKrævetVarebeskrivelse
audio file Nej* Lydindgang (enten lyd eller tekst påkrævet)
text string Nej* Tekstindgang (enten lyd eller tekst påkrævet)
voice string Nej Stemme for AI- respons. Standard: af_bella
tts_model string Nej TTS- model for respons. Standard: kokoro
system_prompt string Nej Brugerdefineret systemprompt til AI
conversation_id string Nej Fortsæt en eksisterende samtale

Respons

JSON Response
{
  "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/

Indsend flere tekster til parallel TTS generation. Valgfrit modtage en webhook tilbagekald, når alle job er fuldført.

Parametre

ParameterTypeVarebeskrivelse
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringValgfri URL til POST resultater, når batch fuldender.

Respons

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

Poll fremskridt med GET /v1/tts/batch/result/?batch_id=abc123

Stemmeindlejring

POST /v1/voice-embed/

Pre- compute en stemme indlejring fra reference audio. Brug den returnerede embed_id i efterfølgende voice kloning anmodninger om nær-øjeblikkelig generation.

Parametre

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

Respons

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

Sundhedstjek

GET /v1/health/

Tjek GPU- serverstatus, indlæste modeller og køstørrelse. Ingen godkendelse påkrævet. Cached i 30 sekunder.

Respons

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

Listemodeller

GET /v1/models/

Returnerer en liste over alle tilgængelige modeller med deres kapaciteter.

Respons

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

Liste over stemmer

GET /v1/voices/

Returnerer en liste over alle tilgængelige stemmer, eventuelt filtreret efter model eller sprog.

Forespørgselsparametre

ParameterTypeVarebeskrivelse
model string Filtrer efter model ID (f.eks. kokoro )
language string Filtrer efter sprogkode (f.eks. en )
gender string Filter efter køn: han , hun , neutral

Respons

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

Undertekster (SRT / VTT) ny

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

Generer synkroniserede undertekster for alle afsluttede TTS job. Kører Whisper justering over lyden og returnerer SRT eller WebVTT. Resultat er cached på disken, så en anden opfordring til den samme uuid er en disk læst.

Forespørgselsparametre

ParameterKrævetVarebeskrivelse
uuidJaJob UUID returneret af /v1/tts/ or /v1/voice-clone/.
formatNejsrt (standard) eller vtt.
downloadNej1 at sende Indhold-Disposition: vedhæftning så browseren gemmer snarere end viser.
languageNejTip til indstillingsmodellen (auto-detekteret, hvis udeladt).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Udtale ordbog ny

GET POST DELETE /api/v1/pronunciations/

Fortæl TTS- motoren hvordan man udtaler bestemte ord. Gemte indgange automatisk til hver TTS- anmodning du foretager. 200- entry per- konto grænse.

Anmodningsorgan (POST)

ParameterTypeVarebeskrivelse
wordstringWord to override (f.eks. GIF , Anthropic ). Word-boundary matched.
replacementstringHvordan staves det til modellen (f.eks. jiff, ann HROP ick ).
languagestringValgfri ISO-kode. Tom = gælder for alle sprog.
case_sensitivebooleanStandard false . Match tilfælde nøjagtigt, når 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-..."

Du kan også passere per-request overrides uden at gemme dem ~ omfatter pronunciations på enhver /v1/tts/ opkald som enten et objekt eller et array (se TTS endpoint params).

Artikel Opdrager ny

Drop en enkelt