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

Alle API anmodninger kræver godkendelse via 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 100.000 tegn
Pro 60 5 100.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 Ja Model ID (f.eks. kokoro , chatterbox , piper )
text string Ja Tekst til at konvertere til tale (max 100.000 tegn pr anmodning)
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 ).
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

Respons

Returnerer lydfilen som binære data med passende Indholdstype overskrift (audio/mpeg , audio/wav, etc.).

Responsoverskrifter
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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_urlstringOptional URL to POST results when batch completes.

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
}

Kodeeksempler

Tekst til tale

Python - requests
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

Python - requests
# 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

Python - requests
# 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

JavaScript - fetch
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

JavaScript - fetch
// 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

cURL
# 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

cURL
# 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

cURL
# 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

cURL
# 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.

Fejlresponsformat
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP- statusFejlkodeVarebeskrivelse
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 API adgang ikke tilgængelig på din 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.

Webhook- payloadName
{
  "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"
}
Webhook resultater er tilgængelige for download i 24 timer efter afslutningen. Sørg for at downloade dem hurtigt.

Er du klar til at bygge?

Få din API-tasten og begynde at integrere TTS.ai i dine programmer.