API dokumentazioa
Integratu TTS.ai zure aplikazioetan gure REST APIarekin. OpenAI-rekin bateragarria den formatua migrazio erraza egiteko.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Oinarrizko URLa
Amaierako puntu guztiak oinarrizko URL honekin erlatiboak dira. Adibidez, TTS amaierako puntua hau da:
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
Bihurtu testua hizketa-audiora. Audio-fitxategia itzultzen du eskatutako formatuan.
Eskaeraren gorputza
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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 -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 Dataren formatua lehenetsia The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
interpretatu Sarrera Ahoskatu 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 mdy da ingelesez eta dmy beste lekuetan; gainidatzi format=\{
"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
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Adibide osoa
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)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
Hitzetik testura
Transkribatu audioa testura. 99 hizkuntza onartzen ditu autodetekzioarekin.
Eskaeraren gorputza (multipart/form-data)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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
{
"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
Sortu hizketa ahots klonatu batean. Kargatu erreferentziako audioa eta testua.
Eskaeraren gorputza (multipart/form-data)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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
Bihurtu audioa beste ahots baten antzera sortzeko. Kargatu iturburuko audioa eta hautatu helburuko ahotsa.
Eskaeraren gorputza (multipart/form-data)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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 -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
Itzul itzazu ahozko audioak hizkuntza batetik bestera. Hitzetik testura, itzulpenetik testura eta testutik hitzera konbinatzen ditu dei bakar batean.
Eskaeraren gorputza (multipart/form-data)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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
{
"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
Eraldatu hizketa-estiloa, emozioa edo ematea edukiari eutsiz. Erabilgarria tonua, abiadura eta adierazkortasuna doitzeko.
Eskaeraren gorputza (multipart/form-data)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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: |
| 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.
Hobetu audioaren kalitatea: zarata kentzea, argitasuna hobetzea, super bereizmena.
| file file | Audio-fitxategia hobetzeko |
| denoise boolean | Gaitu zarata kentzea (lehenetsia: egia) |
| enhance_clarity boolean | Hobetu hizketaren argitasuna (lehenetsia: egia) |
| super_resolution boolean | Eskalatu audioaren kalitatea (lehenetsia: faltsua) |
| strength integer | 1- 3 (argia, ertaina, gogorra). Lehenetsia: 2 |
Bokalak instrumentaletatik bereiztea (bokal-ezabapena) edo zutabetan banatzea.
| file file | Audio-fitxategia bereizteko |
| model string | demucs (lehenetsia) edo spleeter |
| stems integer | Zuhaitz kopurua: 2, 4, 5 edo 6 (lehenetsia: 2) |
| format string | Irteerako formatua: wav, mp3, flac |
Kendu oihartzuna eta erreberberazioa audio-grabazioetatik.
| file file | Audio-fitxategia prozesatzeko |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analisatu audioa tekla, BPM eta tempo-sinadura detektatzeko.
| file file | Audio-fitxategia analizatzeko |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Bihurtu audioa formatuen artean.
| file file | Bihurtu beharreko audio-fitxategia |
| format string | Helburuko formatua: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Irteerako bit- tasa (kbps): 64, 128, 192, 256, 320 |
| sample_rate integer | Lagin-emaria: 22050, 44100, 48000 |
| channels string | mono edo stereo |
Ahots-berriketa
Bidali audioa edo testua eta jaso AI erantzuna hizketa sintetizatuarekin.
Eskaeraren gorputza (multipart/form-data edo JSON)
| Parametroak | Mota | Beharrezkoa | Azalpena |
|---|---|---|---|
| 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
{
"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
Bidali testu anitz TTS sorkuntza paralelorako. Aukerazkoa da webhook atzera-dei bat jasotzea lan guztiak amaitzen direnean.
Parametroak
| Parametroak | Mota | Azalpena |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Batch-a amaitzen denean POST emaitza emateko URL aukerakoa. |
Erantzuna
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Galdeketaren aurrerapena GET /v1/tts/batch/result/?batch_id=abc123 erabiliz
Ahotsa txertatzea
Aurre-kalkulatu ahots-kapsulazio bat erreferentziako audiotik. Erabili itzulitako embed_id hurrengo ahots-klonazio-eskaeretan ia berehalako sorkuntzarako.
Parametroak
| Parametroak | Mota | Azalpena |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Erantzuna
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Egoeraren egiaztapena
Egiaztatu GPU zerbitzariaren egoera, kargatutako modeloak eta ilararen tamaina. Ez da autentifikaziorik behar. 30 segundoz cachean.
Erantzuna
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Zerrendatu modeloak
Erabilgarri dauden modelo guztien zerrenda itzultzen du, haien gaitasunekin batera.
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
Ahots erabilgarri guztien zerrenda itzultzen du, aukeran, modeloaren edo hizkuntzaren arabera iragazita.
Kontsultaren parametroak
| Parametroak | Mota | Azalpena |
|---|---|---|
| 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
{
"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
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
| Parametroak | Beharrezkoa | Azalpena |
|---|---|---|
| uuid | Bai | /v1/tts/ edo /v1/voice-clone/-ek itzulitako lanaren UUIDa. |
| format | Ez | srt (lehenetsia) edo vtt. |
| download | Ez | 1 Content-Disposition: attachment bidaltzeko, arakatzaileak gorde dezan bistaratu beharrean. |
| language | Ez | Lerrokatze-ereduari buruzko iradokizuna (automatikoki detektatuko da ez bada adierazten). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Ahoskera hiztegia berria
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)
| Parametroak | Mota | Azalpena |
|---|---|---|
| word | string | Gainidatzi beharreko hitza (adib. GIF, Anthropic). Hitzaren muga bat dator. |
| replacement | string | Adibidez, jiff, ann THROP ick. |
| language | string | Aukerazko ISO kodea. Hutsik = hizkuntza guztiei aplikatzen zaie. |
| case_sensitive | boolean | false lehenetsia. Maiuskulak eta minuskulak berdin true denean. |
# 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 etiketa bat jartzen baduzu, bisitariek klik egitean orrialdea kontatzen duen irakurle-barra finko bat jasoko dute. Artikuluaren gorputza automatikoki detektatzen du, ahots/eredu/posizio/azentua pertsonalizatzeko koloreak onartzen ditu.
<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>
Aukerak
| Parametroak | Azalpena |
|---|---|
data-pk | Gako argitaratugarria (pk-tts-…). Domeinu-murrizketak gakoaren allowed_domains eremuaren bidez inposatzen dira. |
data-voice | Ahots-IDa. Lehenetsia af_bella. |
data-model | TTS modeloaren IDa. Lehenetsia kokoro. |
data-extract | auto (lehenetsia) — article/main/.post-content/.entry-content hautatzaileak saiatzen dira, paragrafo-multzorik dentsoenera itzultzen dira. Edo edozein CSS hautatzaile pasa dezakete elementu jakin bati heltzeko. |
data-position | bottom (lehenetsia) edo top. |
data-color | Nabarduraren kolorea (edozer CSS kolore). Lehenetsia #e60000. |
data-min-chars / data-max-chars | Saltatu barra artikulua gutxieneko karaktere kopurua baino laburragoa bada (lehenetsia 200). Gehieneko karaktere kopurua (lehenetsia 50.000) ezarri sarrerarako. |
Entzun botoiaren trepeta
Lerroan txertatutako botoi-estiloa. Bere etiketaren ondoan errendatzen da eta botoi batek aktibatutako zati labur bat erreproduzitzen du. Goiko Artikuluaren narratzailearen forma desberdina da (orrialde osoko barra automatikoki txertatzen du eta artikulu osoa kontatzen du).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Gordetako ahotsak (klono iraunkorrak)
Igo erreferentziako audioa behin, lortu voice_id iraunkorra, eta erreferentziatu id hori TTS eskaeretan, dei bakoitzean audioa berriro igo beharrean. Ideala bolumen handiko integrazioetarako.
Kargatu ahotsa
POST
https://tts.ai/api/v1/user-voices/
Autentifikazioa behar da
Eremuak: fitxategia (beharrezkoa, 5-30s audioa), izena (beharrezkoa), hizkuntza (aukerazkoa, lehenetsia en), modeloa (aukerazkoa — cosyvoice2 automatikoki hautatzen du zh/ja/ko-rentzat, bestela openvoice), consent_confirmed (beharrezkoa, edozein balio egiazkoa).
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"
}
Erabili gordetako ahotsa TTS-n
POST /api/v1/tts/(OHOA: web VPS ostalaria, ez api.tts.ai) erabiltzaile_ahots_id-arekin. Zure gordetako audioa eta bidea klonazio-kanalizaziora kargatzen ditugu.
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.
Zerrendatu / ezabatu
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
Artxibatu / berraktibatu (libre)
Artxibaturiko ahotsak zure kontuan geratzen dira, baina ezin dira TTSn erabili. Erabilgarria lo dauden azken erabiltzaileentzat, zerrenda garbi mantentzeko.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Kodearen adibideak
Testutik hizketara
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')}")
Hitzetik testura
# 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"])
Ahots klonaketa
# 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)
Testutik hizketara
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();
Hitzetik testura
// 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);
Testutik hizketara
# 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
Hitzetik testura
# 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"
Ahots klonaketa
# 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
Audioaren hobekuntza
# 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
Errore-kodeak
Errore guztiek JSON erantzun bat itzultzen dute error eremua.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP egoera | Errore-kodea | Azalpena |
|---|---|---|
| 400 | bad_request |
Eskaera-parametro baliogabeak. Egiaztatu errore-mezua xehetasunak ikusteko. |
| 401 | unauthorized |
API gakoa falta da edo baliogabea da. |
| 402 | insufficient_credits |
Ez dago nahikoa kreditu. Erosi gehiago hemen: /pricing/. |
| 403 | forbidden |
Ez duzu baliabide hau atzitzeko baimenik (adibidez, beste erabiltzaile baten lana galdekatzea). API atzipena plan guztietan barne dago. |
| 404 | not_found |
Ez da modeloa edo ahotsa aurkitu. |
| 413 | file_too_large |
Igotako fitxategia tamaina-muga gainditzen du. |
| 429 | rate_limited |
Eskaera gehiegi. Egiaztatu abiadura-mugaren goiburuak. |
| 500 | internal_error |
Zerbitzariaren errorea. Saiatu berriro geroago. |
| 503 | model_loading |
Modeloa kargatzen. Saiatu berriro segundo batzuen buruan. |
Webhooks
Exekuzio luzeko zereginetan (zuhaitza zatitzea, batch TTS), webhook_url parametroa eman dezakezu. Zeregina amaitzen denean, emaitza zure URLan POST egingo dugu.
{
"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"
}
Prest al zaude eraikitzeko?
Lortu zure API gakoa eta hasi TTS.ai zure aplikazioetan integratzen.