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

Alle API- forespørsler krever autentisering via et 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 100.000 tegn
Pro 60 5 100.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 Ja Modell-ID (f.eks., koro, kasterboks, piper)
text string Ja Tekst som skal omformes til tale (høyst 100.000 tegn per forespørsel)
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.
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

Svar

Returnerer lydfila som binære data med relevant Content-Type header (audio/mpeg, audio/wav osv.).

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

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

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
}

Kodeeksempel

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')}")

Opplesning 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"])

Stemmekloning

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();

Opplesning 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

Opplesning 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"

Stemmekloning

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

Feilkoder

Alle feil gir et JSON- svar med en error felt.

Feilsvarsformat
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP- statusFeilkodeBeskrivelse
400 bad_request Ugyldige parametere for forespørsel. Sjekk feilmeldinga for detaljer.
401 unauthorized Mangler eller er ugyldig API- nøkkel.
402 insufficient_credits Ikke nok tegn. Kjøp mer på /prising /.
403 forbidden API- tilgang er ikke tilgjengelig i din plan.
404 not_found Fant ikke modell eller stemme.
413 file_too_large Fila som er lastet opp overskrider størrelsesgrensen.
429 rate_limited For mange forespørsler. Sjekk hastighetsgrensens overskrifter.
500 internal_error Tjenerfeil. Prøv igjen senere.
503 model_loading Modell lastes inn. Prøv igjen om noen sekunder.

Netthooks

For langvarige oppgaver (stemdeling, batch TTS) kan du oppgi en webhook_url parameter. Når oppgaven er ferdig vil vi sette resultatet til din URL.

Netthook- payload
{
  "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 tilgjengelige for nedlasting i 24 timer etter at de er ferdig. Pass på å laste dem ned raskt.

Klar til å bygge?

Hent API-nøkkelen din og begynn å integrere TTS.ai i programmene dine.