Teata veast / Omaduse päring

API dokumentatsioon

Integreerida TTS.ai oma rakendustesse meie REST API. OpenAI-ühilduv formaat lihtne ränne.

REST API OpenAI ühilduv JSON vastused Streaming Support

Ülevaade

TTS.ai API pakub programmilist juurdepääsu kõigile platvormi funktsioonidele: tekstilt kõnele sünteesi, kõnelt tekstile transkriptsiooni, hääle kloonimist, heli täiendamist ja muud. API kasutab JSON päringu/vastuse organitega standardseid REST konventsioone.

API võti

Hangi oma API võti Konto Seadistused. Saadaval Pro ja Enterprise plaanid.

Baas- URL

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

Auth

Bearer token via Authorization päis

Autentimine

Vaba tase ® võtit ei ole vaja. Anonüümsed postitused /v1/tts/ töötada ilma author, kuni 5000 tähemärki päevas IP, kasutades ükskõik millist meie tasuta mudelid (piper, vits, melotts, kokoro). Registreeru tasuta konto saada 15,000 boonus tähemärki ja juurdepääsu premium mudelid.

Premium mudelid ja kõrgem määr piirangud, autentida Bearer sümboolne Authorization päis.

HTTP päis
Authorization: Bearer sk-tts-your-api-key-here
Hoia oma API võtit saladuses. Ärge jagage seda kliendipoolses koodis, avalikes hoidlates või logides. Pöörake võtmeid regulaarselt oma konto seadistustest.

SDKdunit synonyms for matching user input

Ametlik SDKd teha lihtne integreerida TTS.ai oma taotluse. Mõlemad on avatud allikas ja saadaval 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

Baas- URL

Baas- URL: https://api.tts.ai/v1/

Kõik tulemusnäitajad on selle baasURL- i suhtes. Näiteks TTS- i tulemusnäitaja on:

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

Hinnapiirangud

API piirmäärad on plaaniti erinevad:

Plaan Taotlused/min Samaaegne Maks. teksti pikkus
Vaba 10 2 500 tähemärki
Starter 30 3 1 000 000 tähemärki
Pro 60 5 1 000 000 tähemärki
Ettevõtlus 300 20 50 000 tähemärki

Määra piirangu päised on kaasatud iga vastuse: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Krediidikulud

Teenus Kulud Ühik
TTS (Vabad mudelid: Piper, VITS, MeloTTS) 1000 tähemärki 1000 tähemärgi kohta
TTS (Standardmudelid: Kokoro, CosyVoice 2 jne) 2000 tähemärki 1000 tähemärgi kohta
TTS (Premium mudelid: Tortoise, Chatterbox jne) 4000 tähemärki 1000 tähemärgi kohta
Kõne tekstile 2000 tähemärki audio minuti kohta
Hääle kloonimine 4000 tähemärki 1000 tähemärgi kohta
Häälemuutja 3000 tähemärki audio minuti kohta
Helivõimendus 2000 tähemärki audio minuti kohta
Hääle eemaldamine / varre tükeldamine 3000-4000 märki audio minuti kohta
Kõnetõlge 5000 tähemärki audio minuti kohta
Häälvestlus 3000 tähemärki iga pöörde kohtaunit synonyms for matching user input
Võtme ja BPM- i leidja Vaba --
Audiokonverter Vaba --

Tekst kõnele

POST /v1/tts/

Teisenda tekst kõne audioks. Tagastab audiofaili soovitud vormingus.

Taotluse esitanud asutus

ParameeterTüüpNõutavKirjeldus
model string Ei. Mudel ID (nt kokoro, chatterbox, piper). Kui me ei ole auto-pick mudel, mis toetab taotletud Language < kood> < kood>Kokoro for en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper teiste toetatud keelte puhul (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Jah Tekst kõneks teisendamiseks. Nõudepõhine kork: 500 chars (anonüümne), 5000 (vabakonto), 1 000 000 (tasuline plaan). Pikad sisendid on automaatsed serveripoolsed.
voice string Jah Hääle ID (kasutada olemasolevate häälte loetlemiseks < koodi>/v1/voices/)
format string Ei. Väljundi vorming: mp3 (vaikimisi), wav, flac, og
speed float Ei. Kõnekiiruse kordaja. Vaikimisi: < kood>1. 0. Vahemik: < kood>0. 5 kuni < kood>2. 0
language string Ei. Keelekood (nt en , es ).
instructions string Ei. Aktiveerimine / kohaletoimetamise vihjed (≤500 märki). nt \
pronunciations object | array Ei. Korduv hääldamine. Kas < kood > {\ @ title: window
stream boolean Ei. Soorituse vastuse lubamine. Vaikimisi: false

Näidistaotlus

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

SSML < say- as > sildid

Numbrid, kuupäevad, valuuta, telefoninumbrid ja lühendid

tõlgendatavSisendRäägitakse nagu
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Detsember kolmkümmend esimene, üheksateist üheksakümmend üheksa
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

Kuupäevavorming vaikimisi mdy inglise keeles ja dmy mujal; overover with format=\

Näide
{
  "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."
}

Vastus

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

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Täielik näide

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

Kõne tekstile

POST /v1/stt/

Määrab audio tekstiks. Toetab 99 keelt automaatse tuvastamisega.

Taotluse esitanud asutus (multipart/form-data)

ParameeterTüüpNõutavKirjeldus
file file Jah Audiofail (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ei. STT mudel: whisper (vaikimisi), kiirem-whisper , sensevoice
language string Ei. Keelekood. < kood>auto automaatse tuvastamise korral (vaikimisi).
timestamps boolean Ei. Kaasa arvatud sõnataseme ajatemplid. Vaikimisi: < kood> vale
diarize boolean Ei. Kõneleja diariseerumise lubamine. Vaikimisi: false

Vastus

JSON- ravivastus
{
  "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"
    }
  ]
}

Hääle kloonimine

POST /v1/tts/clone/

Loo kõne kloonitud hääles. Laadi üles viiteheli ja tekst.

Taotluse esitanud asutus (multipart/form-data)

ParameeterTüüpNõutavKirjeldus
reference_audio file Jah Viitehääle heli (10-30 sekundit soovitatavat). Max 20MB.
text string Jah Sõnum kloonitud hääles rääkimiseks.
model string Ei. Kloonimudel: chatterbox (vaikimisi), cosyvoice2, gpt-sovits
format string Ei. Väljundi vorming: mp3 (vaikimisi), wav, flac
language string Ei. Sihtkeele kood. Seda peab toetama valitud mudel.

Vastus

Tagastab audiofaili binaarandmetena, sama mis TTS tulemusnäitaja.

Häälemuutja

POST /v1/voice-convert/

Teisenda heli, et kõlada nagu teine hääl. Lae lähtekoodi heli ja vali sihthääl.

Taotluse esitanud asutus (multipart/form-data)

ParameeterTüüpNõutavKirjeldus
file file Jah Lähte audiofail (MP3, WAV, FLAC). Max 50MB.
target_voice string Jah Sihthääle ID teisendamiseks (kasutada < kood>/v1/voices/, et loetleda saadaolevad hääled)
model string Ei. Hääle teisendamise mudel: openvoice (vaikimisi), knn-vc
format string Ei. Väljundi vorming: wav (vaikimisi), mp3, flac

Näidistaotlus

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

Vastus

Tagastab teisendatud audiofaili binaarandmetena.

Kõnetõlge

POST /v1/speech-translate/

Tõlgitud heli ühest keelest teise. Ühendab kõne-teksti, tõlke ja teksti-kõne ühe kõnega.

Taotluse esitanud asutus (multipart/form-data)

ParameeterTüüpNõutavKirjeldus
file file Jah Lähtesta audiofail originaalkeeles. Max 100MB.
target_language string Jah Sihtkeele kood (nt es, fr , de, ja)
voice string Ei. Hääl tingimusel väljund automaatne kui.
preserve_voice boolean Ei. Proovib säilitada originaalkõlari hääleomadusi. Vaikimisi: false

Vastus

JSON- ravivastus
{
  "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
}

Kõne kõnele

POST /v1/speech-to-speech/

Muutke kõnestiili, emotsioone või sünnitust, säilitades sisu. Kasulik kohandada tooni, pacing ja väljendusvõimet.

Taotluse esitanud asutus (multipart/form-data)

ParameeterTüüpNõutavKirjeldus
file file Jah Kõne audiofail. Max 50MB.
voice string Jah Väljundkõne sihthääle ID
model string Ei. Mudel: openvoice (vaikimisi), chatterbox
emotion string Ei. Emotsiooni sihttase: neutraal, pappy, sad, angry, packed
speed float Ei. Kiiruse reguleerimine. Vaikimisi: 1.0 . Vahemik: 0.5 kuni 2.0

Vastus

Tagastab teisendatud audiofaili binaarandmetena.

Audiotööriistad

Audio töötlemise tulemusnäitajad parandamiseks, vokaal eemaldamine, varre jagunemine, ja rohkem.

POST /v1/audio/enhance/

Parandada heli kvaliteeti: denoise, parandada selgust, super resolutsioon.

file fileSuurendatav audiofail
denoise booleanDenoiseerimise lubamine (vaikimisi: true)
enhance_clarity booleanSuurenda kõne selgust (vaikimisi: true)
super_resolution booleanSuurenda helikvaliteeti (vaikimisi: false)
strength integer1-3 (kerge, keskmine, tugev). Vaikimisi: 2
POST /v1/audio/separate/

Eraldi hääled instrumentaalidest (hääle eemaldamine) või lõhenevad varteks.

file fileEraldatav audiofail
model stringdemucs (vaikimisi) või spleeter
stems integerVarte arv: 2, 4, 5 või 6 (vaikimisi: 2)
format stringVäljundi vorming: wav, mp3, flac
POST /v1/audio/dereverb/

Eemaldab helisalvestistest kaja ja reverb.

file fileTöötletav audiofail
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Vaba

Analüüsige heli, et tuvastada võti, BPM, ja aja signatuur.

file fileAnalüüsitav audiofail
Vastus
{
  "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/ Vaba

Teisenda audio vormingute vahel.

file fileTeisendatav audiofail
format stringSihtvorm: mp3, wav, flac, ogg, m4a, ac
bitrate integerVäljundi bitikiirus kbps: 64, 128, 192, 256, 320
sample_rate integerProovi määr: 22050, 44100, 48000
channels stringmono või stereo

Häälvestlus

POST /v1/voice-chat/

Saada audio või tekst ja saada AI vastus sünteesitud kõnega.

Taotluse esitanud asutus (multipart/form-data või JSON)

ParameeterTüüpNõutavKirjeldus
audio file Ei.* Audiosisend (kas audio või text required)
text string Ei.* Tekstisisend (kas audio või text nõutav)
voice string Ei. AI vastuse hääl. Vaikimisi: < kood>af_ bella
tts_model string Ei. TTS vastuse mudel. Vaikimisi: < kood>kokoro
system_prompt string Ei. Kohandatud süsteemi kiirinfo AI jaoks
conversation_id string Ei. Jätkake olemasolevat vestlust

Vastus

JSON- ravivastus
{
  "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
}

Partii nr:

POST /v1/tts/batch/

Saatke paralleelselt TTS- i genereerimiseks mitu teksti. Kui kõik tööd on tehtud, saab veebikonksu tagasikutsumise.

Parameetrid

ParameeterTüüpKirjeldus
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringValikuline URL POSTI tulemuste kohta, kui partii on lõpetatud.

Vastus

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

Kontrollkäigu edenemine GET/v1/tts/batch/result/?batch_id=abc123

Hääle põimimine

POST /v1/voice-embed/

Eelkompenseerib viite audiost omastatud hääle. Tagastatud embed_ id kasutatakse järgnevates peaaegu instant generatsiooni kõne kloonimise taotlustes.

Parameetrid

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

Vastus

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

Tervisekontroll

GET /v1/health/

Kontrolli GPU serveri olekut, laaditud mudeleid ja järjekorda. Autentimist ei ole vaja. Cached for 30 seconds.

Vastus

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

Nimekiri Mudelid

GET /v1/models/

Tagastab kõigi olemasolevate mudelite nimekirja koos nende võimalustega.

Vastus

JSON- ravivastus
{
  "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
    }
  ]
}

Nimekiri Hääled

GET /v1/voices/

Tagastab kõigi saadaolevate häälte nimekirja, mis valikuliselt filtreeritakse mudeli või keele järgi.

Päringu parameetrid

ParameeterTüüpKirjeldus
model string Filter mudeli ID järgi (nt kokoro)
language string Filter keelekoodi järgi (nt en )
gender string Filter soo järgi: male, national, neutraal

Vastus

JSON- ravivastus
{
  "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
}

Tõlkis valiant subclub.future.ee uus

GET /v1/speech/subtitles/?uuid=<job_uuid>&format=srt|vtt&download=1

Sünkroniseeritud subtiitrite genereerimine iga lõpetatud TTS- i töö jaoks. Käivitab Whisper' i joondamise üle audio ja tagastab SRT või WebVTT. Tulemus on puhverdatud kettale nii, et sama uidi teine kõne on ketta lugemine.

Päringu parameetrid

ParameeterNõutavKirjeldus
uuidJahTöö UUID tagastas /v1/tts/ või /v1/voice-clone/.
formatEi.srt (vaikimisi) või vtt.
downloadEi.1 to send Content- Disposition: attachment so the browser results mitte displays.
languageEi.Vihje joondusmudelile (kui see on välja jäetud, siis automaatselt tuvastatav).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Hääldussõnastik uus

GET POST DELETE /api/v1/pronunciations/

Ütle TTS mootorile, kuidas hääldada konkreetseid sõnu. Salvestatud kirjed rakenduvad automaatselt igale TTS päringule. 200- entry per- account limiit.

Taotluse esitanud asutus (POST)

ParameeterTüüpKirjeldus
wordstringTühistatav sõna (nt GIF, Antropic ). Sõnadega sobitatud.
replacementstringKuidas seda mudeli puhul kirjutada (nt jiff, ann HTHR ick).
languagestringValikuline ISO kood. Tühi = kehtib kõigi keelte kohta.
case_sensitivebooleanVaikimisi < kood>vale . Sobib just siis, kui true.
cURL
# 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-..."

Sa võid ühe päringu tühistada ilma neid salvestamata ka Pronunciations igale /v1/tts/ call'ile kui objektile või massiivile (vt TTS tulemusnäitaja params).

Artikkel Jutustaja uus

Ühe < kood> < script> sildi viskamine igale artiklilehele ja külastajad saavad püsilugejariba, mis jutustab lehekülje klõpsuga. Automaatselt tuvastab artikli keha, toetab kohandatud hääle / mudeli / positsiooni / aktsendi värvi.

HTML
<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>

Valikud

ParameeterKirjeldus
data-pkAvaldatav võti (pk-tts-...). Domeenipiirangud jõustatakse võtme < kood> lubatud_domeenid väljal.
data-voiceHääle ID. Vaikimisi < kood>af_bella.
data-modelTTS mudeli ID. Vaikimisi < kood>kokoro.
data-extractauto (vaikimisi) ~ proovib artiklit/main/. post-content/. entry- content valijad, langeb tagasi tihedaima lõike klastrisse. Või edastab ükskõik millise CSS valija konkreetse elemendi sihtmärgiks.
data-positionbottom (vaikimisi) or top.
data-colorÕige värv (mis tahes CSS värv). Vaikimisi < kood>#e60000.
data-min-chars / data-max-charsJäta riba vahele, kui artikkel on lühem kui min-chars (vaikimisi 200). Cap sisend max-chars (vaikimisi 50,000).

Allikas: GitHub: < a href=\

Kuula nupuvidinat

Nuppude sisekujundusega embed. Renders kõrval oma < script > tag ja mängib nupuga triggered lühike nihe. Erineva kujuga artikkel Jutustaja eespool (mis automaatselt sisestab lehekülje-spanning bar ja jutustab kogu artikkel).

HTML
<script src="https://tts.ai/widget.js"
    data-voice="af_bella"
    data-model="kokoro"
    data-style="full"
    data-theme="light"></script>

Salvestatud hääled (püsiv kloon)

Üleslaadimine audio üks kord, saada tagasi püsiv sound_id, siis viide, et ID TTS päringud asemel uuesti laadimine audio iga kõne. Ideaalne suuremahuline integratsioon.

Hinnakujundus: Salvestamine on tasuta (ei ole päevarent, ei pesa kork). Lae tasu: 500 tähemärki ühekordne hääl. Iga TTS põlvkonnale lisatud lisatasu: +50 tähemärki, mis viitavad salvestatud häälele, lisaks normaalsele põlvkonna kulule. Arhiiv hääled, mida sa ei pea kohe hoidma neid suikumas; taasaktiveerida igal ajal. Mõlemad on tasuta API kõned.

Hääle üleslaadimine

POST https://tts.ai/api/v1/user-voices/ Vajalik autentimine

Multipart form. Valdkonnad: fail (nõutav, 5-30s audio), nimi (nõutav), keel (vabatahtlik, vaikimisi en), mudel (vabatahtlik ~ auto-pickks cosyvoice2 zh/ja/koli openvoice), nõusolek_kinnitatud (nõutav, mis tahes tõene väärtus).

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

Salvestatud hääle kasutamine TTS- is

POSTI /api/v1/tts / (NOTE: web VPS masin, mitte api.tts.ai) kasutaja_voice_id. Laeme salvestatud audio ja marsruudi kloonimise torujuhe.

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.

Nimekiri / kustuta

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

Arhiiv / reaktiveerimine (vaba)

Arhiveeritud hääled jäävad teie kontole, kuid ei saa kasutada TTS. Kasulik seisvatele lõppkasutajatele nii oma nimekirja jääb puhas.

POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/

Koodi näited

Tekst kõnele

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

Kõne tekstile

Python - taotlused
# 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"])

Hääle kloonimine

Python - taotlused
# 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 kõnele

JavaScript - tõmba
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();

Kõne tekstile

JavaScript - tõmba
// 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 kõnele

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

Kõne tekstile

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"

Hääle kloonimine

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

Helivõimendus

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

Veakoodid

Kõik vead tagastavad JSON vastuse koos error väli.

Veareageerimise vorming
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP olekVeakoodKirjeldus
400 bad_request Vigased päringu parameetrid. Kontrolli veateate üksikasju.
401 unauthorized Puuduv või vigane API võti.
402 insufficient_credits Mitte piisavalt tähemärki. Osta rohkem aadressil / hinnastamine /.
403 forbidden Sul ei ole õigust sellele ressursile juurde pääseda (nt teise kasutaja töö ülekuulamine). API-juurdepääs on kaasatud igasse plaani.
404 not_found Mudel või hääl ei leitud.
413 file_too_large Üleslaaditud fail ületab suurusepiirangu.
429 rate_limited Liiga palju soove. Kontrolli määrapiirangupäiseid.
500 internal_error Serveri viga. Proovi hiljem uuesti.
503 model_loading Modell laadib ja proovib mõne sekundi pärast uuesti.

WebhooksCity in Newfoundland Canada

Pikaajaliste ülesannete (stem tükeldamine, partii TTS) korral võid anda webhook_url parameetri. Kui ülesanne on lõpetatud, kirjutame tulemuse sinu URL- i.

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"
}
Webhooki tulemused on 24 tundi pärast lõpetamist allalaadimiseks kättesaadavad. Veenduge, et need kiiresti alla laadida.

Valmis ehitama?

Hangi oma API võti ja hakka integreerima TTS.ai oma rakendustesse.