API- dokumentasjon

Integrer TTS.ai inn i dine programmer med vårt REST API. OpenAI-kompatibelt format for enkel overføring.

REST API OpenAI kompatibel JSON- reaksjoner Støtte for strøm

Oversikt

TTS.ai API gir programmatisk tilgang til alle plattformfunksjoner: tekst-til-tale-syntese, tale-til-tekst-transkription, stemmekloning, lydforbedring m.m. API bruker standard REST-konvensjoner med JSON-organer for forespørsel/ svar.

API- nøkkel

Hent API-nøkkelen din fra Kontoinnstillinger. Tilgjengelig i Pro- og virksomhetsplaner.

Basis- URL

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

Aut

Beholder- symbol via Authorization topptekst

Autentisering

Fritt nivå — ingen nøkkel påkrevd. Anonyme POSTs til /v1/tts/ arbeid uten autent, inntil 5.000 tegn per dag per IP, ved hjelp av noen av våre frie modeller (piper, vits, melotts, kokoro). Registrer deg for en gratis konto for å få 15 000 bonustegn og tilgang til premiummodeller.

For premiummodeller og høyere takstgrenser, autentiser med en Bearer symbol i Authorization topptekst.

HTTP- meldingshode
Authorization: Bearer sk-tts-your-api-key-here
Hold din API- nøkkel hemmelig. Ikke del den i klientkode, offentlige arkiver eller logger. Roter nøkler regelmessig fra kontoinnstillingene dine.

SDK-er

Offisielle SDK- er gjør det enkelt å integrere TTS.ai i programmet ditt. Begge er åpen kildekode og er tilgjengelige 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 endepunkter er relative til denne basis- URL- en. For eksempel er TTS- endepunktet:

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

Fartsgrenser

API- rentegrensene varierer etter plan:

Plan Forespørsler/min Samtidig Maks. tekstlengde
Ledig 10 2 500 tegn
Starter 30 3 1.000.000 tegn
Pro 60 5 1.000.000 tegn
Bedrift 300 20 50.000 tegn

Overskrifter for rentegrense er tatt med i hvert svar: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredittkostnader

Tjeneste Kostnad Enhet
TTS (frie modeller: Piper, VITS, MeloTTS) 1000 tegn pr. 1000 tegn
TTS (standardmodeller: Kokoro, CosyVoice 2, osv.) 2000 tegn pr. 1000 tegn
TTS (premiummodeller: tortoise, chatterbox osv.) 4. 000 tegn pr. 1000 tegn
Opplesning til tekst 2000 tegn per minutt lyd
Stemmekloning 4. 000 tegn pr. 1000 tegn
Stemmeskifter 3. 000 tegn per minutt lyd
Lydforbedring 2000 tegn per minutt lyd
Vokal fjerning / stamdeling 3. 000- 4. 000 tegn per minutt lyd
Taleoversettelse 5000 tegn per minutt lyd
Taleprat 3. 000 tegn per sving
Nøkkel - og BPM- finner Ledig --
Konvertering av lyd Ledig --

Tekst til tale

POST /v1/tts/

Konverter tekst til tale- lyd. Returnerer lydfila i ønsket format.

Anmodningsorgan

ParameterTypeKrevesBeskrivelse
model string Nei Modell-ID (f.eks., kokoro, kasterboks, piper). Dersom det er utelatt, velger vi automatisk en modell som støtter ønsket språkkoro for en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper for andre språk som støttes (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Ja Tekst som skal omformes til tale. Tak per forespørsel: 500 tegn (anonym), 5. 000 (fri konto), 1. 000 000 (betalt plan). Lange inndata er automatisk blokkert på tjenersiden.
voice string Ja Stemme-ID (bruk /v1/voices/ til å liste opp tilgjengelige stemmer)
format string Nei Utdataformat: mp3 (standard), wav, flac, ogg
speed float Nei Talehastighetsmultiplikator. Standard: 1.0. Område: 0.5 til 2.0
language string Nei Språkkode (f.eks. en, es). Automatisk gjenkjent dersom den er utelatt.
instructions string Nei Handling/ levering- tegn (≤ 500 tegn). f. eks. \
pronunciations object | array Nei For hver forespørsel overstyrer uttalet. Enten {\
stream boolean Nei Slå på strømmingssvar. Standard: false

Eksempelforespørsel

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

Bryt numre, datoer, valuta, telefonnummer og forkortelser i

Tolk- somInndataUttalt som
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Desember 31, nitten nitti-ni
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

Datoformatet er standard for mdy for engelsk og dmy andre steder, overstyr 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."
}

Svar

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.

Fullstendig 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.

Opplesning til tekst

POST /v1/stt/

Transcribe lyd til tekst. Støtter 99 språk med automatisk oppdaging.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrevesBeskrivelse
file file Ja Lydfil (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maks 100MB.
model string Nei STT-modell: whisper (standard), faster-whisper, sensevoice
language string Nei Språkkode. auto for automatisk deteksjon (standard).
timestamps boolean Nei Ta med tidsstempel for ordnivå. Standard: falsk
diarize boolean Nei Slå på diaarisering av høyttaler. Standard: falsk

Svar

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

Stemmekloning

POST /v1/tts/clone/

Lag tale i en klonet stemme. Last opp en referanselyd og tekst.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrevesBeskrivelse
reference_audio file Ja Referanse stemmelyd (10-30 sekunder anbefales). Maks 20 MB.
text string Ja Tekst å snakke i den klonede stemmen.
model string Nei Klonemodell: chatterbox (standard), cosyvoice2, gpt-sovits
format string Nei Utdataformat: mp3 (standard), wav, flac
language string Nei Målspråkkode. Den valgte modellen må støtte den.

Svar

Returnerer lydfila som binærdata, samme som TTS sluttpunktet.

Stemmeskifter

POST /v1/voice-convert/

Konverter lyd til en annen stemme. Last opp kildelyd og velg en mål stemme.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrevesBeskrivelse
file file Ja Kildefil (MP3, WAV, FLAC). Maks 50MB.
target_voice string Ja Mål- tale-ID som skal konverteres til (bruk /v1/voices/ til liste over tilgjengelige stemmer)
model string Nei Stemmekonverteringsmodell: openvoice (standard), knn-vc
format string Nei Utdataformat: wav (standard), mp3, flac

Eksempelforespørsel

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

Svar

Returnerer den konverterte lydfila som binærdata.

Taleoversettelse

POST /v1/speech-translate/

Oversett snakket lyd fra ett språk til et annet. Kombinerer tale- til- tekst, oversettelse og tekst- til- tale i en enkelt samtale.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrevesBeskrivelse
file file Ja Kildefil på originalspråket. Maks 100 MB.
target_language string Ja Målspråkkode (f.eks. es, fr, de, ja)
voice string Nei Stemme for oversatt utdata. Velg automatisk hvis det er utelatt.
preserve_voice boolean Nei Forsøk å bevare den opprinnelige høyttalerens stemmeegenskaper. Standard: falsk

Svar

JSON- reaksjon
{
  "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 til tale

POST /v1/speech-to-speech/

Omform talestil, følelser eller levering samtidig som innholdet beholdes. Nyttig for å justere tone, pacing og uttrykkskraft.

Anmodningsorgan (multipart/form-data)

ParameterTypeKrevesBeskrivelse
file file Ja Kilde- lydfil. Maks 50 MB.
voice string Ja Mål- tale- ID for utdata- tale
model string Nei Modell: openvoice (standard), chatterbox
emotion string Nei Målets følelser: nøytral , happy, sad, angry, eksitert
speed float Nei Hastighetsjustering. Standard: 1.0 . Område: 0.5 til 2.0

Svar

Returnerer den transformerte lydfila som binærdata.

Lydverktøy

Lydbehandlingsendepunkter for forbedring, vokalfjerning, stamdeling og mer.

POST /v1/audio/enhance/

Forbedret lydkvalitet: densiser, forbedr klarhet, superoppløsning.

file fileLydfil som skal forbedres
denoise booleanSlå på densisering (standard: sann)
enhance_clarity booleanForbedre tale- klarhet (standard: « sann »)
super_resolution booleanSkaler lydkvalitet opp (standard: usann)
strength integer1-3 (lett, middels, sterkt). Standard: 2
POST /v1/audio/separate/

Atskille stemmen fra hjelpestoffer (sakelig fjerning) eller deles i stengler.

file fileLydfil som skal skilles fra hverandre
model stringdemucs (standard) eller spleeter
stems integerAntall stilker: 2, 4, 5 eller 6 (standard: 2)
format stringUtdataformat: wav, mp3, flac
POST /v1/audio/dereverb/

Fjern ekko og etterklang fra lydopptak.

file fileLydfil som skal behandles
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Ledig

Analyser lyd for å oppdage nøkkel, BPM og tidssignatur.

file fileLydfil som skal analyseres
Svar
{
  "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/ Ledig

Konverter lyd mellom formater.

file fileLydfil som skal omformes
format stringMålformat: mp3, wav, flac, ogg, m4a, aac
bitrate integerUtdata- bitrate i kbps: 64, 128, 192, 256, 320
sample_rate integerPrøvemengde: 22050, 44100, 48000
channels stringmono eller stereo

Taleprat

POST /v1/voice-chat/

Send lyd eller tekst og motta et AI- svar med syntetisk tale.

Anmodningsorgan (multipart/form-data eller JSON)

ParameterTypeKrevesBeskrivelse
audio file Nei* Lydinngang (krevdes enten audio eller tekst)
text string Nei* Tekstinndata (krevdes enten audio eller tekst)
voice string Nei Stemme for AI- svar. Standard: af_bella
tts_model string Nei TTS- modell for svar. Standard: kokoro
system_prompt string Nei Selvvalgt systemforespørsel for AI- en
conversation_id string Nei Fortsett en eksisterende samtale

Svar

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

Parti TTS

POST /v1/tts/batch/

Send inn flere tekster for parallell TTS- generering. Du kan velge å ta imot et tilbakekallingssøk når alle jobber er ferdige.

Parametre

ParameterTypeBeskrivelse
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringValgfri URL til POST- resultater når satsingen er ferdig.

Svar

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

Samleframskritt med GET /v1/tt/parti/resultat/?batch_id=abc123

Stemmeinnbygging

POST /v1/voice-embed/

Forhåndskompenser en stemme som er innebygd fra referanselyden. Bruk den returnerte lyden i etterfølgende talekloning for nær- intant generering.

Parametre

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

Svar

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

Helsekontroll

GET /v1/health/

Sjekk GPU- tjenerstatus, innlastede modeller og køstørrelse. Autentisering kreves ikke. Mellomlagret i 30 sekunder.

Svar

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

Listemodeller

GET /v1/models/

Returnerer en liste over alle tilgjengelige modeller med sine muligheter.

Svar

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

List opp stemmer

GET /v1/voices/

Gir en liste over alle tilgjengelige stemmer, eventuelt filtrert etter modell eller språk.

Spørringsparametre

ParameterTypeBeskrivelse
model string Filtrer etter modell-ID (f.eks. koro)
language string Filtrer etter språkkode (f.eks. en)
gender string Filtrer etter kjønn: male, kvinne, nøytral

Svar

JSON- reaksjon
{
  "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

Lag synkroniserte undertekster for alle ferdige TTS- jobber. Kjører Whisper- justering over lyden og returnerer SRT eller WebVTT. Resultatet blir mellomlagret på disken, så et nytt kall for samme uuid er en disklesing.

Spørringsparametre

ParameterKrevesBeskrivelse
uuidJaJobb UUID returnert av /v1/tts/ eller /v1/voice- klone /.
formatNeisrt (standard) eller vtt.
downloadNei1 for å sende Content-Disposition: vedlegg slik at nettleseren lagrer i stedet for å vise.
languageNeiHint til justeringsmodellen (oppdages automatisk dersom den er utelatt).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Ordbok for uttale ny

GET POST DELETE /api/v1/pronunciations/

Fortell TTS- motoren hvordan bestemte ord skal uttales. Lagrede oppføringer brukes automatisk på hver TTS- forespørsel du gjør. 200- entry per konto- grense.

Anmodningsorgan (POST)

ParameterTypeBeskrivelse
wordstringOrd som skal overstyres (f.eks. GIF, Anthropic). Ordgrensen treff.
replacementstringHvordan det skal staves for modellen (f.eks. jiff, ann THROPick).
languagestringValgfri ISO-kode. Tom = gjelder for alle språk.
case_sensitivebooleanStandard falsk . Pass til store og små bokstaver nøyaktig 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 hver forespørsel uten å lagre dem – ta med uttale på et hvilket som helst / v1/tts/ kall som enten et objekt eller en tabell (se parametrene for TTS- endepunkter).

Artikkelforteljar ny

Slipp en enkelt tagg på alle artikkelsider og besøkende får en fast leserlinje som forteller siden ved klikk. Automatisk gjenkjenner artikkelkroppen, støtter selvvalgt stemme / modell / posisjon / aksentfarge.

HTML
<script src="https://tts.ai/narrator.js"
    data-pk="pk-tts-your-publishable-key"
    data-voice="af_bella"
    data-model="kokoro"
    data-extract="auto"
    data-position="bottom"
    data-color="#e60000"
    data-locale="en"></script>

Valg

ParameterBeskrivelse
data-pkPubliserbar nøkkel (pk-tts-...). Domenebegrensninger som er innført via nøkkelens tillatte_domener felt.
data-voiceStemme- ID. Standard af_bella .
data-modelTTS-modell-ID. Standard kokoro.
data-extractauto (standard) — forsøker velgerne av artikkel/hoved/.post-content/.entry-content, faller tilbake til den tetteste avsnittsklyngen. Eller gir en CSS-velger for å målrette et bestemt element.
data-positionbottom (standard) eller topp.
data-colorAksensfarge (enhver CSS- farge). Standardverdi #e60000.
data-min-chars / data-max-charsHopp over linja hvis artikkelen er kortere enn min- tegn (standard 200). Cap- inndata ved maks- tegn (standard 50. 000).

Kilden til GitHub:

Lytteknapp- element

Knappestil innebygget i teksten. Tegner ved siden av