API- dokumentation
Integrer TTS.ai i dine applikationer med vores REST API. OpenAI-kompatibelt format til nem migration.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Basis- URL
Alle endpoints er i forhold til denne basis- URL. For eksempel er TTS- endpointet:
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
Konverter tekst til talelyd. Returnerer lydfil i det ønskede format.
Anmodningsorgan
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| 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 |
| format | string | Nej | Outputformat: mp3 (standard), wav, flac , ogg |
| speed | float | Nej | Talehastighedsmultiplikator. Standard: |
| 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 code> |
Eksempelanmodning
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 Datoformat som standard for The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
tolk- as Input Sagt 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 mdy for engelsk og dmy andetsteds; override 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."
}Respons
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
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Fuldt eksempel
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)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
Tale til tekst
Transskriber lyd til tekst. Understøtter 99 sprog med auto-detektion.
Anmodningsorgan (multipart/form-data)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| 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. |
| timestamps | boolean | Nej | Inkludér tidsstempler på ordniveau. Standard: < kode>false kode> |
| diarize | boolean | Nej | Aktivér højttalerdiarisering. Standard: false code> |
Respons
{
"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
Generer tale i en klonet stemme. Upload en reference lyd og tekst.
Anmodningsorgan (multipart/form-data)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| 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
Konverter lyd til at lyde som en anden stemme. Upload kildelyd og vælg et mål stemme.
Anmodningsorgan (multipart/form-data)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| file | file | Ja | Kildelydfil (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Ja | Målvoice-id til konvertering til (brug |
| model | string | Nej | Voice conversion model: openvoice (standard), knn-vc |
| format | string | Nej | Outputformat: wav (standard), mp3, flac |
Eksempelanmodning
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
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)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| 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
{
"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
Transformér talestil, følelser eller levering samtidig med at indholdet holdes. Nyttig til at justere tone, pacing og udtryksfuldhed.
Anmodningsorgan (multipart/form-data)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| 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: 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.
Forbedre lydkvalitet: Denoise, forbedre klarhed, super opløsning.
| file file | Lydfil der skal forbedres |
| denoise boolean | Aktivér denoising (standard: true) |
| enhance_clarity boolean | Forbedre taleklarhed (standard: true) |
| super_resolution boolean | Opskaler lydkvalitet (standard: falsk) |
| strength integer | 1-3 (lys, medium, stærk). Standard: 2 |
Separate vokal fra instrumentaler (vokal fjernelse) eller opdelt i stilke.
| file file | Lydfil der skal adskilles |
| model string | demucs (standard) eller spleeter |
| stems integer | Antal stilke: 2, 4, 5 eller 6 (standard: 2) |
| format string | Outputformat: wav, mp3, flac |
Fjern ekko og reverb fra lydoptagelser.
| file file | Lydfil til proces |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analyser lyd for at opdage nøgle, BPM og tidssignatur.
| file file | Lydfil til analyse |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konverter lyd mellem formater.
| file file | Lydfil der skal konverteres |
| format string | Målformat: mp3, wav, flac, ogg , m4a , aac |
| bitrate integer | Output bitrate i kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Prøvehastighed: 22050, 44100, 48000 |
| channels string | mono eller stereo |
Stemmechat
Send lyd eller tekst og modtage en AI svar med syntetiseret tale.
Anmodningsorgan (multipart/form-data eller JSON)
| Parameter | Type | Krævet | Varebeskrivelse |
|---|---|---|---|
| audio | file | Nej* | Lydindgang (enten |
| text | string | Nej* | Tekstindgang (enten |
| 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
{
"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
Indsend flere tekster til parallel TTS generation. Valgfrit modtage en webhook tilbagekald, når alle job er fuldført.
Parametre
| Parameter | Type | Varebeskrivelse |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Valgfri URL til POST resultater, når batch fuldender. |
Respons
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Poll fremskridt med GET /v1/tts/batch/result/?batch_id=abc123
Stemmeindlejring
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
| Parameter | Type | Varebeskrivelse |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Respons
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Sundhedstjek
Tjek GPU- serverstatus, indlæste modeller og køstørrelse. Ingen godkendelse påkrævet. Cached i 30 sekunder.
Respons
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Listemodeller
Returnerer en liste over alle tilgængelige modeller med deres kapaciteter.
Respons
{
"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
Returnerer en liste over alle tilgængelige stemmer, eventuelt filtreret efter model eller sprog.
Forespørgselsparametre
| Parameter | Type | Varebeskrivelse |
|---|---|---|
| model | string | Filtrer efter model ID (f.eks. |
| language | string | Filtrer efter sprogkode (f.eks. |
| gender | string | Filter efter køn: |
Respons
{
"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
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
| Parameter | Krævet | Varebeskrivelse |
|---|---|---|
| uuid | Ja | Job UUID returneret af /v1/tts/ or /v1/voice-clone/. |
| format | Nej | srt (standard) eller vtt. |
| download | Nej | 1 at sende Indhold-Disposition: vedhæftning så browseren gemmer snarere end viser. |
| language | Nej | Tip til indstillingsmodellen (auto-detekteret, hvis udeladt). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Udtale ordbog ny
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)
| Parameter | Type | Varebeskrivelse |
|---|---|---|
| word | string | Word to override (f.eks. GIF , Anthropic ). Word-boundary matched. |
| replacement | string | Hvordan staves det til modellen (f.eks. jiff, ann HROP ick ). |
| language | string | Valgfri ISO-kode. Tom = gælder for alle sprog. |
| case_sensitive | boolean | Standard false . Match tilfælde nøjagtigt, 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 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 tag på enhver artikel side og besøgende får en fast læserlinje, der fortæller siden ved klik. Auto-detekterer artiklen krop, understøtter brugerdefineret stemme / model / position / accent farve.
<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>
Indstillinger
| Parameter | Varebeskrivelse |
|---|---|
data-pk | Udgivelsesnøgle (pk-tts-...). Domænebegrænsninger håndhæves via tastens tilladt_domains felt. |
data-voice | Stemme- ID. Standard af_bella. |
data-model | TTS model ID. Standard kokoro . |
data-extract | auto (default)! forsøger artikel/main/. post-content/.entry-indhold selectors, falder tilbage til tætteste afsnit klynge. Eller passere enhver CSS selector til at målrette et bestemt element. |
data-position | top . |
data-color | Accentfarve (enhver CSS- farve). Standard #e60000. |
data-min-chars / data-max-chars | Spring stangen over, hvis artiklen er kortere end min-chars (standard 200). Cap input ved max-chars (standard 50,000). |
Kilde på GitHub: < a Href=\
Lyt Knap widget
Inline knap-stil embed. Renders ved siden af sin tag og spiller en knap-triggeret kort snippet. Forskellige form fra artiklen Oplæser ovenfor (som auto-injicerer en side-panning bar og fortæller hele artiklen).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Reddede stemmer (persistente kloner)
Upload en reference lyd én gang, komme tilbage en vedvarende voice_id, derefter reference, at id i TTS anmodninger i stedet for at gen-uploade lyd hvert opkald. Ideel til høj volumen integrationer.
Upload en stemme
POST
https://tts.ai/api/v1/user-voices/
Krævet auth
Multipart formular. Felter: fil (påkrævet, 5-30s lyd), navn (påkrævet), sprog (valgfri, standard da), model (valgfri automatisk picks cosyvoice2 for zh/ja/ko ellers openvoice), consent_bekræftet (påkrævet, enhver sandhedsværdi).
curl -X POST https://tts.ai/api/v1/user-voices/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@reference.wav" \
-F "name=My Narrator" \
-F "language=en" \
-F "consent_confirmed=true"
# Response:
{
"public_id": "uv_a1b2c3d4e5f6",
"id": 42,
"name": "My Narrator",
"model_name": "openvoice",
"language": "en",
"reference_audio_url": "https://tts.ai/media/user-voices/....wav",
"storage_status": "active",
"created_at": "2026-04-17T03:45:00+00:00"
}
Brug den gemte stemme i TTS
POST til /api/v1/tts/ (NOTE: web VPS vært, ikke api.tts.ai) med user_voice_id. Vi indlæser din lagrede lyd og rute til kloningsrørledningen.
curl -X POST https://tts.ai/api/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'
# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.
Liste / slet
GET https://tts.ai/api/v1/user-voices/ # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6
Arkiv / genaktivere (gratis)
Arkiverede stemmer forbliver på din konto, men kan ikke bruges i TTS. Nyttig for sovende slutbrugere, så din liste forbliver ren.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Kodeeksempler
Tekst til tale
import requests
API_KEY = "sk-tts-your-key"
# Text to Speech
response = requests.post(
"https://api.tts.ai/v1/tts/",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "kokoro",
"text": "Hello from TTS.ai!",
"voice": "af_bella",
"format": "mp3"
}
)
with open("output.mp3", "wb") as f:
f.write(response.content)
print(f"Credits used: {response.headers.get('X-Credits-Used')}")
Tale til tekst
# Speech to Text
with open("recording.mp3", "rb") as f:
response = requests.post(
"https://api.tts.ai/v1/stt/",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"file": f},
data={"model": "faster-whisper", "timestamps": "true"}
)
result = response.json()
print(result["text"])
Stemmekløvning
# Voice Cloning
with open("reference.wav", "rb") as ref:
response = requests.post(
"https://api.tts.ai/v1/tts/clone/",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"reference_audio": ref},
data={
"text": "This speech uses a cloned voice.",
"model": "chatterbox"
}
)
with open("cloned_output.mp3", "wb") as f:
f.write(response.content)
Tekst til tale
const API_KEY = 'sk-tts-your-key';
// Text to Speech
const response = await fetch('https://api.tts.ai/v1/tts/', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'kokoro',
text: 'Hello from TTS.ai!',
voice: 'af_bella',
format: 'mp3'
})
});
const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();
Tale til tekst
// Speech to Text
const formData = new FormData();
formData.append('file', audioFile);
formData.append('model', 'faster-whisper');
const response = await fetch('https://api.tts.ai/v1/stt/', {
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}` },
body: formData
});
const result = await response.json();
console.log(result.text);
Tekst til tale
# Text to Speech
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!","voice":"af_bella","format":"mp3"}' \
-o output.mp3
Tale til tekst
# Speech to Text
curl -X POST https://api.tts.ai/v1/stt/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@recording.mp3" \
-F "model=faster-whisper" \
-F "timestamps=true"
Stemmekløvning
# Voice Cloning
curl -X POST https://api.tts.ai/v1/tts/clone/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "reference_audio=@reference.wav" \
-F "text=This uses a cloned voice." \
-F "model=chatterbox" \
-o cloned.mp3
Lydforbedring
# Audio Enhancement
curl -X POST https://api.tts.ai/v1/audio/enhance/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@noisy_audio.mp3" \
-F "denoise=true" \
-F "enhance_clarity=true" \
-o enhanced.mp3
Fejlkoder
Alle fejl returnere en JSON svar med en error felt.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP- status | Fejlkode | Varebeskrivelse |
|---|---|---|
| 400 | bad_request |
Ugyldige forespørgselsparametre. Tjek fejlmeddelelsen for detaljer. |
| 401 | unauthorized |
Manglende eller ugyldig API- nøgle. |
| 402 | insufficient_credits |
Ikke nok tegn. Køb mere på /pris/. |
| 403 | forbidden |
Du har ikke tilladelse til at få adgang til denne ressource (f.eks. valg af en anden brugers job). API-adgang er inkluderet i hver plan. |
| 404 | not_found |
Model eller stemme ikke fundet. |
| 413 | file_too_large |
Uploadet fil overskrider størrelsesgrænsen. |
| 429 | rate_limited |
For mange anmodninger. Tjek satsgrænseoverskrifter. |
| 500 | internal_error |
Serverfejl. Prøv igen senere. |
| 503 | model_loading |
Model indlæses, prøve igen om et par sekunder. |
WebhooksName
For langvarige opgaver (Stem split, batch TTS), kan du give en webhook_url parameter. Når opgaven er færdig, vil vi poste resultatet til din URL.
{
"event": "task.completed",
"task_id": "task_abc123",
"status": "success",
"result_url": "https://api.tts.ai/v1/results/task_abc123",
"credits_used": 12,
"created_at": "2025-01-15T10:30:00Z",
"completed_at": "2025-01-15T10:30:45Z"
}
Er du klar til at bygge?
Få din API-tasten og begynde at integrere TTS.ai i dine programmer.