Dọkumenti
N'ime TTS.ai n'ime usoro ihe omume gị na anyị REST API. OpenAI-compatible format maka mfe ịkwaga.
Nhazi
The TTS.ai API na-enye ohere ịbanye n'ime usoro ihe omume niile: ntinye ederede na-ekwu okwu, ntinye okwu na-ekwu okwu, ntinye okwu, nkwalite ụda, na ndị ọzọ. API na-eji ụkpụrụ REST conventions na JSON request / response bodies.
Kii API
Nweta kii API gị site na Nhazi akaụntụ. Available on Pro and Enterprise plans.
Base URL
https://api.tts.ai/v1/
Nkwenye
Token bearer site n'aka Authorization ihenlereanya
Nkwenye
/v1/tts/ ọrụ na-enweghị ọbụna auth, ruo 5,000 characters/ụbọchị kwa IP, na-eji ọ bụla nke anyị free models (piper, vits, melotts, kokoro). Nweta akaụntụ n'efu iji nweta 15,000 akara bonus na ohere iji nweta ụdị premium.
Maka móòdù ndị dị elu nakwa n'ebe ọ̀sọ̀ nke dị elu, banye na token onye na-eburu ya na Authorization ihenlereanya.
Authorization: Bearer sk-tts-your-api-key-here
SDKs
Official SDKs na-eme ka ọ dị mfe iji jikọta TTS.ai na usoro ihe omume gị. Ha abụọ bụ isi na-emeghe na 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');
Base URL
Ngwụcha-pọ́ị̀tị̀ niile bụ n'ụdị nke URL a. N'ụdị, ngwụcha-pọ́ị̀tị̀ TTS bụ:
Ogo nke oge
API rate limits na-agbanwe site na plan:
| Nhazi | Ajụjụ/min | N'otu oge | Ogo ngwe ngwe nke kacha nta |
|---|---|---|---|
| Free | 10 | 2 | 500 akara |
| Nhazi | 30 | 3 | 1,000,000 characters |
| Nhazi | 60 | 5 | 1,000,000 characters |
| Ụlọọrụ | 300 | 20 | 50,000 akara |
Ndesịta nke ihenhọrọ ndị ahụ na-agbakwunyere na nzaghachi ọbụla: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Ụgwọta
| Nrụọrụ | Nri | Ọnụọgụgụ |
|---|---|---|
| TTS (Free models: Piper, VITS, MeloTTS) | 1,000 characters | 1,000 characters per |
| TTS (Standard models: Kokoro, CosyVoice 2, wdg.) | 2,000 akara | 1,000 characters per |
| TTS (Premium models: Tortoise, Chatterbox, wdg.) | 4,000 akara | 1,000 characters per |
| Asụsụ ka ngwe | 2,000 akara | per minute of audio |
| Klọnsị ụda | 4,000 akara | 1,000 characters per |
| Onyembanye ụda | 3,000 akara | per minute of audio |
| Nhazi ụda | 2,000 akara | per minute of audio |
| Wepụ ụda / Wepụ ụda | 3,000-4,000 akara | per minute of audio |
| Ntụgharị asụsụ | 5,000 akara | per minute of audio |
| Ngosi okwu | 3,000 akara | N'otu n'otu |
| Key Finder | Free | -- |
| Ntụgharị ụda | Free | -- |
Tọghata ngwe ka ọsụsọ
Banye ngwe na ụda okwu. Na-eziga faịlụ ụda n'ụdị achọrọ.
Nhazi ahụ
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| model | string | Ọ bụghị | Model ID (eg, kokoro, chatterbox, piper). Ọ bụrụ na a hapụghị ya, anyị ga-ahọrọ nkeonwe móòdù nke na-akwado asụsụ achọrọ — kokoro maka en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper maka asụsụ ndị ọzọ e nyere nkwado (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Ee | Nwetị a ga-ebugharị ka ọsụsọ. N'ime-nhọrọ: 500 akara (anonymous), 5,000 (free account), 1,000,000 (paid plan). Inputs ogologo bụ nkeonwe-chunked server-side. |
| voice | string | Ee | Vòíọ̀tụ̀ ID (hazie /v1/vòìọ̀tụ̀tụ̀/ ka ịnye ndesịta vòìọ̀tụ̀ ndị dị̀) |
| format | string | Ọ bụghị | Ọdịdị pụta: mp3 (dìfọ́ọ̀ltụ̀), wav, flac, ogg |
| speed | float | Ọ bụghị | Mgbatị ọsọ ikwu. Dìfọ́ọ̀ltụ̀: 1.0. Oge: 0.5 ruo 2.0 |
| language | string | Ọ bụghị | Kóòdù asụsụ (eg, en, es). Achọpụtara nkeonwe ma ọ bụrụ na a hapụ ya. |
| instructions | string | Ọ bụghị | Nhazi / nlekọta cues (≤500 akara). eg \ |
| pronunciations | object | array | Ọ bụghị | Nchọgharị n'ime-nhọrọ. Ma ọ bụ {\ |
| stream | boolean | Ọ bụghị | Mepee nzaghachi ntụgharị. Dìfọ́ọ̀ltụ̀: n'ezighị ezi |
Nhazi
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 táàbụ̀
Wepụ nọmba, ụbọchị, ego, nọmba ekwentị, na akọrọnụmaịlụ na Dìfọ́ọ̀ltụ̀ nke ụhara ụbọchị na 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
kọwaa Inu Ekwenyere m na cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-31December thirty-first, nineteen ninety-nine 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 maka English na dmy n'ebe ọbụla; gbanwee ya na 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."
}Ndesịta ozi ahụ
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.Full example
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.
Asụsụ ka ngwe
Dezie ụda ka ọ bụrụ ngwe. Na-akwado asụsụ 99 na nchọpụta onwe ya.
Nhazi ahụ (multipart/form-data)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| file | file | Ee | Faịlụ ụda (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Ọ bụghị | STT móòdù: whisper (dìfọ́ọ̀ltụ̀), faster-whisper, sensevoice |
| language | string | Ọ bụghị | Kọ́ọ̀dị̀ asụsụ. auto maka nchọpụta onwe ya (dìfọ́ọ̀ltụ̀). |
| timestamps | boolean | Ọ bụghị | Tinye oge n'okpuru okwu. Dìfọ́ọ̀ltụ̀: false |
| diarize | boolean | Ọ bụghị | Mepee diarization nke onyeọsụsụ. Dìfọ́ọ̀ltụ̀: n'ezighị ezi |
Ndesịta ozi ahụ
{
"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"
}
]
}
Klọnsị ụda
Kewapụta okwu n'ime ụda ahụ. Bubata ụda na ngwe nlebara anya.
Nhazi ahụ (multipart/form-data)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| reference_audio | file | Ee | Nkọwa ụda ụda (10-30 sekọnd a na-atụ aro). Max 20MB. |
| text | string | Ee | Tẹ́ètị̀ ka a ga-ekwusa na ụda ahụ e mepụtara. |
| model | string | Ọ bụghị | Klone móòdù: chatterbox (dìfọ́ọ̀ltụ̀), cosyvoice2, gpt-sovits |
| format | string | Ọ bụghị | Ọdịdị pụta: mp3 (dìfọ́ọ̀ltụ̀), wav, flac |
| language | string | Ọ bụghị | Kóòdù asụsụ́ n'ihe nlereanya. E kwesịrị inyere ya aka site na móòdù a họọrọ. |
Ndesịta ozi ahụ
Na-eziga faịlụ ụda dịka data binarị, dị ka TTS ngwụcha.
Onyembanye ụda
Banye ụda ka ọ bụrụ ụda dị iche iche. Bubata ụda isi na họrọ ụda n'isi.
Nhazi ahụ (multipart/form-data)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| file | file | Ee | Faịlụ ụda isi (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Ee | Target voice ID ka a gbanwee ka (iji /v1/voices/ mee ndesịta ụda ndị dị na ya) |
| model | string | Ọ bụghị | Móòdù ntụgharị ụda: openvoice (dìfọ́ọ̀ltụ̀), knn-vc |
| format | string | Ọ bụghị | Ụdị pụtapụta: wav (dìfọ́ọ̀ltụ̀), mp3, flac |
Nhazi
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
Ndesịta ozi ahụ
Na-eziga faịlụ ụda atụgharịrị dịka data bainirịi.
Ntụgharị asụsụ
Gbanwee ụda a na-ekwu site n'asụsụ otu gaa n'otu. Na-ejikọta okwu-na-asụgharị, ntụgharị, na ngwe-na-asụgharị n'ime oku otu.
Nhazi ahụ (multipart/form-data)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| file | file | Ee | Faịlụ ụda isi na asụsụ okpukpe. Max 100MB. |
| target_language | string | Ee | Kóòdù asụsụ́ n'ime (eg, es, fr, de, ja) |
| voice | string | Ọ bụghị | Ụda maka ọbjektị atụgharịrị. Ahọrọla ya n'onwe ya ma ọ bụrụ na a hapụ ya. |
| preserve_voice | boolean | Ọ bụghị | N'ihi na ịchọrọ ichekwa ụda nke onye na-ekwu okwu. Dìfọ́ọ̀ltụ̀: false |
Ndesịta ozi ahụ
{
"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
}
Agụgụala
Kwụsị gbanwee ụghaasị okwu, ọbụna ọbụna n'ịchekwa ihenhọrọ ahụ. Ọ bara uru maka ịhazi ụghaasị, n'ịhazi oge, nakwa n'ịkọwapụta ihe.
Nhazi ahụ (multipart/form-data)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| file | file | Ee | Faịlụ ụda ikwu isi. Max 50MB. |
| voice | string | Ee | Target ID ụda maka ụda ọbụla |
| model | string | Ọ bụghị | Model: openvoice (dìfọ́ọ̀ltụ̀), chatterbox |
| emotion | string | Ọ bụghị | Ndụmọdụ: neutral, happy, sad, angry, excited
|
| speed | float | Ọ bụghị | Nhazi ọsọ. Dìfọ́ọ̀ltụ̀: 1.0. Oge: 0.5 ruo 2.0 |
Ndesịta ozi ahụ
Na-eziga faịlụ ụda atụgharịrị dịka data bainirịi.
Ngwaọrụ ụda
Audio processing endpoints maka nkwalite, ịkpụga ụda, ịgwakọta stem, na ndị ọzọ.
Melite ogo ụda: denoise, melite nghọta, super resolution.
| file file | Faịlụ ụda a ga-emelite |
| denoise boolean | Mepee denoising (dìfọ́ọ̀ltụ̀: eziokwu) |
| enhance_clarity boolean | Bawanye nghọta okwu (dìfọ́ọ̀ltụ̀: eziokwu) |
| super_resolution boolean | Nhazi ụda dị elu (dìfọ́ọ̀ltụ̀: ụgha) |
| strength integer | 1-3 (n'elu, n'etiti, ike). Dìfọ́ọ̀ltụ̀: 2 |
Wepụ vokali site n'instrumentals (wepu vokali) mọọbụ wepụ ha n'ime stims.
| file file | Faịlụ ụda iji wepụ |
| model string | demucs (Dìfọ́ọ̀ltụ̀) ma ọ bụ spleeter |
| stems integer | Ụdị stiim: 2, 4, 5, mọọbụ 6 (dìfọ́ọ̀ltụ̀: 2) |
| format string | Ọdịdị ọbjektị: wav, mp3, flac |
Wepụ echo na reverb site na ụda rekọ́ọ̀sụ̀.
| file file | Faịlụ ụda a ga-ewepụ |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Anakọta ụda iji chọpụta kii, BPM, na oge ngosipụta.
| file file | Faịlụ ụda a ga-enyocha |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Kpọchie ụda n'etiti fóráịtị.
| file file | Faịlụ ụda a ga-ebubata |
| format string | Fóráịtị́ n'ihi: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitịtị ọbụla n'ime kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Nhazi: |
| channels string | mono ma ọ bụ stereo |
Ngosi okwu
Ziga ụda mọọbụ ngwe ma nweta nzaghachi AI site n'ike okwu.
Nhazi ahụ (multipart/form-data ma ọ bụ JSON)
| Paramita | Ụdị | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|---|
| audio | file | Ọ bụghị* | Audio input (ọbụla audio mọọbụ text chọrọ) |
| text | string | Ọ bụghị* | Input ngwe (ọbụla audio mọọbụ text chọrọ) |
| voice | string | Ọ bụghị | Ngosi maka nzaghachi AI. Dìfọ́ọ̀ltụ̀: af_bella |
| tts_model | string | Ọ bụghị | TTS móòdù maka nzaghachi. Dìfọ́ọ̀ltụ̀: kokoro |
| system_prompt | string | Ọ bụghị | Nnọọ sistem emeredịkachọrọ maka AI |
| conversation_id | string | Ọ bụghị | Gaa n'ihu n'ọnụọgụgụ ahụ |
Ndesịta ozi ahụ
{
"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
}
Báà TTS
Kpọpụta ngwe ndị dị iche iche maka mbipụta TTS dị n'otu. Nhọrọ ahụ na-enweta webụhooku callback mgbe ọrụ niile gasịrị.
Paramita
| Paramita | Ụdị | Ndesịta ozi ndị ahụ |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Ndesịta ozi ahụ
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Nlekọta n'ime n'ime na GET /v1/tts/batch/result/?batch_id=abc123
Nnyesaịtị ụda
Kpọmkwem n'ihu n'ịnye okwu site na reèfọ́ọ̀ltụ̀ ụda. Jiri embed_id a na-eziga n'ime arịrịọ ndị ọzọ maka ịnye okwu n'oge na-adịghị anya.
Paramita
| Paramita | Ụdị | Ndesịta ozi ndị ahụ |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Ndesịta ozi ahụ
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Nlekọta ahụike
Nnyocha ọnọdụ sava GPU, mbipụta móòdù, nakwa ụhara ótù. Enweghị ikikembanye achọrọ. Kechie maka sekọnd 30.
Ndesịta ozi ahụ
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Ndesịta móòdù
Na-eziga ndesịta nke móòdù niile dị̀ n'ọrụ nakwa ikike ha nwere.
Ndesịta ozi ahụ
{
"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
}
]
}
Ndesịta ụda
Na-eziga ndesịta nke ụda niile dịnụ, nke a ga-ehichapụ site na móòdù mọọbụ asụsụ.
Paramita
| Paramita | Ụdị | Ndesịta nkọwa |
|---|---|---|
| model | string | Filtara site na móòdù ID (eg, kokoro) |
| language | string | Filtara site na kóòdù asụsụ (eg, en) |
| gender | string | Filtara site n'ụdị nwoke: male, female, neutral |
Ndesịta ozi ahụ
{
"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) Oge ọfụụ
Kewapụta subtitles synchronized maka ọrụ TTS ọbụla e mechara. Na-agbagharị ntọgharị Whisper n'elu ụda na-eziga SRT mọọbụ WebVTT. Uru ahụ echekwara na diski ka a ga-akpọ ya ugboro abụọ maka uuid ahụ bụ nke a na-agụ diski.
Paramita
| Paramita | Ekwesịrị | Ndesịta nkọwa |
|---|---|---|
| uuid | Ee | Ọrụ UUID a na-ebuli site na /v1/tts/ mọọbụ /v1/voice-clone/. |
| format | Ọ bụghị | srt (dìfọ́ọ̀ltụ̀) mọọbụ vtt. |
| download | Ọ bụghị | 1 ka a zigara Content-Disposition: n'agbanyeghị ihenhọrọ ndị ahụ ka ọbụna ọba ahụ chebe ya n'ebe ahụ ka ọ na-egosi ya. |
| language | Ọ bụghị | Ndụmọdụ maka móòdù ntọgharị (na-ahụta onwe ya ma ọ bụrụ na a hapụ ya). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Dìfọ́ọ̀ltụ̀ Oge ọfụụ
Kwuru TTS engine otú ị ga-esi kọwaa okwu ndị ahụ. Nnweta ndị a chekwara ga-abanye n'ụzọ ọbụla n'ihe achọrọ TTS niile ị na-eme. 200-nweta kwa akaụntụ.
Nhazi ahụ (POST)
| Paramita | Ụdị | Ndesịta nkọwa |
|---|---|---|
| word | string | Akwụkwọ a ga-akwụsị (eg GIF, Anthropic). Akwụkwọ-obodo adịchaghị. |
| replacement | string | Olee otú a ga-esi kọwaa ya maka móòdù (eg jiff, ann THROP ick). |
| language | string | ISO koodị nke n'aka. Ọbụla = na-adabere na asụsụ niile. |
| case_sensitive | boolean | Dìfọ́ọ̀ltụ̀ n'ezighị ezi. Kpọtụ̀ọ̀tụ̀ọ̀ mgbe ezighị ezi. |
# 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-..."
I nwere ike ịgagharịkwa n'ime-nhọrọ n'ime n'ime n'enweghị ichekwa ha - tinye nsụgharị na ọbụla /v1/tts/ oku dịka ọbjektị mọọbụ arịrịọ (lee TTS ngwụcha-pịa paramita).
Nkọwapụta isiokwu Oge ọfụụ
Kpụga tag ọbụla n'ụdị ihuakwụkwọ ọbụla na ndị ọbịa ga-enweta ọgụgụụgụụ nke na-akọwa ihuakwụkwọ na pịa. Na-achọpụta n'onwe ya ụda isiokwu ahụ, na-akwado ụda emeredịkachọrọ / móòdù / ọnọdụ / ụcha n'asụsụ.
<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>
Nkarachọ
| Paramita | Ndesịta nkọwa |
|---|---|
data-pk | Kii a ga-ebipụta (pk-tts-...). Nkwado ndoiini a na-emetụta site na kii allowed_domains. |
data-voice | ID vùò. Dìfọ́ọ̀ltụ̀ af_bella. |
data-model | TTS model ID. Dìfọ́ọ̀ltụ̀ kokoro. |
data-extract | auto (dìfọ́ọ̀ltụ̀) - na-achọ isiokwu/isi/.post-ihenhọrọ/.entry-ihenhọrọ-nhọrọ, na-abanye n'ihu n'ụdị paragraf nke kasị n'obi. Mọọbụ pụọ n'ebe ọbụla CSS nhọrọ ka ọ na-adọta eléèlụ̀ pụrụ iche. |
data-position | bottom (dìfọ́ọ̀ltụ̀) mọọbụ top. |
data-color | Ụcha asịsọ (ọbụla ụcha CSS). Dìfọ́ọ̀ltụ̀ #e60000. |
data-min-chars / data-max-chars | Kpụga báà ma ọ bụrụ na isiokwu ahụ dị obere karịa min-chara(dìfọ́ọ̀ltụ̀ 200). Kpụga init na max-chara(dìfọ́ọ̀ltụ̀ 50,000). |
Liisị bọtịn widjéètì
Inline bọtịn-ụdị embed. Rends n'okpuru ya tag na-egwu bọtịn-ebidogharịrị obere snippet. Ụdị dị iche site na Onye Kpọtụrụ Akwụkwọ n'elu (nke na-akpụpụta ihuakwụkwọ-akpụpụta bar nakwa na-akọwapụta isiokwu niile).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Nchedo ụda (Klọn ndị dị na-adịgide)
Wepụta ụda n'ọnụnọ n'otu oge, weghachite ụda_id dị n'ime, wee wepụta id ahụ n'ime arịrịọ TTS n'ebe ọbụla ịkpọ oku niile. Ọ dị mma maka n'ịgbanye ọnụọgụgụ dị elu.
Wepụ ụda
POST
https://tts.ai/api/v1/user-voices/
Nkwenye chọrọ
Fọmu nke akụkụ abụọ. Ụlọọrụ: faịlụ (ekwesịghị, 5-30s ụda), aha (ekwesịghị), asụsụ (ekwesịghị, difọ́ọ̀ltụ̀ en), móòdù (ekwesịghị - na-ahọrọ nkeonwe cosyvoice2 maka zh/ja/ko ma ọ bụ openvoice), consent_confirmed (ekwesịghị, ọbụla uru ziri ezi).
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"
}
Jiri ụda echekwara na TTS
POST na /api/v1/tts/ (NKE: VPS webụsaịtị, ọ bụghị api.tts.ai) na user_voice_id. Anyị na-ebubata ụda gị echekwara na ụzọ gaa na 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.
Ndesịta / wepụ
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
Agụgụala / megharịa mmem (free)
A ga-echekwa ụda ndị ahụ n'akaụntụ gị mana a ga-ejighị ha na TTS. Ha bara uru maka ndị ọrụ kwụsịtụla ka ndesịta gị ghara ịgbanwe.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Egwuregwu ụkpụrụedemede
Tọghata ngwe ka ọsụsọ
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')}")
Asụsụ ka ngwe
# 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"])
Klọnsị ụda
# 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)
Tọghata ngwe ka ọsụsọ
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();
Asụsụ ka ngwe
// 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);
Tọghata ngwe ka ọsụsọ
# 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
Asụsụ ka ngwe
# 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"
Klọnsị ụda
# 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
Nhazi ụda
# 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
Kóòdù ndehie
Ndehie niile na-eziga nzaghachi JSON na error field.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Ụdị HTTP | Kóòdù ndehie | Ndesịta nkọwa |
|---|---|---|
| 400 | bad_request |
Paramita ndị achọrọ adịghị mma. Gụọ ozi ndehie maka nkọwa. |
| 401 | unauthorized |
Kii API ehichapụ mọọbụ nke agaghị ekwe omume. |
| 402 | insufficient_credits |
Ọdịiche dị n'ebe ahụ. Zụlite ihe ọzọ na /pricing/. |
| 403 | forbidden |
Inweghị ikikembanye iji wepụta ihenhọrọ a (eg, ijikwa ọrụ onye ọrụ ọzọ). Nnweta API onwe ya bụ nke a na-agụnye na mbido ọbụla. |
| 404 | not_found |
Model mọọbụ ụda achọpụtaghị. |
| 413 | file_too_large |
Faịlụ a na-ebubata ruru ogo nke ọha na eze. |
| 429 | rate_limited |
Ntụziaka ndị dị ukwuu. Gbanwee n'elu nke oke nkwụsị. |
| 500 | internal_error |
Ndehie sava. Pịa ọzọ mgbe ahụ. |
| 503 | model_loading |
Na-ebubata móòdù. Pịa ọzọ n'ime sekọnd ole na ole. |
Webhooks
Maka ọrụ na-aga n'ihu (ịgwakọta stiim, batch TTS), ị nwere ike ịnye webhook_url parameter. Mgbe ọrụ ahụ gasịrị, anyị ga-eziga nsonaazụ na URL gị.
{
"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"
}
Nwere ike ịrụzi?
Zụta kiịị API gị ma malite ịnyefe TTS.ai n'ime usoroiheomume gị.