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

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 100.000 karaktere
Pro 60 5 100.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 Bai 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.
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

Erantzuna

Audio-fitxategia datu binario gisa itzultzen du Content-Type goiburu egokiarekin (audio/mpeg, audio/wav, etab.).

Erantzunen goiburuak
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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_urlstringOptional URL to POST results when batch completes.

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
}

Kodearen adibideak

Testutik hizketara

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

Hitzetik testura

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

Ahots klonaketa

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)

Testutik hizketara

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

Hitzetik testura

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

Testutik hizketara

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

Hitzetik testura

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"

Ahots klonaketa

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

Audioaren hobekuntza

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

Errore-kodeak

Errore guztiek JSON erantzun bat itzultzen dute error eremua.

Errore-erantzunaren formatua
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP egoeraErrore-kodeaAzalpena
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 API atzipena ez dago erabilgarri zure planean.
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.

Webhook-en karga
{
  "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-en emaitzak deskargatzeko erabilgarri egongo dira amaitutakoan 24 orduz. Ziurtatu berehala deskargatzen dituzula.

Prest al zaude eraikitzeko?

Lortu zure API gakoa eta hasi TTS.ai zure aplikazioetan integratzen.