API dokumentazioa

Integratu TTS.ai zure aplikazioetan gure REST APIarekin. OpenAI-rekin bateragarria den formatua migrazio erraza egiteko.

REST APIa OpenAI bateragarria JSON erantzunak Streaming euskarria

Orokorra

TTS.ai APIak plataformako ezaugarri guztietarako sarbide programatikoa eskaintzen du: testutik hizketara sintetizatzea, hizketatik testura transkribatzea, ahotsa klonatzea, audioa hobetzea eta abar. APIak REST konbentzio estandarrak erabiltzen ditu JSON eskaera/erantzun gorputzekin.

API gakoa

Eskuratu zure API gakoa hemendik Kontuaren ezarpenak. Pro eta Enterprise planetan eskuragarri dago.

Oinarrizko URLa

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

Autentifikazioa

Token eramantzailearen bidez Authorization goiburua

Autentifikazioa

Librea: ez da gakorik behar. POST anonimoa hona /v1/tts/ lan egin baimenik gabe, IP bakoitzeko 5.000 karaktere/egun arte, gure edozein modelo doako erabiliz (piper, vits, melotts, kokoro). 15.000 pertsona baino gehiagok parte hartu zuten, eta 15.000 pertsonak baino gehiagok jaso zuten saria.

API eskaera guztiek autentifikazioa behar dute Bearer token baten bidez Authorization goiburua.

HTTP goiburua
Authorization: Bearer sk-tts-your-api-key-here
Mantendu zure API gakoa ezkutuan. Ez partekatu bezeroaren aldeko kodean, biltegi publikoetan edo egunkarietan. Biratu gakoak erregularki zure kontuaren ezarpenetan.

SDKak

SDK ofizialek erraz egiten dute TTS.ai zure aplikazioan integratzea. Biak kode irekikoak dira eta GitHub-en eskuragarri daude.

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

Oinarrizko URLa

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

Amaierako puntu guztiak oinarrizko URL honekin erlatiboak dira. Adibidez, TTS amaierako puntua hau da:

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

Emari-mugak

API-ren tasa-mugak planaren arabera aldatzen dira:

Plana Eskaerak/min Aldi berean Testuaren gehienezko luzera
Libre 10 2 500 karaktere
Hasieratzailea 30 3 1.000.000 karaktere
Pro 60 5 1.000.000 karaktere
Enterprise 300 20 50.000 karaktere

Maiztasun-mugako goiburuak erantzun guztietan sartzen dira: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kreditu-kostuak

Zerbitzua Kostua Unitatea
TTS (modelo libreak: Piper, VITS, MeloTTS) Kreditu 1 1.000 karaktere bakoitzeko
TTS (Modelo estandarrak: Kokoro, CosyVoice 2, etab.) 2 kreditu 1.000 karaktere bakoitzeko
TTS (Premium modeloak: Tortoise, Chatterbox, etab.) 4 kreditu 1.000 karaktere bakoitzeko
Hitzetik testura 2 kreditu audio-minutu bakoitzeko
Ahots klonaketa 4 kreditu 1.000 karaktere bakoitzeko
Ahots aldatzailea 3 kreditu audio-minutu bakoitzeko
Audioaren hobekuntza 2 kreditu audio-minutu bakoitzeko
Ahotsa kentzea / ahotsa zatitzea 3-4 kreditu audio-minutu bakoitzeko
Hitz itzulpena 5 kreditu audio-minutu bakoitzeko
Ahots-berriketa 3 kreditu txanda bakoitzeko
Gako & BPM bilatzailea Libre --
Audio bihurtzailea Libre --

Testutik hizketara

POST /v1/tts/

Bihurtu testua hizketa-audiora. Audio-fitxategia itzultzen du eskatutako formatuan.

Eskaeraren gorputza

ParametroakMotaBeharrezkoaAzalpena
model string Ez Modeloaren IDa (adib. kokoro, chatterbox, piper)
text string Bai Testua ahoskerara bihurtzeko (gehienez 5.000 karaktere Pro-rako, 50.000 Enterprise-rako)
voice string Bai Ahots-IDa (erabili /v1/voices/ ahots erabilgarriak zerrendatzeko)
format string Ez Irteerako formatua: mp3 (lehenetsia), wav, flac, ogg
speed float Ez Ahoskera-abiaduraren biderkatzailea. Lehenetsia: 1.0. Tartea: 0.5tik 2.0ra
language string Ez Hizkuntzaren kodea (adib. eu, es). Automatikoki detektatuko da ez bada adierazten.
instructions string Ez Eragiteko / entregatzeko argibideak (≤500 karaktere). Adib. \
pronunciations object | array Ez Eskaera bakoitzeko ahoskera gainidatzi egiten da. Edo {\
stream boolean Ez Gaitu korrontearen erantzuna. Lehenetsia: false

Adibideko eskaera

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 etiketak

Itxi zenbakiak, datak, moneta, telefono zenbakiak eta akronimoak

interpretatuSarreraAhoskatu honela
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Abenduaren hogeita bat, hamahiru laurogeita bederatzi
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

Dataren formatua lehenetsia mdy da ingelesez eta dmy beste lekuetan; gainidatzi format=\

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

Erantzuna

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.

Adibide osoa

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.

Hitzetik testura

POST /v1/stt/

Transkribatu audioa testura. 99 hizkuntza onartzen ditu autodetekzioarekin.

Eskaeraren gorputza (multipart/form-data)

ParametroakMotaBeharrezkoaAzalpena
file file Bai Audio-fitxategia (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Gehienez 100 MB.
model string Ez STT modeloa: whisper (lehenetsia), faster-whisper, sensevoice
language string Ez Hizkuntzaren kodea. auto autodetekziorako (lehenetsia).
timestamps boolean Ez Sartu hitzen mailako denbora-zigiluak. Lehenetsia: false
diarize boolean Ez Gaitu bozgorailuaren diarizazioa. Lehenetsia: false

Erantzuna

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

Ahots klonaketa

POST /v1/tts/clone/

Sortu hizketa ahots klonatu batean. Kargatu erreferentziako audioa eta testua.

Eskaeraren gorputza (multipart/form-data)

ParametroakMotaBeharrezkoaAzalpena
reference_audio file Bai Erreferentziako ahots-audioa (10-30 segundo gomendatzen dira). Gehienez 20 MB.
text string Bai Ahots klonatuan hitz egiteko testua.
model string Ez Klon-eredua: chatterbox (lehenetsia), cosyvoice2, gpt-sovits
format string Ez Irteerako formatua: mp3 (lehenetsia), wav, flac
language string Ez Helburuko hizkuntzaren kodea. Hautatutako modeloak onartu behar du.

Erantzuna

Audio-fitxategia datu binario gisa itzultzen du, TTS amaierako puntuaren berdina.

Ahots aldatzailea

POST /v1/voice-convert/

Bihurtu audioa beste ahots baten antzera sortzeko. Kargatu iturburuko audioa eta hautatu helburuko ahotsa.

Eskaeraren gorputza (multipart/form-data)

ParametroakMotaBeharrezkoaAzalpena
file file Bai Iturburuko audio-fitxategia (MP3, WAV, FLAC). Gehienez 50 MB.
target_voice string Bai Bihurtu beharreko helburuko ahots-IDa (erabili /v1/voices/ ahots erabilgarriak zerrendatzeko)
model string Ez Ahots bihurketa modeloa: openvoice (lehenetsia), knn-vc
format string Ez Irteerako formatua: wav (lehenetsia), mp3, flac

Adibideko eskaera

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

Erantzuna

Bihurtutako audio-fitxategia datu binario gisa itzultzen du.

Hitz itzulpena

POST /v1/speech-translate/

Itzul itzazu ahozko audioak hizkuntza batetik bestera. Hitzetik testura, itzulpenetik testura eta testutik hitzera konbinatzen ditu dei bakar batean.

Eskaeraren gorputza (multipart/form-data)

ParametroakMotaBeharrezkoaAzalpena
file file Bai Iturburuko audio-fitxategia jatorrizko hizkuntzan. Gehienez 100 MB.
target_language string Bai Helburuko hizkuntzaren kodea (adib. es, fr, de, ja)
voice string Ez Itzulitako irteerako ahotsa. Automatikoki hautatzen da ez bada.
preserve_voice boolean Ez Saiatu jatorrizko bozgorailua mantentzen

Erantzuna

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

Hitzetik hitzera

POST /v1/speech-to-speech/

Eraldatu hizketa-estiloa, emozioa edo ematea edukiari eutsiz. Erabilgarria tonua, abiadura eta adierazkortasuna doitzeko.

Eskaeraren gorputza (multipart/form-data)

ParametroakMotaBeharrezkoaAzalpena
file file Bai Hizketaren iturburuko audio-fitxategia. Gehienez 50 MB.
voice string Bai Irteerako hizketaren helburuko ahots-IDa
model string Ez Modeloa: openvoice (lehenetsia), chatterbox
emotion string Ez Helburuko emozioa: neutrala, pozik, triste, haserre, pozik
speed float Ez Abiadura-doikuntza. Lehenetsia: 1.0. Tartea: 0.5tik 2.0ra

Erantzuna

Bihurtutako audio-fitxategia datu binario gisa itzultzen du.

Audio-tresnak

Audioa prozesatzeko amaiera-puntuak, hobekuntza, ahots-ezabapena, zuhaitz-zatiketa eta gehiagorako.

POST /v1/audio/enhance/

Hobetu audioaren kalitatea: zarata kentzea, argitasuna hobetzea, super bereizmena.

file fileAudio-fitxategia hobetzeko
denoise booleanGaitu zarata kentzea (lehenetsia: egia)
enhance_clarity booleanHobetu hizketaren argitasuna (lehenetsia: egia)
super_resolution booleanEskalatu audioaren kalitatea (lehenetsia: faltsua)
strength integer1- 3 (argia, ertaina, gogorra). Lehenetsia: 2
POST /v1/audio/separate/

Bokalak instrumentaletatik bereiztea (bokal-ezabapena) edo zutabetan banatzea.

file fileAudio-fitxategia bereizteko
model stringdemucs (lehenetsia) edo spleeter
stems integerZuhaitz kopurua: 2, 4, 5 edo 6 (lehenetsia: 2)
format stringIrteerako formatua: wav, mp3, flac
POST /v1/audio/dereverb/

Kendu oihartzuna eta erreberberazioa audio-grabazioetatik.

file fileAudio-fitxategia prozesatzeko
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Libre

Analisatu audioa tekla, BPM eta tempo-sinadura detektatzeko.

file fileAudio-fitxategia analizatzeko
Erantzuna
{
  "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/ Libre

Bihurtu audioa formatuen artean.

file fileBihurtu beharreko audio-fitxategia
format stringHelburuko formatua: mp3, wav, flac, ogg, m4a, aac
bitrate integerIrteerako bit- tasa (kbps): 64, 128, 192, 256, 320
sample_rate integerLagin-emaria: 22050, 44100, 48000
channels stringmono edo stereo

Ahots-berriketa

POST /v1/voice-chat/

Bidali audioa edo testua eta jaso AI erantzuna hizketa sintetizatuarekin.

Eskaeraren gorputza (multipart/form-data edo JSON)

ParametroakMotaBeharrezkoaAzalpena
audio file Ez* Audio-sarrera (audio edo text behar da)
text string Ez* Testu-sarrera (audio edo text behar da)
voice string Ez AI erantzunaren ahotsa. Lehenetsia: af_bella
tts_model string Ez TTS modeloa erantzunerako. Lehenetsia: kokoro
system_prompt string Ez Sistemaren galdera pertsonalizatua AI- rentzat
conversation_id string Ez Jarraitu lehendik dagoen solasaldi batekin

Erantzuna

JSON erantzuna
{
  "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/

Bidali testu anitz TTS sorkuntza paralelorako. Aukerazkoa da webhook atzera-dei bat jasotzea lan guztiak amaitzen direnean.

Parametroak

ParametroakMotaAzalpena
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringBatch-a amaitzen denean POST emaitza emateko URL aukerakoa.

Erantzuna

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

Galdeketaren aurrerapena GET /v1/tts/batch/result/?batch_id=abc123 erabiliz

Ahotsa txertatzea

POST /v1/voice-embed/

Aurre-kalkulatu ahots-kapsulazio bat erreferentziako audiotik. Erabili itzulitako embed_id hurrengo ahots-klonazio-eskaeretan ia berehalako sorkuntzarako.

Parametroak

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

Erantzuna

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

Egoeraren egiaztapena

GET /v1/health/

Egiaztatu GPU zerbitzariaren egoera, kargatutako modeloak eta ilararen tamaina. Ez da autentifikaziorik behar. 30 segundoz cachean.

Erantzuna

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

Zerrendatu modeloak

GET /v1/models/

Erabilgarri dauden modelo guztien zerrenda itzultzen du, haien gaitasunekin batera.

Erantzuna

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

Zerrendatu ahotsak

GET /v1/voices/

Ahots erabilgarri guztien zerrenda itzultzen du, aukeran, modeloaren edo hizkuntzaren arabera iragazita.

Kontsultaren parametroak

ParametroakMotaAzalpena
model string Iragazi modeloaren IDaren arabera (adib. kokoro)
language string Iragazi hizkuntza-kodearen arabera (adib. eu)
gender string Iragazi generoaren arabera: male, female, neutral

Erantzuna

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

Azpitituluak (SRT / VTT) berria

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

Sortu azpititulu sinkronizatuak edozein TTS lan osatutakoan. Whisper lerrokatzea audioan exekutatzen du eta SRT edo WebVTT itzultzen du. Emaitza diskoan cache-an gordetzen da, beraz, uuid bererako bigarren dei bat diskoan irakurtzea izango da.

Kontsultaren parametroak

ParametroakBeharrezkoaAzalpena
uuidBai/v1/tts/ edo /v1/voice-clone/-ek itzulitako lanaren UUIDa.
formatEzsrt (lehenetsia) edo vtt.
downloadEz1 Content-Disposition: attachment bidaltzeko, arakatzaileak gorde dezan bistaratu beharrean.
languageEzLerrokatze-ereduari buruzko iradokizuna (automatikoki detektatuko da ez bada adierazten).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Ahoskera hiztegia berria

GET POST DELETE /api/v1/pronunciations/

Esan TTS motorrari hitz jakin batzuk nola ahoskatu. Gordetako sarrerak automatikoki aplikatuko dira egiten duzun TTS eskaera bakoitzean. Kontu bakoitzeko 200 sarrerako muga.

Eskaeraren gorputza (POST)

ParametroakMotaAzalpena
wordstringGainidatzi beharreko hitza (adib. GIF, Anthropic). Hitzaren muga bat dator.
replacementstringAdibidez, jiff, ann THROP ick.
languagestringAukerazko ISO kodea. Hutsik = hizkuntza guztiei aplikatzen zaie.
case_sensitivebooleanfalse lehenetsia. Maiuskulak eta minuskulak berdin true denean.
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-..."

Eskaera bakoitzeko gainidatziak ere pasa ditzakezu gorde gabe — sartu pronunciations edozein /v1/tts/ deietan objektu edo array gisa (ikus TTS amaierako puntuaren parametroak).

Artikuluaren narratzailea berria

Edozein artikulu-orrialdetan