API sənədləşməsi
TTS.ai-i REST API-mizlə tətbiqlərinizə birləşdirin. Yüksək sürətli köçürmə üçün OpenAI-ə uyğun format.
Ümumi
TTS.ai API bütün platforma xüsusiyyətlərinə proqramlaşdırılmış çıxış təmin edir: mətn-dən-söhbətə sintez, söz-dən-söhbətə transkripsiya, səs klonlaşdırma, audio artırma və daha çox. API JSON tələb/cavab bədənləri ilə standart REST konvensiyalarını istifadə edir.
API Açarı
API açarınızı buradan əldə edin Hesab Qurğuları. Pro və Enterprise planlarında mövcuddur.
Əsas Ünvan
https://api.tts.ai/v1/
Tanıt
Göndərən token vasitəsilə Authorization başlıq
Tanıtma
/v1/tts/ bizim pulsuz modellərimizdən istifadə edərək, IP ünvanı başına gündə 5000-ə qədər simvolla, heç bir təsdiqləmə olmadan işləyin (piper, vits, melotts, kokoro). 15.000 bonus xarakter və premium modellərə çıxış əldə etmək üçün pulsuz hesab üçün qeydiyyatdan keçin.
Premium modellər və daha yüksək dərəcəli limitlər üçün, aşağıdakı bir Bearer token ilə tanınır Authorization başlıq.
Authorization: Bearer sk-tts-your-api-key-here
SDK-lar
Rəsmi SDK-lar TTS.ai-i tətbiqinizə asanlıqla birləşdirir. Hər ikisi açıq mənbə və GitHub-da mövcuddur.
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');
Əsas Ünvan
Bütün son nöqtələr bu əsas URL-ə nisbidir. Məsələn, TTS son nöqtəsi:
Sürət Sınırları
API sürət həddi plandan asılıdır:
| Plan | Tələblər/dəqiqə | Birgə | Maksimum Mətn Uzunluğu |
|---|---|---|---|
| Pulsuz | 10 | 2 | 500 rəmz |
| Başlat | 30 | 3 | 1,000,000 ədəd |
| Pro | 60 | 5 | 1,000,000 ədəd |
| Korporativ | 300 | 20 | 50,000 karakter |
Hər cavabda sürət həddi başlıqları daxildir: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Kredit xərcləri
| Xidmət | Qiymət | Birlik |
|---|---|---|
| TTS (Free modellər: Piper, VITS, MeloTTS) | 1000 xarakter | hər 1000 xarakter üçün |
| TTS (Standard modellər: Kokoro, CosyVoice 2, və s.) | 2,000 karakter | hər 1000 xarakter üçün |
| TTS (Premium modelləri: Tortoise, Chatterbox və s.) | 4,000 karakter | hər 1000 xarakter üçün |
| Söhbətdən Mətnə | 2,000 karakter | audio |
| Səs Klonlama | 4,000 karakter | hər 1000 xarakter üçün |
| Səs dəyişdiricisi | 3,000 karakter | audio |
| Audio Enhancer | 2,000 karakter | audio |
| Vokal çıxartma / səs bölmə | 3,000-4,000 karakter | audio |
| Tərcümə | 5,000 karakter | audio |
| Səsli söhbət | 3,000 karakter | hər dönəmdə |
| Açar Tapıcısı | Pulsuz | -- |
| Audio çeviricisi | Pulsuz | -- |
Mətndən Söhbətə
Mətni danışan səsə çevir. İstənilən formatda səs faylını geri qaytarır.
İstiqamət
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| model | string | No | Model ID (məsələn, kokoro, chatterbox, piper). Əgər buraxılsa, istənilən dilin dəstəklədiyi bir modeli avtomatik olaraq seçəcəyik - en/ja/zh/ko/fr/de/it/pt/es/hi/ru üçün kokoro, digər dəstəklənən dillər üçün piper (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Bəli | Diqqətə çevriləcək mətn. İstəyişin maksimumu: 500 simvol (anonim), 5,000 (pulsuz hesab), 1,000,000 (ödənişli plan). Uzun girişlər server tərəfində avtomatik olaraq parçalanır. |
| voice | string | Bəli | Səs ID-si (var olan səsləri siyahıya almaq üçün /v1/voices/ istifadə et) |
| format | string | No | Çıxış formatı: mp3 (öncəki), wav, flac, ogg |
| speed | float | No | Söhbət sürətinin qatlanması. Ön qurğulu: 1.0. Aralıq: 0.5-dan 2.0-a qədər |
| language | string | No | Dil kodu (məsələn, en, es). Əgər verilməsə avtomatik aşkarlanacaq. |
| instructions | string | No | İşləyən / göndərən işarə (≤500 simvol). Məsələn \ |
| pronunciations | object | array | No | İstifadəçi istəyi əsasında səsləndirmə üstünlük təşkil edir. Ya {\ |
| stream | boolean | No | Axın cavabını fəallaşdır. Ön qurğulu: false |
Məsələn İstifadəsi
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əyinatları
Tarix formatı ön qurğusu 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
_Təfsir Et Giriş _Sözləşmə 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 ingilis və dmy başqa dillərdədir; format=\ ilə əvəzlənir{
"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."
}Cavab
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.Tam nümunə
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.
Söhbətdən Mətnə
Audionu mətnə çevir. Avtomatik aşkarlama ilə 99 dili dəstəkləyir.
İstiqamət (multipart/form-data)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| file | file | Bəli | Audio faylı (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maksimum 100MB. |
| model | string | No | STT modeli: whisper (öncəki), faster-whisper, sensevoice |
| language | string | No | Dil kodu. auto avtomatik aşkarlama üçün (ölçülü). |
| timestamps | boolean | No | Söz səviyyəli vaxt damğalarını daxil et. Ön qurğulu: false |
| diarize | boolean | No | Dinləyicini diarization fəallaşdır. Ön qurğulu: false |
Cavab
{
"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"
}
]
}
Səs Klonlama
Klon səslə danışıq yaradaraq. Referans səs və mətn yüklə.
İstiqamət (multipart/form-data)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| reference_audio | file | Bəli | Referans səs səsi (10-30 saniyə məsləhət görülür). Max 20MB. |
| text | string | Bəli | Klon səsi ilə danışacaq mətn. |
| model | string | No | Klon modeli: chatterbox (öncəki), cosyvoice2, gpt-sovits |
| format | string | No | Çıxış formatı: mp3 (öncəki), wav, flac |
| language | string | No | Məqsəd dil kodu. Seçilmiş model tərəfindən dəstəklənməlidir. |
Cavab
Audio faylı TTS son nöqtəsi ilə eyni olan ikilik məlumat olaraq geri qaytarır.
Səs dəyişdiricisi
Səsini fərqli səsə çevir. Mənbə səsini yüklə və hədəf səsi seçin.
İstiqamət (multipart/form-data)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| file | file | Bəli | Mənbə səs faylı (MP3, WAV, FLAC). Maksimum 50MB. |
| target_voice | string | Bəli | Dəyişdiriləcək səs identifikatoru (var olan səsləri göstərmək üçün /v1/voices/ istifadə et) |
| model | string | No | Səs çevirmə modeli: openvoice (öncəki), knn-vc |
| format | string | No | Çıxış formatı: wav (öncəki), mp3, flac |
Məsələn İstifadəsi
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
Cavab
Dəyişdirilmiş audio faylı ikilik məlumat olaraq geri qaytarır.
Tərcümə
Söhbət səsini bir dildən digərinə tərcümə et. Tək bir zəngdə söz-mətn, tərcümə və mətn-söhbəti birləşdirir.
İstiqamət (multipart/form-data)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| file | file | Bəli | Mənbə səs faylı orijinal dildə. Maksimum 100MB. |
| target_language | string | Bəli | Məqsəd dil kodu (məsələn, es, fr, de, ja) |
| voice | string | No | Tərcümə üçün səs. Əgər verilməsə avtomatik seçiləcək. |
| preserve_voice | boolean | No | Oxuyucunun orijinal səs xüsusiyyətlərini qorumağa çalış. Ön qurğulu: false |
Cavab
{
"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
}
Speech-to-Speech
Müddəti saxlayaraq danışıq üslubunu, emosionallığı və ya təqdimatı dəyişdir. Ton, ritm və ifadəliliyi düzəltmək üçün faydalıdır.
İstiqamət (multipart/form-data)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| file | file | Bəli | Mənbə səs faylı. Max 50MB. |
| voice | string | Bəli | Çıxış səsi üçün hədəf səs ID-si |
| model | string | No | Model: openvoice (öncəki), chatterbox |
| emotion | string | No | Məqsəd duyğu: neutral, happy, sad, angry, excited
|
| speed | float | No | Sür'ət düzəltmə. Ön qurğulu: 1.0. Aralıq: 0.5-dan 2.0-a |
Cavab
Dəyişdirilmiş səs faylı ikilik məlumat olaraq geri qaytar.
Audio Vasitələri
Audio işləmə son nöqtələri artırma, vokal çıxarma, stem bölmə və daha çoxu üçün.
Səs keyfiyyətini yaxşılaşdır: səssizləşdirmə, aydınlığı yaxşılaşdırma, super çözünürlük.
| file file | Əlavə ediləcək səs faylı |
| denoise boolean | Xarici səsləri fəallaşdır (öncəki: doğru) |
| enhance_clarity boolean | Söhbətin aydınlığını artır (öncəki: doğru) |
| super_resolution boolean | Səs keyfiyyətini yüksəlt (öncəki: səhv) |
| strength integer | 1-3 (ağıllı, orta, güclü). Ön qurğulu: 2 |
Bu, ya şəkillərin bir-birindən ayrılmasına, ya da şəkillərin bir-birindən ayrılmasına səbəb olur.
| file file | Seçiləcək səs faylı |
| model string | demucs (ön qurğulu) ya da spleeter |
| stems integer | Çuxurların sayı: 2, 4, 5, ya da 6 (öncəki: 2) |
| format string | Çıxış formatı: wav, mp3, flac |
Səs qeydlərindən echo və reverb sil.
| file file | İşlənəcək səs faylı |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Key, BPM və vaxt imzasını aşkar etmək üçün səsi analiz et.
| file file | Təhlil ediləcək səs faylı |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Audio formatları arasında çevir.
| file file | Dəyişdiriləcək səs faylı |
| format string | Məqsəd format: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Kbps-də çıxış bitrate: 64, 128, 192, 256, 320 |
| sample_rate integer | Nümunə dərəcəsi: 22050, 44100, 48000 |
| channels string | mono ya da stereo |
Səsli söhbət
Audio və ya mətn göndərin və sintez edilmiş səslə AI cavabı alın.
İstiqamət (multipart/form-data ya da JSON)
| Parametrlər | Növ | Gərəklidir | İzahat |
|---|---|---|---|
| audio | file | No* | Audio girişi (ya audio ya da text tələb olunur) |
| text | string | No* | Mətn girişi (ya audio ya da text tələb olunur) |
| voice | string | No | AI cavabı üçün səs. Ön qurğulu: af_bella |
| tts_model | string | No | Cavab üçün TTS modeli. Ön qurğulu: kokoro |
| system_prompt | string | No | AI üçün təyin edilmiş sistem çağırışı |
| conversation_id | string | No | Hazırkı söhbətə davam et |
Cavab
{
"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
TTS yaradılması üçün paralel olaraq bir çox mətn göndər. Bütün iş bitdikdə seçimli olaraq webhook geri çağırma al.
Parametrlər
| Parametrlər | Növ | İzahat |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Paket tamamlandıqda POST nəticələri üçün seçimli URL. |
Cavab
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
/v1/tts/batch/result/?batch_id=abc123 ilə sorğu irəliləməsi GET
Səs Əqrəbi
Referans səsdən səs daxiletməni əvvəlcədən hesabla. Sonrakı səs klonlama istəklərində anında yaradılması üçün geri qaytarılan embed_id-ni istifadə et.
Parametrlər
| Parametrlər | Növ | İzahat |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Cavab
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Sağlamlıq Yoxlaması
GPU vericisinin vəziyyətini, yüklənmiş modelləri və növbə böyüklüyünü yoxla. Tanıtma tələb edilmir. 30 saniyəlik ön yaddaş.
Cavab
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Modelləri siyahıya al
Bütün mövcud modellərin və onların imkanlarının siyahısını geri qaytarır.
Cavab
{
"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
}
]
}
Səslər siyahısı
Bütün mövcud səslərin siyahısını, model və ya dil üzrə filtrlənmiş olaraq geri qaytarır.
Sorğu Parametrləri
| Parametrlər | Növ | İzahat |
|---|---|---|
| model | string | Model ID-si ilə filtrlə (məsələn, kokoro) |
| language | string | Dil koduna görə filtrlə (məsələn, en) |
| gender | string | Cinsiyyət üzrə filtr: erkək, qız, qeyri-fəal |
Cavab
{
"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) yeni
Bütün tamamlanmış TTS işlərinə sinxronlaşdırılmış subtitrlər yaradır. Audio üzərində Whisper düzəlişləməsini yerinə yetirir və SRT ya da WebVTT geri qaytarır. Nəticələr diskdə ön yaddaşda saxlanılır, buna görə də eyni uuid üçün ikinci çağırış disk oxuması olacaq.
Sorğu Parametrləri
| Parametrlər | Gərəklidir | İzahat |
|---|---|---|
| uuid | Bəli | İş UUID-i /v1/tts/ və ya /v1/voice-clone/ tərəfindən geri qaytarıldı. |
| format | No | srt (öncəki) və ya vtt. |
| download | No | 1 Content-Disposition: attachment göndərmək üçün, buna görə də brauzer göstərmək əvəzinə qeyd edəcək. |
| language | No | Düzləşdirmə modeli üçün işarədir (əgər buraxılsa avtomatik aşkarlanır). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Tərcümə lüğəti yeni
TTS motoruna müəyyən sözlərin necə səslənəcəyini bildirin. Qeyd edilmiş daxilolmalar hər bir TTS istəyinizə avtomatik olaraq tətbiq olunur. Hər hesab üçün 200 daxilolma həddi.
İstiqamət (POST)
| Parametrlər | Növ | İzahat |
|---|---|---|
| word | string | Üstündən keçiləcək söz (məsələn GIF, Anthropic). Söz sərhədi uyğun gəldi. |
| replacement | string | Model üçün necə yazılması (məsələn jiff, ann THROP ick). |
| language | string | ISO kodu. Boş = bütün dillərə aiddir. |
| case_sensitive | boolean | Ön qurğulu false. true olduğu zaman böyük-kiçik hərfləri uyğunlaşdır. |
# 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-..."
Siz həmçinin onları saxlamadan per-istək üstələmələrini də verə bilərsiniz - hər hansı bir /v1/tts/ çağırışında pronunciations-ı ya bir obyekt, ya da bir sıra kimi daxil edə bilərsiniz (TTS son nöqtəsi parametrlərini baxın).
Məqalələr yeni
Hər hansı bir məqalə səhifəsində tək təqvim daşı at və ziyarətçilər kliklədikdə səhifəni danışan sabit oxuyucu çubuğu alacaq. Məqalə bədənini avtomatik olaraq aşkar edir, öz səs / model / mövqe / aksent rənglərini dəstəkləyir.
<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>
Options
| Parametrlər | İzahat |
|---|---|
data-pk | Yayımlana bilən açar (pk-tts-…). Açarın allowed_domains sahəsindən domen məhdudiyyətləri tətbiq edilir. |
data-voice | Səs ID. Ön qurğulu af_bella. |
data-model | TTS model ID. Ön qurğulu kokoro. |
data-extract | auto (öncəki) — article/main/.post-content/.entry-content seçicilərini sınayır, ən sıx paragraf qrupuna geri düşür. Ya da müəyyən bir elementi hədəfləyən hər hansı bir CSS seçicisini keçirir. |
data-position | bottom (öncəki) ya da top. |
data-color | Aksent rəngi (hər hansı CSS rəngi). Ön qurğulu #e60000. |
data-min-chars / data-max-chars | Əgər məqalə minimum şəkilçilərdən (öncəki 200) qısadırsa, çubuğu keç. Max şəkilçilərdə (öncəki 50,000) girişi məhdudlaşdır. |
Dinlə düyməsi
Sətir içində düymə-stil daxiletmə. təqviminə yaxın render edilir və düymə ilə aktivləşdirilən qısa bir parçanı oynadır. Üstdəki Məqalələr Natiqindən fərqli şəkil (səhifəyə qədər olan çubuğu avtomatik olaraq daxil edir və bütün məqaləni danışır).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Qeyd edilmiş səslər (Davamlı Klonlar)
Referans audionu bir dəfə yüklə, davamlı voice_id-i geri al, sonra da hər zəngdə audionu yenidən yükləmək əvəzinə TTS istəklərində bu id-ə istinad et. Yüksək səsli birləşmələr üçün idealdır.
Sesi yüklə
POST
https://tts.ai/api/v1/user-voices/
Tanıtma tələb olunur
Çox hissəli form. Sahə: fayl (məcburi, 5-30s audio), ad (məcburi), dil (seçkili, ön qurğulu en), model (seçkili — zh/ja/ko üçün cosyvoice2, digər hallarda openvoice-u avtomatik seçir), consent_confirmed (məcburi, hər hansı doğru dəyər).
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"
}
TTS-də qeyd edilmiş səsi işlət
user_voice_id ilə /api/v1/tts/-ə POST (NƏTİCƏ: web VPS qovşağı, api.tts.ai deyil). Sizin saxladığınız səs və yolları klonlama boru kəmərinə yükləyirik.
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.
Siyahını sil
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
Arxivlə / yenidən aktivləşdir (pulsuz)
Arxiv səslər hesabınızda qalır, lakin TTS-də istifadə edilə bilməz. Səbəbindən siyahınız təmiz qaldığı üçün yatmış son istifadəçilər üçün faydalıdır.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Kod nümunələri
Mətndən Söhbətə
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')}")
Söhbətdən Mətnə
# 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"])
Səs Klonlama
# 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)
Mətndən Söhbətə
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();
Söhbətdən Mətnə
// 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);
Mətndən Söhbətə
# 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
Söhbətdən Mətnə
# 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"
Səs Klonlama
# 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 Enhancer
# 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
Xəta Kodları
Bütün xətalar JSON cavabı ilə geri dönür error sahəsi
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP Vəziyyəti | Xəta Kodu | İzahat |
|---|---|---|
| 400 | bad_request |
Səhv tələb parametrləri. Məlumat üçün xəta ismarışını yoxlayın. |
| 401 | unauthorized |
API açarı yoxdu ya da səhvdir. |
| 402 | insufficient_credits |
Yetərli xarakter yoxdur. /pricing/-dən daha çoxunu alın. |
| 403 | forbidden |
Bu resursa çıxış icazəniz yoxdur (məsələn, başqa istifadəçinin işi üçün sorğu). API girişi hər planda daxildir. |
| 404 | not_found |
Model ya da səs tapılmadı. |
| 413 | file_too_large |
Yüklənən fayl ölçüsünü aşır. |
| 429 | rate_limited |
Çox çox tələblər. Sürət həddi başlıqlarını yoxlayın. |
| 500 | internal_error |
Verici xətası. Sonra yenidən cəhd edin. |
| 503 | model_loading |
Model yüklənir. Bir neçə saniyə sonra yenidən cəhd edin. |
Webhooks
Uzun işləyən vəzifələr üçün (stamp bölünməsi, batch TTS), webhook_url parametri verə bilərsiniz. İş bitdikdə, nəticəni URL-nizə POST edəcəyik.
{
"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"
}
Qurmağa hazırsan?
API açarınızı əldə edin və TTS.ai-i tətbiqlərinizə birləşdirməyə başlayın.