Dokumentasyon ng API
Isama TTS.ai sa iyong mga application sa aming REST API. OpenAI-compatible format para sa madaling migration.
Pangkalahatang-ideya
Ang TTS.ai API ay nagbibigay ng programatikong access sa lahat ng mga tampok ng platform: sintesis ng teksto-sa-pagsasalita, pagsasalita-sa-text transcription, cloning ng boses, audio pagpapabuti, at higit pa.
API Key
Kumuha ng iyong API key mula sa Mga Setting ng Account. Ito ay magagamit sa mga plano ng Pro at Enterprise.
Pangunahing URL
https://api.tts.ai/v1/
Pahintulot
Token ng tagadala sa pamamagitan ng Authorization header
Pag-authenticate
/v1/tts/ trabaho nang walang anumang auth, hanggang sa 5,000 character / araw bawat IP, gamit ang anumang ng aming mga libreng modelo (piper, vits, melotts, kokoro). Mag-sign up para sa isang libreng account upang makakuha ng 15,000 bonus character at access sa mga modelo premium.
Para sa mga modelo premium at mas mataas na rate ng mga limitasyon, authenticate sa isang bearer token sa Authorization header.
Authorization: Bearer sk-tts-your-api-key-here
Mga SDK
Opisyal na SDKs gawin itong madali upang isama TTS.ai sa iyong application. Parehong ay open source at magagamit sa 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")
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');
Pangunahing URL
Lahat ng endpoints ay may kaugnayan sa base na ito URL. Halimbawa, ang TTS endpoint ay:
Limitasyon ng Rate
API rate limitasyon ay nag-iiba sa pamamagitan ng plano:
| Plano | Mga kahilingan/minuto | Konkordansiya | Max haba ng teksto |
|---|---|---|---|
| Libre | 10 | 2 | 500 mga titik |
| Pasimula | 30 | 3 | 1,000,000 mga titik |
| Pro | 60 | 5 | 1,000,000 mga titik |
| Enterprise | 300 | 20 | 50,000 mga titik |
Rate limitasyon headers ay kasama sa bawat tugon: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Paggamit ng mga character
| Serbisyo | Gastos | Unit |
|---|---|---|
| TTS (Libreng mga modelo: Piper, VITS, MeloTTS) | 1,000 mga character | bawat 1,000 mga character |
| TTS (Pamantayang modelo: Kokoro, CosyVoice2, atbp.) | 2,000 mga character | bawat 1,000 mga character |
| TTS (Premium modelo: Tortoise, Chatterbox, atbp.) | 4,000 mga character | bawat 1,000 mga character |
| Pagsasalita sa Teksto | 2,000 mga character | bawat minuto ng audio |
| Voice pag-clone | 4,000 mga character | bawat 1,000 mga character |
| Voice Changer | 3,000 mga character | bawat minuto ng audio |
| Audio pagpapabuti | 2,000 mga character | bawat minuto ng audio |
| Pagtanggal ng boses / Paghati ng stem | 3,000-4,000 mga character | bawat minuto ng audio |
| Pagsasalin ng Pagsasalita | 5,000 mga character | bawat minuto ng audio |
| Chat ng boses | 3,000 mga character | bawat pag-ikot |
| Key & amp; BPM tagahanap | Libre | -- |
| Audio Converter | Libre | -- |
Teksto sa Pagsasalita
I-convert ang teksto sa boses audio. Bumalik audio file sa mga hiniling na format.
Hugis ng kahilingan
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| model | string | Hindi | Ang mga sumusunod na mga modelo ay suportado: kokoro para sa en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper para sa iba pang mga wika na suportado (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Oo | Per-hiling cap: 500 mga character (anonymous), 5,000 (libreng account), 1,000,000 (bayad na plano). Mahaba input ay auto-chunked server-side. |
| voice | string | Oo | Voice ID (gamitin ang /v1/voices/ upang ilista ang mga available na boses) |
| format | string | Hindi | Mga halimbawa: |
| speed | float | Hindi | Multiplikador ng bilis ng pagsasalita. Default: 1.0. Range: 0.5 hanggang 2.0 |
| language | string | Hindi | Ang code ng wika (halimbawa, en, es). Awtomatikong natukoy kung tinanggal. |
| instructions | string | Hindi | Ang mga ito ay: 1. mga karaniwang mga katangian (e.g., mga katangian ng mga katangian). |
| pronunciations | object | array | Hindi | Ang mga ito ay: Ang mga salitang may katumbas na salita. |
| stream | boolean | Hindi | Ang default na halaga ay false. |
Halimbawa ng kahilingan
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
Ang "Sweet" ay isang awiting Pilipino.
Ang mga salitang "code" at "code" ay maaaring tumukoy sa: Code (kompyuter) Code (pag-ibig) Code (pag-ibig) Code (pag-ibig) Code (pag-ibig) 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
Interpretasyon Input Nagsalita bilang cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-31Disyembre tatlumpung-isa, labing-siyam siyamnapu-siyam 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 {
"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."
}Tugon
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.Buong halimbawa
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.
Pagsasalita sa Teksto
Isulat ang audio sa teksto. Suporta 99 wika na may auto-detection.
Hugis ng kahilingan (multipart/form-data)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| file | file | Oo | Ang mga format na suportado ay MP3, WAV, FLAC, OGG, M4A, MP4, WebM. |
| model | string | Hindi | Kabilang sa mga halimbawa nito ang whisper, faster-whisper, at sensevoice. |
| language | string | Hindi | Para sa ibang gamit, tingnan ang Autocode (paglilinaw). |
| timestamps | boolean | Hindi | Kasama ang mga timestamps sa antas ng salita. Default: false |
| diarize | boolean | Hindi | Payagan ang speaker diarization. Default: false |
Tugon
{
"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"
}
]
}
Voice pag-clone
Bumuo ng pagsasalita sa isang cloned boses. I-upload ang isang sanggunian audio at teksto.
Hugis ng kahilingan (multipart/form-data)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| reference_audio | file | Oo | Reference boses audio (10-30 segundo inirerekomenda). Max 20MB. |
| text | string | Oo | Text upang makipag-usap sa mga cloned boses. |
| model | string | Hindi | Para sa ibang gamit, tingnan ang (paglilinaw), (paglilinaw), at (paglilinaw). |
| format | string | Hindi | Ang mga ito ay: mp3 (default), wav, flac |
| language | string | Hindi | Target na wika code. Dapat na suportado ng piniling modelo. |
Tugon
Bumalik ang audio file bilang binary data, parehong bilang ang TTS endpoint.
Voice Changer
I-convert ang audio upang tunog tulad ng isang iba't ibang boses. I-upload ang source audio at pumili ng isang target na boses.
Hugis ng kahilingan (multipart/form-data)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| file | file | Oo | Source audio file (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Oo | Target na ID ng boses na i-convert sa (gamitin ang /v1/voices/ upang ilista ang mga magagamit na boses) |
| model | string | Hindi | Para sa ibang gamit, tingnan ang (paglilinaw). |
| format | string | Hindi | wav (default), mp3, flac |
Halimbawa ng kahilingan
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
Tugon
Bumalik ang convert na audio file bilang binary data.
Pagsasalin ng Pagsasalita
Isalin ang sinasalitang audio mula sa isang wika sa isa pa. Kombinasyon ng pagsasalita-sa-text, pagsasalin, at teksto-sa-pagsasalita sa isang solong tawag.
Hugis ng kahilingan (multipart/form-data)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| file | file | Oo | Source audio file sa orihinal na wika. Max 100MB. |
| target_language | string | Oo | Ang kodigo ng wikang target (halimbawa, es, fr, de, ja) |
| voice | string | Hindi | Voice para sa isinalin output. Auto-napili kung omitted. |
| preserve_voice | boolean | Hindi | Subukan na panatilihin ang mga katangian ng boses ng orihinal na tagapagsalita. Default: |
Tugon
{
"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
}
Pagsasalita sa Pagsasalita
I-transform ang estilo ng pagsasalita, damdamin, o paghahatid habang pinapanatili ang nilalaman. Kapaki-pakinabang para sa pag-aayos ng tono, pacing, at ekspresyon.
Hugis ng kahilingan (multipart/form-data)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| file | file | Oo | Source pagsasalita audio file. Max 50MB. |
| voice | string | Oo | Target ID ng boses para sa output ng pananalita |
| model | string | Hindi | Ang mga halimbawa nito ay ang openvoice, chatterbox, at openvoice. |
| emotion | string | Hindi | Kabilang sa mga halimbawa ang: |
| speed | float | Hindi | Pag-aayos ng bilis. Pangkalahatang-ideya: |
Tugon
Bumalik ang transformed audio file bilang binary data.
Audio mga tool
Audio processing endpoints para sa pagpapabuti, vocal pagtanggal, stem splitting, at higit pa.
Pagbutihin ang kalidad ng audio: denoise, mapabuti ang kalinawan, super resolution.
| file file | Audio file upang mapahusay |
| denoise boolean | Payagan ang denoising (default: totoo) |
| enhance_clarity boolean | Pagbutihin ang kalinawan ng pagsasalita (default: totoo) |
| super_resolution boolean | Upscale kalidad ng audio (default: false) |
| strength integer | 1-3 (liwanag, katamtaman, malakas). Default: 2 |
Ang mga ito ay maaaring maging mga selula (cells) o mga protina (proteins).
| file file | Audio file upang paghiwalayin |
| model string | demucs (default) o spleeter |
| stems integer | Bilang ng mga stems: 2, 4, 5, o6(default: 2) |
| format string | Para sa ibang gamit, tingnan ang (paglilinaw) (paglilinaw). |
Alisin ang echo at reverb mula sa mga recording ng audio.
| file file | Audio file upang iproseso |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Pag-aralan ang audio upang matukoy ang key, BPM, at oras ng pag-sign.
| file file | Audio file upang pag-aralan |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
I-convert ang audio sa pagitan ng mga format.
| file file | Audio file upang i-convert |
| format string | Kabilang sa mga ito ang: mp3, wav, flac, ogg, m4a, aac. |
| bitrate integer | Output bitrate sa kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Sample rate: 22050, 44100, 48000 |
| channels string | mono o stereo |
Chat ng boses
Ipadala ang audio o teksto at tumanggap ng isang AI tugon sa pamamagitan ng synthesized pagsasalita.
Hugis ng kahilingan (multipart/form-data o JSON)
| Parameter | Uri | Kinakailangan | Paglalarawan |
|---|---|---|---|
| audio | file | Hindi* | Audio input (kailangan ang alinman sa audio o text) |
| text | string | Hindi* | Input ng teksto (kailangan ang audio o text) |
| voice | string | Hindi | Tinig para sa tugon ng AI. Default: af_bella |
| tts_model | string | Hindi | TTS model para sa tugon. Default: |
| system_prompt | string | Hindi | Custom na sistema ng prompt para sa AI |
| conversation_id | string | Hindi | Magpatuloy sa isang umiiral na pag-uusap |
Tugon
{
"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
}
Bagong TTS
Mag-submit ng maraming mga teksto para sa parallel TTS henerasyon. Mag-opt upang makatanggap ng isang webhook callback kapag ang lahat ng mga trabaho ay kumpleto.
Parameter
| Parameter | Uri | Paglalarawan |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string |
Tugon
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Poll progreso sa GET /v1/tts/batch/result/?batch_id=abc123
Pag-embed ng boses
Pre-compute ng isang boses na naka-embed mula sa reference audio. Gamitin ang ibabalik embed_id sa susunod na boses cloning mga kahilingan para sa malapit-instant henerasyon.
Parameter
| Parameter | Uri | Paglalarawan |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Tugon
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Pag-check ng Kalusugan
Tingnan ang GPU server status, na-load na mga modelo, at laki ng queue. Walang kinakailangang pag-verify ng pagkakakilanlan. Cached para sa 30 segundo.
Tugon
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Listahan ng mga modelo
Bumalik ng isang listahan ng lahat ng mga magagamit na mga modelo sa kanilang mga kakayahan.
Tugon
{
"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
}
]
}
Listahan ng mga Tinig
Bumalik ng isang listahan ng lahat ng mga magagamit na boses, opsyonal na na-filter sa pamamagitan ng modelo o wika.
Parameter ng query
| Parameter | Uri | Paglalarawan |
|---|---|---|
| model | string | I-filter ayon sa ID ng modelo (halimbawa, kokoro) |
| language | string | I-filter ayon sa code ng wika (halimbawa, en) |
| gender | string | Para sa ibang gamit, tingnan ang (paglilinaw). |
Tugon
{
"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
}
Subtitles (SRT / VTT) bagong
Bumuo ng synchronized subtitles para sa anumang nakumpleto TTS trabaho. Tumatakbo Whisper alinman sa audio at ibabalik SRT o WebVTT. Resulta ay naka-cache sa disk kaya ang isang ikalawang tawag para sa parehong uuid ay isang disk basahin.
Parameter ng query
| Parameter | Kinakailangan | Paglalarawan |
|---|---|---|
| uuid | Oo | Ang mga ito ay maaaring matukoy sa pamamagitan ng mga simbolong /v/, o /v/. |
| format | Hindi | Ang SRT! > (default) o Ang VTT!"Ito. |
| download | Hindi | Ang 1 ay nagpapadala ng Content-Disposition: attachment upang ang browser ay mag-imbak sa halip na ipakita. |
| language | Hindi | Hint sa alituntunin modelo (auto-natuklasan kung omitted). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Panlapi Diksyunaryo bagong
Sabihin sa TTS engine kung paano ipahayag ang mga tiyak na salita. I-save ang mga entry auto-apply sa bawat TTS kahilingan na ginawa mo. 200-entry bawat account na limitasyon.
Hugis ng kahilingan (POST)
| Parameter | Uri | Paglalarawan |
|---|---|---|
| word | string | Ang salitang dapat i-override (halimbawa, GIF, Anthropic). |
| replacement | string | Ang mga ito ay maaaring matukoy sa pamamagitan ng mga simbolong , |
| language | string | Opsyonal na ISO code. Walang laman = ay nalalapat sa lahat ng mga wika. |
| case_sensitive | boolean | Default Hindi totootl>. Match kaso eksakto kapag totoo"Ito. |
# 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-..."
Ang mga ito ay maaaring maging mga karaniwang mga simbolong pang-aritmetika (tulad ng "1" o "0") o mga simbolong pang-aritmetika na may mga simbolong pang-aritmetika (tulad ng "1/2" o "1/3").
Artikulo Narrador bagong
Drop ng isang solong tag sa anumang pahina ng artikulo at mga bisita makakuha ng isang taning na reader bar na narrates ang pahina sa click. Auto-detect ang katawan ng artikulo, sumusuporta sa mga pasadyang boses / modelo / posisyon / accent kulay.
<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>
Mga Pagpipilian
| Parameter | Paglalarawan |
|---|---|
data-pk | Ang mga domain restrictions ay ipinatutupad sa pamamagitan ng allowed_domains field ng key. |
data-voice | Ang "A" ay ang salitang Ingles para sa "Alpha" o "beta". |
data-model | Ang mga ito ay tinatawag na "code" o "codes". |
data-extract | auto (default) — Sinusubukan article/main/.post-content/.entry-content selectors, bumabalik sa pinaka-malawak na talata cluster. O pumasa sa anumang CSS selector upang umangkop sa isang partikular na elemento. |
data-position | Ang mga ito ay ang bottom at top. |
data-color | Ang mga ito ay: #e60. |
data-min-chars / data-max-chars | I-skip ang bar kung ang artikulo ay mas maikli kaysa sa min-chars (default 200). Cap input sa max-chars (default 50,000). |
Ang mga sumusunod ay mga halimbawa: "A.H.W.H."
Makinig sa pindutan Widget
Ang mga ito ay maaaring i-render sa tabi ng tag at naglalaro ng isang pindutan-triggered maikling snippet. Iba't ibang hugis mula sa Artikulo Narrator sa itaas (na auto-injects ng isang pahina-pagkakalat bar at narrates ang buong artikulo).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
I-save ang mga boses (Persistent Clones)
I-upload ang isang reference audio ng isang beses, makakuha ng bumalik ng isang persistent voice_id, pagkatapos ay reference na id sa TTS mga kahilingan sa halip ng muling-upload ng audio bawat tawag. Ideal para sa mataas na dami ng integrations.
Mag-upload ng isang boses
POST
https://tts.ai/api/v1/user-voices/
Auth kinakailangan
Patlang: file (kailangan, 5-30s audio), pangalan (kailangan), wika (opsyonal, default en), modelo (opsyonal — auto-picks cosyvoice2 para sa zh / ja / ko kung hindi man openvoice), consent_confirmed (kailangan, anumang totoong halaga).
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"
}
Gamitin ang naka-save na boses sa TTS
POST sa /api/v1/tts/ (TAGA: web VPS host, hindi api.tts.ai) na may user_voice_id. I-load namin ang iyong naka-imbak na audio at ruta sa cloning pipeline.
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.
Ilista / tanggalin
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
I-archive / muling paganahin (libre)
Naka-archive na boses manatili sa iyong account ngunit hindi maaaring gamitin sa TTS. Kapaki-pakinabang para sa mga hindi aktibong end users kaya ang iyong listahan ay natiling malinis.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Mga Halimbawa ng Code
Teksto sa Pagsasalita
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')}")
Pagsasalita sa Teksto
# 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"])
Voice pag-clone
# 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)
Teksto sa Pagsasalita
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();
Pagsasalita sa Teksto
// 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);
Teksto sa Pagsasalita
# 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
Pagsasalita sa Teksto
# 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"
Voice pag-clone
# 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
Audio pagpapabuti
# 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
Error Codes
Lahat ng mga error bumalik ng isang JSON tugon na may isang error Ang Field.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP Status | Error Code | Paglalarawan |
|---|---|---|
| 400 | bad_request |
Hindi wastong mga parameter na kahilingan. Tingnan ang mensahe ng error para sa mga detalye. |
| 401 | unauthorized |
Nawala o hindi wastong API key. |
| 402 | insufficient_credits |
Hindi sapat na mga character. Bumili ng higit pa sa / pricing /. |
| 403 | forbidden |
Hindi ka may pahintulot na ma-access ang mapagkukunan na ito (halimbawa polling trabaho ng ibang user). API access mismo ay kasama sa bawat plano. |
| 404 | not_found |
Ang modelo o boses ay hindi natagpuan. |
| 413 | file_too_large |
Uploaded file lumampas sa laki ng limitasyon. |
| 429 | rate_limited |
Masyadong maraming mga kahilingan. Tingnan ang rate limitasyon headers. |
| 500 | internal_error |
Server error. Subukan muli mamaya. |
| 503 | model_loading |
Model ay naglalagay. Subukan muli sa ilang segundo. |
Websayt
Para sa mahabang tumatakbo na mga gawain (stem splitting, batch TTS), maaari kang magbigay ng isang webhook_url parameter. Kapag nakumpleto ang gawain, kami ay POST ang resulta sa iyong URL.
{
"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"
}
Handa na upang bumuo?
Kumuha ng iyong API key at simulan ang pagsasama TTS.ai sa iyong mga application.