API-dokumentation
Integrera TTS.ai i dina applikationer med vårt REST API. OpenAI-kompatibelt format för enkel migrering.
Ö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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Baswebbadress
Alla endpoints är relaterade till denna baswebbadress. TTS-slutpunkten är till exempel:
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
Konvertera text till talljud. Returnerar ljudfil i önskat format.
Begärande organ
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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 |
| 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 code>. Range: < code> 0.5 code > till < code> 2. 0 code> |
| 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 -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 som | Inmatning | Talad som |
|---|---|---|
cardinal | 1234 | one thousand two hundred thirty-four |
ordinal | 21 | twenty-first |
date | 1999-12-31 | Den trettioförsta december, nitton nittionio |
time | 14:30 | two thirty PM |
telephone | +1-555-867-5309 | plus one five five five eight six seven… |
currency | $1,234.56 | one thousand two hundred thirty-four dollars and fifty-six cents |
spell-out | NASA | N A S A |
Datumformat förvalt till < code>mdy för engelska och dmy på annat håll; företräde med format=\
{
"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
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}
Step 2: Poll for result
Poll this endpoint every 1-2 seconds until status is completed or failed.
{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
{
"status": "processing"
}
Step 3: Download audio
Fetch the result_url from the completed response to download the audio file.
Fullständigt exempel
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
Översättning av ljud till text. Stöder 99 språk med automatisk upptäckt.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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
{
"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
Skapa tal i en klonad röst. Ladda upp ett referensljud och en text.
Begärande organ (multipart/form-data)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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
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)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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 -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
Ö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)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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
{
"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
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)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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: |
| speed | float | Ej tillämpligt | Hastighetsjustering. Standardvärde: < kod>1.0 . Område: < kod>0.5 till |
Svar
Returnerar den omvandlade ljudfilen som binär data.
Ljudverktyg
Ljudbehandlingsslutpunkter för förbättring, röstborttagning, stamdelning och mycket mer.
Förbättra ljudkvaliteten: denoise, förbättra tydligheten, superupplösning.
| file file | Ljudfil för att förbättra |
| denoise boolean | Aktivera denoisering (standard: true) |
| enhance_clarity boolean | Förbättra taluppfattbarheten (standard: sant) |
| super_resolution boolean | Uppskalad ljudkvalitet (standard: false) |
| strength integer | 1-3 (lätt, medelhög, stark). Förval: 2 |
Skilj sång från instrumentaler (vokal borttagning) eller delas upp i stjälkar.
| file file | Ljudfil att separera |
| model string | demucs (förval) eller spleeter |
| stems integer | Antal stjälkar: 2, 4, 5 eller 6 (standard: 2) |
| format string | Utgångsformat: < code>wav , mp3 , flac |
Ta bort eko och reverb från ljudinspelningar.
| file file | Ljudfil att bearbeta |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analysera ljud för att upptäcka nyckel, BPM och tidssignatur.
| file file | Ljudfil att analysera |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konvertera ljud mellan format.
| file file | Ljudfil att konvertera |
| format string | Målformat: < code>mp3 , wav , flac , ogg , m4a , aac |
| bitrate integer | Utgångsbitartakt i kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Provtagningsfrekvens: 22050, 44100, 48000 |
| channels string | mono eller stereo |
Röstchatt
Skicka ljud eller text och ta emot ett AI-svar med syntetiserat tal.
Begärande organ (multipart/form-data eller JSON)
| Parameter | Typ | Krävs | Varuslag |
|---|---|---|---|
| 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
{
"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
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
| Parameter | Typ | Varuslag |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Valfri URL till POST resultat när batch avslutas. |
Svar
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Förlopp med GET/v1/tts/batch/resultat/?batch_id=abc123
Röstinbäddning
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
| Parameter | Typ | Varuslag |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Svar
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Hälsokontroll
Kontrollera GPU- serverns status, laddade modeller och köstorlek. Ingen behörighetskontroll krävs. Kaklad i 30 sekunder.
Svar
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Förteckningsmallar
Returnerar en lista över alla tillgängliga modeller med deras kapacitet.
Svar
{
"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
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:
| Parameter | Typ | Varuslag |
|---|---|---|
| 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 , |
Svar
{
"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
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:
| Parameter | Krävs | Varuslag |
|---|---|---|
| uuid | Ja, det är jag. | Jobb UUID returneras av /v1/tts/ eller /v1/voice-clone/. |
| format | Ej tillämpligt | srt (standard) eller vtt . |
| download | Ej tillämpligt | 1 för att skicka Innehållsdisposition: bifogad så att webbläsaren sparar istället för att visa. |
| language | Ej tillämpligt | Tips till inställningsmodellen (auto-detekteras om utelämnad). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Uttalsordbok nytt
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)
| Parameter | Typ | Varuslag |
|---|---|---|
| word | string | Ord att åsidosätta (t.ex. < code>GIF , Antropic ). Ordgränsande matchade. |
| replacement | string | Hur man stavar det för modellen (t.ex. jiff , ann THROP ick ). |
| language | string | Valfri ISO-kod. Tom = gäller för alla språk. |
| case_sensitive | boolean | Förvalt < code>false . Matchfall exakt när true . |
# 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 code> 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