API-dokumentation

Integrera TTS.ai i dina applikationer med vårt REST API. OpenAI-kompatibelt format för enkel migrering.

RESTAPI OpenAI kompatibel Svar från JSON Strömma stöd

Översikt

API:et TTS.ai ger programmatisk tillgång till alla plattformsfunktioner: text-till-tal syntes, tal-till-text transkription, röst kloning, ljudförbättring, med mera. API:et använder standard REST konventioner med JSON begäran / svar organ.

API- nyckel

Få din API-nyckel från Kontoinställningar. Finns på Pro och Enterprise planer.

Baswebbadress

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

Behörighet

Bärarsymbol via Authorization Huvud

Behörighetskontroll

Fri nivå – ingen nyckel krävs. Anonyma POST till /v1/tts/ fungerar utan auth, upp till 5000 tecken/dag per IP, med någon av våra gratis modeller (piper, vits, melotts, kokoro). Registrera dig för ett gratis konto för att få 15 000 bonustecken och tillgång till premiummodeller.

För premium modeller och högre skattesatser, autentisera med en Bearer token i Authorization Huvud.

HTTP- huvud
Authorization: Bearer sk-tts-your-api-key-here
Håll din API-nyckel hemlig. Dela den inte i klient-side-kod, offentliga arkiv eller loggar. Rotera nycklar regelbundet från dina kontoinställningar.

SDK-ämnen

Officiella SDKs gör det enkelt att integrera TTS.ai i din ansökan. Båda är öppna källkod och finns 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

Baswebbadress

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

Alla endpoints är relaterade till denna baswebbadress. TTS-slutpunkten är till exempel:

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

Betygsgränser

API hastighetsbegränsningar varierar enligt plan:

Plan Begäran/min Sammanfallande Max textlängd
Avgiftsfri 10 2 500 röding
Uppstart 30 3 1.000.000 röding
För 60 5 1.000.000 röding
Företag 300 20 50.000 rödingar

Betygsgränsrubriker ingår i varje svar: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditkostnader

Tjänst Kostnad Enhet
TTS (Gratis modeller: Piper, VITS, Melotts) 1000 tecken per 1 000 tecken
TTS (Standardmodeller: Kokoro, CosyVoice 2, etc.) 2 000 tecken per 1 000 tecken
TTS (Premiummodeller: Tortoise, Chatterbox, etc.) 4000 tecken per 1 000 tecken
Tal till text 2 000 tecken per ljudminut
Röstförslutning 4000 tecken per 1 000 tecken
Röstförändrare 3.000 tecken per ljudminut
Ljudförbättring 2 000 tecken per ljudminut
Röstborttagning/ Stamdelning 3 000-4 000 tecken per ljudminut
Talöversättning 5 000 tecken per ljudminut
Röstchatt 3.000 tecken per varv
Nyckelsökare & BPM Avgiftsfri --
Ljudomvandlare Avgiftsfri --

Text till tal

POST /v1/tts/

Konvertera text till talljud. Returnerar ljudfil i önskat format.

Begärande organ

ParameterTypKrävsVaruslag
model string Ej tillämpligt Modell-ID (t.ex. kokoro , chatterbox , piper ). Om det utelämnas väljer vi automatiskt en modell som stöder det begärda språket kokoro för sv/ja/zh/ko/de/it/it/pt/es/hi/ru, piper för andra språk som stöds (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Ja, det är jag. Text för att konvertera till tal. Per-request cap: 500 tecken (anonymous), 5000 (fritt konto), 1.000.000 (betald plan). Långa ingångar är auto-chunked server-sida.
voice string Ja, det är jag. Röst-ID (använd /v1/röster/ för att lista tillgängliga röster)
format string Ej tillämpligt Utgångsformat: < code>mp3 (standard), wav , flac , ogg
speed float Ej tillämpligt Talande hastighetsmultiplikator. Förvalt: < code> 1. 0 . Range: < code> 0.5 till < code> 2. 0
language string Ej tillämpligt Språkkod (t.ex. < code>sv , es ). Avkänns automatiskt om det utelämnas.
instructions string Ej tillämpligt Tillförsel/leveransköer (≤500 tecken). t.ex. < kod>\
pronunciations object | array Ej tillämpligt Per- request- uttalet åsidosätter. Antingen < code> {\\
stream boolean Ej tillämpligt Aktivera strömningssvar. Förvalt: < code>false

Exempel på begäran

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 < say-as> taggar

Radnummer, datum, valuta, telefonnummer och akronymer i < code> < say-as tolk-as=\

tolka somInmatningTalad som
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Den trettioförsta december, nitton nittionio
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

Datumformat förvalt till < code>mdy för engelska och dmy på annat håll; företräde med format=\

Exempel
{
  "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.

Fullständigt exempel

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.

Tal till text

POST /v1/stt/

Översättning av ljud till text. Stöder 99 språk med automatisk upptäckt.

Begärande organ (multipart/form-data)

ParameterTypKrävsVaruslag
file file Ja, det är jag. Ljudfil (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ej tillämpligt STT-modell: < code>whisker (standard), fastare whisper , sensevoice
language string Ej tillämpligt Språkkod. auto för automatisk upptäckt (standard).
timestamps boolean Ej tillämpligt Inkludera tidstämpel på ordnivå. Förval: < code>false
diarize boolean Ej tillämpligt Aktivera högtalardiarisering. Förval: < code>false

Svar

Svar från JSON
{
  "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"
    }
  ]
}

Röstförslutning

POST /v1/tts/clone/

Skapa tal i en klonad röst. Ladda upp ett referensljud och en text.

Begärande organ (multipart/form-data)

ParameterTypKrävsVaruslag
reference_audio file Ja, det är jag. Referensröstljud (10-30 sekunder rekommenderas). Max 20MB.
text string Ja, det är jag. Text för att tala i den klonade rösten.
model string Ej tillämpligt Klonmodell: chatterbox (standard), cosyvoice2 , gpt-sovits
format string Ej tillämpligt Utgångsformat: < code>mp3 (standard), wav , flac
language string Ej tillämpligt Målspråkskod. Måste stödjas av den valda modellen.

Svar

Returnerar ljudfilen som binär data, samma som TTS endpoint.

Röstförändrare

POST /v1/voice-convert/

Konvertera ljud till ljud som en annan röst. Ladda upp källljud och välj en målröst.

Begärande organ (multipart/form-data)

ParameterTypKrävsVaruslag
file file Ja, det är jag. Källa ljudfil (MP3, WAV, FLAC). Max 50MB.
target_voice string Ja, det är jag. Målröst-ID att konvertera till (använd < code>/v1/voices/ för att lista tillgängliga röster)
model string Ej tillämpligt Röstkonverteringsmodell: openvoice (standard), kn-vc
format string Ej tillämpligt Utgångsformat: < code>wav (standard), mp3 , flac

Exempel på begäran

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

Returnerar den konverterade ljudfilen som binär data.

Talöversättning

POST /v1/speech-translate/

Översätt talat ljud från ett språk till ett annat. Kombinerar tal-till-text, översättning och text-till-tal i ett enda samtal.

Begärande organ (multipart/form-data)

ParameterTypKrävsVaruslag
file file Ja, det är jag. Källa ljudfil på originalspråket. Max 100MB.
target_language string Ja, det är jag. Målspråkskod (t.ex. < code>es , fr , de , ja )
voice string Ej tillämpligt Röst för översatt utmatning. Automatiskt vald om utelämnad.
preserve_voice boolean Ej tillämpligt Försök att bevara den ursprungliga talarens röstegenskaper. Standard: < code>false

Svar

Svar från JSON
{
  "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
}

Tal till tal

POST /v1/speech-to-speech/

Förvandla talstil, känslor, eller leverans samtidigt som innehållet. Användbar för att justera ton, gå och uttrycksfullhet.

Begärande organ (multipart/form-data)

ParameterTypKrävsVaruslag
file file Ja, det är jag. Källtal ljudfil. Max 50MB.
voice string Ja, det är jag. Målröst-ID för utmatningstalet
model string Ej tillämpligt Förlaga: < code>openvoice (standard), chatterbox
emotion string Ej tillämpligt Målkänsla: neutral , lycklig , sad , ansikte , exciterad
speed float Ej tillämpligt Hastighetsjustering. Standardvärde: < kod>1.0 . Område: < kod>0.5 till 2.0

Svar

Returnerar den omvandlade ljudfilen som binär data.

Ljudverktyg

Ljudbehandlingsslutpunkter för förbättring, röstborttagning, stamdelning och mycket mer.

POST /v1/audio/enhance/

Förbättra ljudkvaliteten: denoise, förbättra tydligheten, superupplösning.

file fileLjudfil för att förbättra
denoise booleanAktivera denoisering (standard: true)
enhance_clarity booleanFörbättra taluppfattbarheten (standard: sant)
super_resolution booleanUppskalad ljudkvalitet (standard: false)
strength integer1-3 (lätt, medelhög, stark). Förval: 2
POST /v1/audio/separate/

Skilj sång från instrumentaler (vokal borttagning) eller delas upp i stjälkar.

file fileLjudfil att separera
model stringdemucs (förval) eller spleeter
stems integerAntal stjälkar: 2, 4, 5 eller 6 (standard: 2)
format stringUtgångsformat: < code>wav , mp3 , flac
POST /v1/audio/dereverb/

Ta bort eko och reverb från ljudinspelningar.

file fileLjudfil att bearbeta
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Avgiftsfri

Analysera ljud för att upptäcka nyckel, BPM och tidssignatur.

file fileLjudfil att analysera
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/ Avgiftsfri

Konvertera ljud mellan format.

file fileLjudfil att konvertera
format stringMålformat: < code>mp3 , wav , flac , ogg , m4a , aac
bitrate integerUtgångsbitartakt i kbps: 64, 128, 192, 256, 320
sample_rate integerProvtagningsfrekvens: 22050, 44100, 48000
channels stringmono eller stereo

Röstchatt

POST /v1/voice-chat/

Skicka ljud eller text och ta emot ett AI-svar med syntetiserat tal.

Begärande organ (multipart/form-data eller JSON)

ParameterTypKrävsVaruslag
audio file Ej tillämpligt* Ljudingång (antingen < kod>ljud eller < kod>text krävs)
text string Ej tillämpligt* Textinmatning (antingen < code>audio eller text krävs)
voice string Ej tillämpligt Röst för AI-svar. Standardvärde: < code>af_bella
tts_model string Ej tillämpligt TTS-modell för svar. Förval: < code>kokoro
system_prompt string Ej tillämpligt Anpassad systemprompt för AI
conversation_id string Ej tillämpligt Fortsätt med ett existerande samtal

Svar

Svar från JSON
{
  "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
}

Förlaga TTS

POST /v1/tts/batch/

Skicka in flera texter för parallell TTS-generering. Valfritt ta emot en webhook callback när alla jobb är klara.

För en driftspänning av mer än 1000 V men högst 1000 V

ParameterTypVaruslag
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringValfri URL till POST resultat när batch avslutas.

Svar

Svar från JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Förlopp med GET/v1/tts/batch/resultat/?batch_id=abc123

Röstinbäddning

POST /v1/voice-embed/

Förkompilera en röst inbäddad från referensljud. Använd den returnerade inbäddade_id i efterföljande röst kloning förfrågningar för nära-instant generation.

För en driftspänning av mer än 1000 V men högst 1000 V

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

Svar

Svar från JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Hälsokontroll

GET /v1/health/

Kontrollera GPU- serverns status, laddade modeller och köstorlek. Ingen behörighetskontroll krävs. Kaklad i 30 sekunder.

Svar

Svar från JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Förteckningsmallar

GET /v1/models/

Returnerar en lista över alla tillgängliga modeller med deras kapacitet.

Svar

Svar från JSON
{
  "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
    }
  ]
}

Liströster

GET /v1/voices/

Returnerar en lista över alla tillgängliga röster, eventuellt filtreras med modell eller språk.

För att säkerställa en effektiv kontroll av överensstämmelse med kraven i denna förordning ska medlemsstaterna se till att följande krav uppfylls:

ParameterTypVaruslag
model string Filtrera enligt modell-ID (t.ex. < code>kokoro )
language string Filtrera efter språkkod (t.ex. < code>sv )
gender string Filtrera efter kön: < code> manlig , kvinnlig , neutral

Svar

Svar från JSON
{
  "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
}

Översättning (SRT/VTT) nytt

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

Skapa synkroniserade undertexter för alla färdiga TTS- jobb. Kör Whisper justering över ljudet och returnerar SRT eller WebVTT. Resultat är cachad på disk så ett andra samtal för samma uuid är en disk läst.

För att säkerställa en effektiv kontroll av överensstämmelse med kraven i denna förordning ska medlemsstaterna se till att följande krav uppfylls:

ParameterKrävsVaruslag
uuidJa, det är jag.Jobb UUID returneras av /v1/tts/ eller /v1/voice-clone/.
formatEj tillämpligt srt (standard) eller vtt .
downloadEj tillämpligt 1 för att skicka Innehållsdisposition: bifogad så att webbläsaren sparar istället för att visa.
languageEj tillämpligtTips till inställningsmodellen (auto-detekteras om utelämnad).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Uttalsordbok nytt

GET POST DELETE /api/v1/pronunciations/

Tala om för TTS-motorn hur man uttalar specifika ord. Sparade poster automatiskt applicera på varje TTS-begäran du gör. 200-ingång per konto gräns.

Begärande organ (POST)

ParameterTypVaruslag
wordstringOrd att åsidosätta (t.ex. < code>GIF , Antropic ). Ordgränsande matchade.
replacementstringHur man stavar det för modellen (t.ex. jiff , ann THROP ick ).
languagestringValfri ISO-kod. Tom = gäller för alla språk.
case_sensitivebooleanFörvalt < code>false . Matchfall exakt 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 också passera per begäran företräden utan att spara dem – inkluderar uttal på någon /v1/tts/ anrop som antingen ett objekt eller en matris (se TTS endpoint params).

Artikel Berättare nytt

Släpp en enda