API dokumentacija

Į jūsų programas integruoti TTS.ai su mūsų REST API. OpenAI suderinama forma lengva migracija.

REST API Suderinama su OpenAI JSON atsakymai Srauto palaikymas

Apžvalga

TTS.ai API užtikrina programinę prieigą prie visų platformos funkcijų: teksto-į-speech sintezės, kalbos-teksto transkripcijos, balso klonavimo, garso stiprinimo ir kt. API naudoja standartines REST konvencijas su JSON užklausų/atsakymo organais.

API raktas

Gauti API raktą iš Paskyros nustatymai. Galima rasti Pro ir Enterprise planuose.

Pagrindinis URL

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

Auth

Meškerio simbolis per Authorization antraštė

Autentikacija

Iš viso nuosavų lėšų, tinkamų mokumo kapitalo reikalavimui padengti, kaip apibrėžta Deleguotojo reglamento (ES) 2015/35 I priede. Anoniminiai postai, į kuriuos /v1/tts/ dirbti be jokio Auth, iki 5000 simbolių/dieną per IP, naudojant bet kurį iš mūsų nemokamų modelių (piper, vits, melotts, kokoro). Užsiregistruoti nemokamai paskyrai gauti 15,000 premijų simbolių ir privilegijuotųjų modelių.

Priemokų modeliams ir aukštesnių normų riboms patvirtinti Authorization antraštė.

HTTP antraštė
Authorization: Bearer sk-tts-your-api-key-here
Laikyti savo API raktą paslaptį. Nesidalinkite klientas kodas, viešų saugyklų ar rąstų. Pasukite klavišus reguliariai iš savo paskyros nustatymus.

SDKs

Oficialus SDKs leidžia lengvai integruoti TTS.ai į jūsų programą. Abu yra atviras šaltinis ir prieinama 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

Pagrindinis URL

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

Visos vertinamosios baigtys yra santykinės šiam baziniam URL. Pavyzdžiui, TTS vertinamoji baigtis yra:

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

Norminės ribos

API normos ribos skiriasi pagal planą:

Planas Prašymai/min. Kartu Maksimalus teksto ilgis
Neapmuitinama 10 2 500 chars
Pradžia 30 3 1000 000 chars
Pro 60 5 1000 000 chars
Įmonė 300 20 50 000 chars

Dažnio ribos antraštės yra įtrauktos į kiekvieną atsakymą: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredito išlaidos

Dokumentų įteikimas Išlaidos Vienetas
TTS (nemokami modeliai: Piper, VITS, MeloTTS) 1000 simbolių 1 000 simbolių
TTS (standartiniai modeliai: Kokoro, CosyVoice 2 ir t. t.) 2 000 simbolių 1 000 simbolių
TTS (Premijos modeliai: Tortoise, Chatterbox ir t. t.) 4000 simbolių 1 000 simbolių
Kalba tekstui 2 000 simbolių per minutę garso
Balso klonavimas 4000 simbolių 1 000 simbolių
Balso keitėjas 3000 simbolių per minutę garso
Garso pagerinimas 2 000 simbolių per minutę garso
Vokalinis pašalinimas / suskaidymas 3 000–4 000 simbolių per minutę garso
Kalbų vertimas 5 000 ženklų per minutę garso
Balso pokalbis 3000 simbolių Posūkio metu
Raktų ir BPM ieškiklis Neapmuitinama --
Garso konverteris Neapmuitinama --

Tekstas į kalbą

POST /v1/tts/

Konvertuoti tekstą į kalbos garso. Grąžina garso failą prašomu formatu.

Prašymą teikianti institucija

ParametrasTipasReikalingaAprašymas
model string Nr. Pavyzdys ID (pvz., kokoro , chatterbox , piper ). Jei nepateikta, mes automatiškai pakabiname modelį, kuris palaiko prašomą kokro en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper kitoms palaikomoms kalboms (ar/pl/nl/cs/da/fi/el/tr/vi/etc.)
text string Taip Tekstas konvertuoti į kalbą. Pagal užklausą dangtelis: 500 chars (anoniminis), 5000 (nemokama sąskaita), 1000,000 (mokamas planas).
voice string Taip Balso ID (galimų balsų sąrašui naudoti /v1/balsai/ )
format string Nr. Išvesties formatas: mp3 (numatyta), wav , flac , g
speed float Nr. Kalba greičio daugiklis. Numatytasis: 1.0 . Intervalas: 0.5 iki < kodas> 2.0
language string Nr. Kalbos kodas (pvz., en , es ). Automatiškai nustatomas, jei jis praleistas.
instructions string Nr. Veikiantys / pristatymo cues (≤500 chars). pvz., \
pronunciations object | array Nr. Užklausa nutraukta. Arba < code> {\
stream boolean Nr. Įjungti srautinį atsaką. Numatytasis: < code> false

Pavyzdžio užklausa

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

ŽVEJYBOS ŽEMĖS ŪKIO ŽUVININKYSTĖS ŽUVININKYSTĖ

Laužyti numerius, datas, valiutą, telefono numerius, ir santrumpas

interpretuoti kaipĮvestisSpoken kaip
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Gruodžio trisdešimt pirmoji, devyniolika devyniasdešimt devyni
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

Data defaults to < code> mdy for English ir < code> dmy kitur; apsisukimas su < code>format=\

Pavyzdys
{
  "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."
}

Atsakas

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.

Visas pavyzdys

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.

Kalba tekstui

POST /v1/stt/

Perrašyti garsą į tekstą. Palaiko 99 kalbas su automatiniu aptikimu.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Garso failas (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maks. 100MB.
model string Nr. STT modelis: whisper (numatyta), fasher-whisper , sensessount
language string Nr. Kalbos kodas. Auto automatiniam aptikimui (numatyta).
timestamps boolean Nr. Įtraukti žodžio lygio žymeles. Numatytasis: < code> false
diarize boolean Nr. Įjungti garsiakalbio diarizaciją. Numatytasis: < code> false

Atsakas

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

Balso klonavimas

POST /v1/tts/clone/

Generuoti kalbą klonuotu balsu. Įkelkite referencinį garsą ir tekstą.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
reference_audio file Taip Atskaitos balso garsas (10-30 sekundžių rekomenduojama). Maks. 20MB.
text string Taip Tekstas kalbėti klonuotame balse.
model string Nr. Klono modelis: chatterbox (numatyta), cosyvoice2 , gpt-sovits
format string Nr. Išvesties formatas: mp3 (numatyta), wav , flac
language string Nr. Tikslinės kalbos kodas. Turi būti palaikomas pasirinktu modeliu.

Atsakas

Grąžina garso failą kaip dvejetainius duomenis, tą patį kaip ir TTS vertinamoji baigtis.

Balso keitėjas

POST /v1/voice-convert/

Konvertuoti garsą į kitą garsą. Įkelkite šaltinį ir pasirinkite tikslinį balsą.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinis garso failas (MP3, WAV, FLAC).
target_voice string Taip Tikslinio balso ID konvertuoti į (naudoti / v1/balsai / sąrašą turimus balsus)
model string Nr. Balso konvertavimo modelis: openvoice (numatyta), knn-vc
format string Nr. Išvesties formatas: wav (numatyta), mp3, flac

Pavyzdžio užklausa

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

Atsakas

Grąžina konvertuoto garso failą kaip dvejetainius duomenis.

Kalbų vertimas

POST /v1/speech-translate/

Išversti garsą iš vienos kalbos į kitą. Sujungti kalbą į tekstą, vertimas, ir tekstas-į-speech į vieną skambutį.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinis garso failas originalo kalba. Max 100MB.
target_language string Taip Tikslinės kalbos kodas (pvz., es , fr , de , ja )
voice string Nr. Balsas išverstam išvedimui. Auto- parinkta, jei praleista.
preserve_voice boolean Nr. Bandymas išsaugoti originalaus garsiakalbio balso savybes. Numatytasis: < code> false

Atsakas

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

Kalba pokalbiui

POST /v1/speech-to-speech/

Transformuoti kalbos stilius, emocijos, ar pristatymas išlaikant turinį. Naudinga reguliuoti tonusą, pacing, ir išraiškingumą.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinės kalbos garso failas. Maks. 50MB.
voice string Taip Tikslinio balso ID išvesties kalbai
model string Nr. Modelis: openvoice (numatyta), chatterbox
emotion string Nr. Tikslinė emocija: neutrali , Happy , sad , angry , excited
speed float Nr. Greičio reguliavimas. Numatytasis: 1.0 . Intervalas: 0.5 iki < kodas> 2.0

Atsakas

Grąžina transformuotą garso failą kaip dvejetainius duomenis.

Garso įrankiai

Garso apdorojimo vertinamosios baigtys pagerinimui, vokaliniam pašalinimui, kamienų dalijimuisi, ir daugiau.

POST /v1/audio/enhance/

Gerinti garso kokybę: denoise, padidinti aiškumą, super raiška.

file fileGarso failas stiprinimui
denoise booleanĮjungti denoizavimą (numatyta: true)
enhance_clarity booleanPadidinti kalbos aiškumą (numatyta: tiesa)
super_resolution booleanAtnaujinta garso kokybė (numatyta: klaidinga)
strength integer1-3 (šviesa, vidutinis, stiprus). Numatytasis: 2
POST /v1/audio/separate/

Atskiri vokalai nuo instrumentinių priemonių (vokų pašalinimas) arba padalinti į stiebus.

file fileGarso failas atskiriamas
model stringdemucs (įprastas) arba spleeter
stems integerKolonėlių skaičius: 2, 4, 5 arba 6 (numatyta: 2)
format stringIšvesties formatas: wav , mp3, flac
POST /v1/audio/dereverb/

Pašalinti aidą ir atgal iš garso įrašų.

file fileGarso failas apdorojamas
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Neapmuitinama

Analizuoti garso aptikti raktą, BPM, ir laiko parašas.

file fileAnalizuojamas garso failas
Atsakas
{
  "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/ Neapmuitinama

Konvertuoti garsą tarp formatų.

file fileKonvertuotinas garso failas
format stringPaskirties formatas: mp3 , wav , flac , gg , m4a , aac
bitrate integerIšvedimo bitų dažnis kbps: 64, 128, 192, 256, 320
sample_rate integerBandinių ėmimo greitis: 22050, 44100, 48000
channels stringmono arba stereo

Balso pokalbis

POST /v1/voice-chat/

Siųsti garsą ar tekstą ir gauti AI atsakymą su sintezuota kalba.

Prašymą teikianti institucija (multipart/form-data arba JSON)

ParametrasTipasReikalingaAprašymas
audio file Nr.* Garso įvestis (reikia arba audio , arba teksto )
text string Nr.* Teksto įvestis (reikalingas arba tekstas )
voice string Nr. Balsas AI atsakymui. Numatytasis: af_ bella
tts_model string Nr. TTS modelis atsakymui. Numatytasis: kokoro
system_prompt string Nr. Pasirinkta sistema greita AI
conversation_id string Nr. Tęsti esamą pokalbį

Atsakas

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

Partijos TTS

POST /v1/tts/batch/

Pateikite keletą tekstų lygiagrečiai TTS generacijai. Neprivalomai gausite Webhook skambutį, kai visi darbai baigti.

Parametrai

ParametrasTipasAprašymas
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringNeprivalomas URL į post rezultatus, kai partija užbaigia.

Atsakas

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

Pažanga taikant GET /v1/tts/partija/rezultatas/?partija_id=abc123

Balso įterpimas

POST /v1/voice-embed/

Iš anksto sukompiliuoti garsą, integruojantį iš referencinio garso. Naudokite grąžintą embed_id vėlesniuose balso klonavimo prašymuose, skirtuose netoliese generacijai.

Parametrai

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

Atsakas

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

Sveikatingumo patikrinimas

GET /v1/health/

Patikrinkite GPU serverio būseną, įkeltus modelius ir eilės dydį. Autentifikavimas nereikalingas.

Atsakas

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

Rodyti modelių sąrašą

GET /v1/models/

Grąžina visų turimų modelių su savo galimybėmis sąrašą.

Atsakas

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

Rodyti balsus

GET /v1/voices/

Grąžina visų turimų balsų sąrašą, filtruojant pagal modelį ar kalbą.

Užklausos parametrai

ParametrasTipasAprašymas
model string Filtruoti pagal modelį ID (pvz., kokoro )
language string Filtruoti pagal kalbos kodą (pvz., en )
gender string Filtruoti pagal lytį: vyriškis , moterų , neutralus

Atsakas

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

Subtitrai (SRT / VTT) naujas

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

Generuoti sinchronizuotus subtitrus bet kuriam atliktam TTS darbui. Paleidžia Whisper lygiavimą garso ir grąžina SRT arba WebVTT. Rezultatas yra konfigūruojamas diske, todėl antras skambutis tam pačiam uuid yra disko skaityti.

Užklausos parametrai

ParametrasReikalingaAprašymas
uuidTaipDarbo UUID grąžino /v1/tts/ or / v1/ voice- clone/.
formatNr. srt (numatyta) arba vt .
downloadNr. 1 siųsti Content-Dispositation: addition todėl naršyklė išsaugo, o ne rodo.
languageNr.Susiejimas su derinimo modeliu (automatiškai nustatomas, jei jis praleistas).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Tarimo žodynas naujas

GET POST DELETE /api/v1/pronunciations/

Praneškite TTS varikliui, kaip ištarti konkrečius žodžius. Įrašyti įrašus automatiškai prie kiekvieno TTS užklausos. 200- įrašo sąskaitos limitas.

Prašymą teikianti institucija (POST)

ParametrasTipasAprašymas
wordstringĮjungiamas žodis (pvz., < code> GIF , < code> Antropic ).
replacementstringKaip jį įrašyti modeliui (pvz., Džiff , ann THROP ick ).
languagestringNeprivalomas ISO kodas. Tuščias = taikomas visoms kalboms.
case_sensitivebooleanNumatytasis falsė . Atitinka atvejį tiksliai, kai Tikrasis .
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-..."

Jūs taip pat galite perduoti užklausos perjungimus neišsaugant jų — įtraukti užtarimai bet /v1/tts/ skambutį kaip objektas ar masyvas (žr. TTS vertinamosios baigties params).

Straipsnis Naratorius naujas

Numeskite vieną