Dokumentacija API

Vključite TTS.ai v vaše aplikacije z našim REST API. OpenAI kompatibilen format za enostavno migracijo.

RESTARNI API Združljiv z OpenAI Odzivi JSON Tekoča podpora

Pregled

TTS.ai API zagotavlja programski dostop do vseh funkcij platforme: sinteza besedila-to-speech, transkripcija govora-to-tekst, kloniranje glasu, izboljšanje avdio in več. API uporablja standardne konvencije REST z JSON zahteve/odziv teles.

Ključ API

Vzemi svoj API ključ od Nastavitve računa. Na voljo na Pro in Enterprise načrtih.

Osnovni URL

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

Auth

Nosilec tokena preko Authorization Glava

Avtentifikacija

Vse zahteve API zahtevajo avtentifikacijo preko nosilca tokena v Authorization Glava.

Glava HTTP
Authorization: Bearer sk-tts-your-api-key-here
Obdrži svojo API ključno skrivnost. Ne delite ga s kodo stranke, javnimi repozitoriji ali dnevniki. Ključev redno vrtite iz nastavitev vašega računa.

SDKs

Uradni SDK-ji olajšajo vključitev TTS.ai v vašo aplikacijo. Oba sta odprta in na voljo na 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

Osnovni URL

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

Vsi opazovani dogodki so v primerjavi s tem osnovnim URL-jem. Na primer, dogodek TTS je:

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

Mejne vrednosti

Omejitve stopenj API se razlikujejo glede na načrt:

Načrt Zahtevki/min Sočasno Največja dolžina besedila
Prosto 10 2 500 znakov
Začetek 30 3 100.000 znakov
Prof. 60 5 100.000 znakov
Podjetje 300 20 50.000 znakov

V vsak odgovor so vključena mejna glava hitrosti: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditni stroški

Storitev Stroški Enota
TTS (Prosti modeli: Piper, VITS, Melotts) 1000 znakov na 1.000 znakov
TTS (Standardni modeli: Kokoro, CosyVoice 2, itd.) 2.000 znakov na 1.000 znakov
TTS (Premijski modeli: Tortoise, Chatterbox itd.) 4000 znakov na 1.000 znakov
Govor na besedilo 2.000 znakov na minuto zvoka
Kloniranje glasu 4000 znakov na 1.000 znakov
Spreminjevalec glasu 3000 znakov na minuto zvoka
Izboljšanje zvoka 2.000 znakov na minuto zvoka
Odstranjevanje glasbe / razdeljevanje stena 3000-4.000 znakov na minuto zvoka
Prevod govora 5000 znakov na minuto zvoka
Glasovni pogovor 3000 znakov na zavoj
Iskalnik ključev & BPM Prosto --
Avdio pretvornik Prosto --

Besedilo v govor

POST /v1/tts/

Pretvori besedilo v zvok govora. Vrne zvočno datoteko v zahtevanem formatu.

Telo zahtevka

ParameterVrstaZahtevanaOpis
model string Da, da. Vzorec ID (npr. < koda>kokoro , < koda>chatterbox , < koda>piper )
text string Da, da. Besedilo za pretvorbo v govor (največ 100.000 znakov na zahtevo)
voice string Da, da. Glasovni ID (koristi /v1/voices/ za seznam razpoložljivih glasov)
format string Ne Izhodna oblika: < koda> mp3 (privzeto), < koda>wav, < koda>flac , < koda>
speed float Ne Privzeto: < koda>1.0. Razpon: < koda>0.5 do < koda>2.0
language string Ne Jezikovna koda (npr. en , es ). Samodejno zaznano, če je izpuščeno.
stream boolean Ne Omogoči streaming odziv. Privzeto: < koda> false

Zahtevek za primer

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

Odziv

Vrne zvočno datoteko kot binarne podatke z ustreznim Kontent-Type naslovom (audio/mpeg, audio/wav, itd.).

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

Govor na besedilo

POST /v1/stt/

Transcribe audio na besedilo. Podpira 99 jezikov z avto-detekcijo.

Telo zahtevka (multipart/form-data)

ParameterVrstaZahtevanaOpis
file file Da, da. Zvočna datoteka (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ne Model STT: < koda>Whisper (privzeto), < koda>, < koda> hitrejša-Whisper , < koda>smisel
language string Ne Koda jezika. avto za samodejno odkrivanje (privzeto).
timestamps boolean Ne Vključi časovne oznake na ravni besed. Privzeto: false
diarize boolean Ne Omogoči diarizacijo zvočnika. Privzeto: < koda> false

Odziv

Odziv 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"
    }
  ]
}

Kloniranje glasu

POST /v1/tts/clone/

Ustvari govor v kloniranem glasu. Naloži referenčni zvok in besedilo.

Telo zahtevka (multipart/form-data)

ParameterVrstaZahtevanaOpis
reference_audio file Da, da. Referenčni glas (10-30 sekund priporočeno). Max 20MB.
text string Da, da. Besedilo za govor v kloniranem glasu.
model string Ne Klonov model: < koda>chatterbox (privzeto), < koda>kosivoice2, < koda>gpt-sovits
format string Ne Izhodna oblika: < koda> mp3 (privzeto), < koda>wav , < koda>flac
language string Ne Koda ciljnega jezika. Podpora mora biti izbrana z izbranim modelom.

Odziv

Vrne zvočno datoteko kot binarne podatke, enako kot dogodek TTS.

Spreminjevalec glasu

POST /v1/voice-convert/

Pretvori zvok v zvok kot drugačen glas. Pošlji zvok vira in izberi tarčo glasu.

Telo zahtevka (multipart/form-data)

ParameterVrstaZahtevanaOpis
file file Da, da. Izvorna zvočna datoteka (MP3, WAV, FLAC). Max 50MB.
target_voice string Da, da. Ciljna identifikacijska številka za pretvorbo v (koristi /v1/voices/ za seznam razpoložljivih glasov)
model string Ne Model konverzije glasu: openvoice (privzeto), knn-vc
format string Ne Izhodna oblika: < koda>wav (privzeto), < koda>mp3, < koda>flac

Zahtevek za primer

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

Odziv

Vrne konvertirano zvočno datoteko kot binarne podatke.

Prevod govora

POST /v1/speech-translate/

Prevaja govorjen zvok iz enega jezika v drugega. Združuje govor-to-tekst, prevod, in besedilo-to-speech v enem klicu.

Telo zahtevka (multipart/form-data)

ParameterVrstaZahtevanaOpis
file file Da, da. Izvorna zvočna datoteka v izvirnem jeziku. Max 100MB.
target_language string Da, da. Koda ciljnega jezika (npr. es , fr, de, , ja)
voice string Ne Glas za preveden izhod. Samodejno izbrano, če je izpuščeno.
preserve_voice boolean Ne Poskusi ohraniti glasovne značilnosti prvotnega govornika. Privzeto: false

Odziv

Odziv 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
}

Govor govoru

POST /v1/speech-to-speech/

Preoblikovanje govora, čustva, ali dostava ob ohranjanju vsebine. Koristno za prilagoditev tona, hodljenje in izrazitost.

Telo zahtevka (multipart/form-data)

ParameterVrstaZahtevanaOpis
file file Da, da. Izvorna zvočna datoteka. Max 50MB.
voice string Da, da. Ciljna identifikacija glasu za izhodni govor
model string Ne Model: < koda>openvoice (privzeto), < koda>chatterbox
emotion string Ne Ciljna čustva: < koda>nevtralna , < koda>srečna , < koda>sad , < koda>, < koda>, razburjena
speed float Ne Nastavitev hitrosti. Privzeto: < koda>1.0. Razpon: < koda>0.5 do < koda>2.0

Odziv

Vrne spremenjeno zvočno datoteko kot binarne podatke.

Zvočna orodja

Končni dogodki za obdelavo zvoka za izboljšanje, odstranjevanje glasu, ločevanje stebel in več.

POST /v1/audio/enhance/

Izboljšati kakovost zvoka: denoize, izboljšati jasnost, super ločljivost.

file fileZvočna datoteka za izboljšanje
denoise booleanOmogoči denoziranje (privzeto: true)
enhance_clarity booleanIzboljšaj jasnost govora (privzeto: true)
super_resolution booleanPovišana kakovost zvoka (privzeto: napačno)
strength integer1-3 (lahka, srednja, močna). Privzeto: 2
POST /v1/audio/separate/

ločevanje vokalov od instrumentov (glasovno odstranjevanje) ali razdeljeno v stebla.

file fileZvočna datoteka za ločitev
model stringdemucs (privzeto) ali spleeter
stems integerŠtevilo stebel: 2, 4, 5 ali 6 (privzeto: 2)
format stringIzhodna oblika: < koda>wav, < koda>>mp3, < koda>flac
POST /v1/audio/dereverb/

Odstrani odmev in odmev iz zvočnih posnetkov.

file fileZvočna datoteka za obdelavo
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Prosto

Analizirajte zvok za odkrivanje ključa, BPM in časovnega podpisa.

file fileZvočna datoteka za analizo
Odziv
{
  "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/ Prosto

Pretvori zvok med formati.

file fileZvočna datoteka za pretvorbo
format stringCiljna oblika: < koda> mp3 , < koda>wav, < koda>flac, < koda>, < koda>m4a, < koda>aac
bitrate integerIzhodna hitrost v kbps: 64, 128, 192, 256, 320
sample_rate integerStopnja vzorčenja: 22050, 44100, 48000
channels stringmono ali stereo

Glasovni pogovor

POST /v1/voice-chat/

Pošljite zvok ali besedilo in prejmite odgovor AI z sintetiziranim govorom.

Telo zahtevka (multipart/form-data ali JSON)

ParameterVrstaZahtevanaOpis
audio file Ne* Vnos zvoka (ali audio ali tekst je potreben)
text string Ne* Vnos besedila (ali audio ali text zahtevan)
voice string Ne Glas za odziv AI. Privzeto: af_bella
tts_model string Ne Model TTS za odziv. Privzeto: < koda>kokoro
system_prompt string Ne Porabljeni sistemski pogon za AI
conversation_id string Ne Nadaljuj obstoječi pogovor

Odziv

Odziv 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
}

Serija TTS

POST /v1/tts/batch/

Predložite več besedil za vzporedno TTS generacijo. Izbirno prejmete povratni klic na spletni strani, ko so vsa delovna mesta končana.

Parametri

ParameterVrstaOpis
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Odziv

Odziv JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Raziskava napredka z GET /v1/tts/batch/rezult/?batch_id=abc123

Glasovno vgrajevanje

POST /v1/voice-embed/

Predračunajte glasovno vgradnjo iz referenčnega zvoka. Uporabite vrnjeno embed_id v poznejših glasovnih zahtevah za kloniranje za skoraj instant generacijo.

Parametri

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

Odziv

Odziv JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Preverjanje zdravstvenega stanja

GET /v1/health/

Preverite status strežnika GPU, naložene modele in velikost vrstice. Overitev ni potrebna. Odstranjen je 30 sekund.

Odziv

Odziv JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Seznam modelov

GET /v1/models/

Vrne seznam vseh razpoložljivih modelov z njihovimi zmožnostmi.

Odziv

Odziv 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
    }
  ]
}

Seznam glasov

GET /v1/voices/

Vrne seznam vseh razpoložljivih glasov, neobvezno filtriranih po modelu ali jeziku.

Parametri poizvedbe

ParameterVrstaOpis
model string Filtriraj po vzorcu (npr. kokoro )
language string Filtriraj po jezikovni kodi (npr. en )
gender string Filtriraj po spolu: < koda>male , < koda>žena , < koda>nevtral

Odziv

Odziv 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
}

Primeri oznake

Besedilo v govor

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

Govor na besedilo

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

Kloniranje glasu

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)

Besedilo v govor

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

Govor na besedilo

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

Besedilo v govor

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

Govor na besedilo

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"

Kloniranje glasu

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

Izboljšanje zvoka

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

Oznake napak

Vse napake vrnejo odgovor JSON z error polje.

Format odziva na napake
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
Status HTTPOznaka napakeOpis
400 bad_request Neveljavni parametri zahtevka. Za podrobnosti preverite sporočilo o napaki.
401 unauthorized Manjka ali neveljaven ključ API.
402 insufficient_credits Ni dovolj znakov. Nakupite več na /cence /.
403 forbidden API dostop ni na voljo v vašem načrtu.
404 not_found Model ali glas niso našli.
413 file_too_large Naložena datoteka presega mejo velikosti.
429 rate_limited Preveč zahtev. Preverite mejne vrednosti zaglavij.
500 internal_error Napaka strežnika. Poskusite pozneje.
503 model_loading Model je naložen. Ponovno ponovite v nekaj sekundah.

Webhooks

Za dolgotrajne naloge (razdelitev stem, serija TTS) lahko zagotovite parametr webhook_url . Ko naloga konča, bomo poiskali rezultat na vaš URL.

Webhook 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 rezultati so na voljo za prenos za 24 ur po zaključku. Prepričajte se, da jih takoj prenesete.

Pripravljeni na gradnjo?

Vzemite svoj API ključ in začnite vključevati TTS.ai v vaše aplikacije.