Dokumentimi i API
Integro TTS.ai në aplikacionet tuaja me API-në tonë REST. Format i përshtatshëm OpenAI për migrimin e lehtë.
Përmbledhje
API TTS.ai ofron akses programatik tek të gjitha funksionet e platformës: sintezë tekst-në-folje, transkriptim fjalë-në-tekst, klonim zëri, përmirësim audio, etj. API përdor konventat standarde REST me trupat e kërkesave/përgjigjeve JSON.
Kyçi API
Merr çelësin e API nga Rregullimet e llogarisë. Në dispozicion në Pro dhe Enterprise plane.
URL e bazë
https://api.tts.ai/v1/
Autorizimi
Token i mbajtësit nëpërmjet Authorization kreu
Autentifikim
/v1/tts/ punon pa asnjë autorizim, deri në 5,000 karaktere në ditë për IP, duke përdorur ndonjë nga modelet tona falas (piper, vits, melotts, kokoro). Regjistrohu për një llogari falas për të marrë 15,000 karaktere bonus dhe akses ndaj modeleve premium.
Për modele premium dhe kufizime më të larta të normës, autentifikimi me një token të mbajtësit në Authorization kreu.
Authorization: Bearer sk-tts-your-api-key-here
SDK
SDK-të zyrtare e bëjnë të lehtë integrimin e TTS.ai në aplikimin tuaj. Të dyja janë me burim të hapur dhe në dispozicion në 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');
URL e bazë
Të gjitha pikat përfundimtare janë relative ndaj kësaj URL baze. Për shembull, pika përfundimtare e TTS është:
Kufizime
Kufizimet e API ndryshojnë sipas planit:
| Plani | Kërkesa/min | Njëkohësisht | Gjatësia maksimale e tekstit |
|---|---|---|---|
| I lirë | 10 | 2 | 500 gërma |
| Fillues | 30 | 3 | 1,000,000 karakterë |
| Pro | 60 | 5 | 1,000,000 karakterë |
| Enterprise. | 300 | 20 | 50,000 karakterë |
Kufizimi i shpejtësisë është përfshirë në çdo përgjigje: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Shpenzimet e kreditit
| Shërbimi | Kostoja | Njësia |
|---|---|---|
| TTS (modele të lira: Piper, VITS, MeloTTS) | 1,000 karakterë | për 1,000 karakterë |
| TTS (Modele standarde: Kokoro, CosyVoice 2, etj.) | 2,000 karakterë | për 1,000 karakterë |
| TTS (Modele Premium: Tortoise, Chatterbox, etj.) | 4 kreditë | për 1,000 karakterë |
| Fjalë në tekst | 2,000 karakterë | për minutë të audios |
| Klonimi i zërit | 4 kreditë | për 1,000 karakterë |
| Ndryshues zëri | 3,000 karakterë | për minutë të audios |
| Përmirësimi i zërit | 2,000 karakterë | për minutë të audios |
| Hiq vokalin / Ndaj zërin | 3,000-4,000 karakterë | për minutë të audios |
| Përkthim i Fjalës | 5,000 karakterë | për minutë të audios |
| Biseda me zë | 3,000 karakterë | për rradhë |
| Key & BPM Finder | I lirë | -- |
| Konvertimi i audios | I lirë | -- |
Teksti në Fjalë
Shndërron tekstin në zë. Kthen file audio në formatin e kërkuar.
Korpi i kërkesës
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| model | string | Jo. | ID e modelit (p.sh. kokoro, chatterbox, piper). Nëse hiqet, do të zgjedhim automatikisht një model që suporton gjuhën e kërkuar — kokoro për en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper për gjuhë të tjera të suportuara (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Po | Teksti për t'u konvertuar në fjalë. Kufiri i kërkesave: 500 karaktere (anonim), 5,000 (konto pa pagesë), 1,000,000 (konto me pagesë). Input-et e gjata ndahen automatikisht në pjesë nga serveri. |
| voice | string | Po | ID e zërit (përdor /v1/voices/ për të listuar zërat në dispozicion) |
| format | string | Jo. | Formati i daljes: mp3 (i prezgjedhur), wav, flac, ogg |
| speed | float | Jo. | Shumëfishues i shpejtësisë së të folurit. I prezgjedhur: 1.0. Rreth: 0.5 deri tek 2.0 |
| language | string | Jo. | Kodi i gjuhës (p.sh. en, es). Zbulohet automatikisht nëse hiqet. |
| instructions | string | Jo. | Shënime për veprim/përdorim (≤500 karaktere). p.sh. \ |
| pronunciations | object | array | Jo. | Përdoret për të mbishkruar përmbajtjen e kërkesës. Ose {\ |
| stream | boolean | Jo. | Aktivizo përgjigjen e rrjedhjes. E prezgjedhur: false |
Kërkesa e shembullit
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 tags
Rrotullo numrat, datat, monedhën, numrat e telefonave dhe shkurtimet në Formati i prezgjedhur i datës është 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
interpreto Input Fjalë për fjalë 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 për anglisht dhe dmy në vende të tjera; mbishkruhet me 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."
}Përgjigje
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.
Fjalë në tekst
Transkribo audio në tekst. Suporton 99 gjuhë me zbulim automatik.
Korpi i kërkesës (multipart/form-data)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| file | file | Po | File audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maksimum 100MB. |
| model | string | Jo. | Modeli STT: whisper (i prezgjedhur), faster-whisper, sensevoice
|
| language | string | Jo. | Kodi i gjuhës. auto për zbulimin automatik (i prezgjedhur). |
| timestamps | boolean | Jo. | Përfshi kohën e nivelit të fjalës. E prezgjedhur: false |
| diarize | boolean | Jo. | Aktivizo diarizimin e zërit. E prezgjedhur: false |
Përgjigje
{
"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"
}
]
}
Klonimi i zërit
Gjenerator i foljes në një zë të klonuar. Ngarko një referencë audio dhe tekst.
Korpi i kërkesës (multipart/form-data)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| reference_audio | file | Po | Referenca e zërit audio (10-30 sekonda rekomandohet). Maksimum 20MB. |
| text | string | Po | Teksti për të folur në zërin e klonuar. |
| model | string | Jo. | Model kloni: chatterbox (i prezgjedhur), cosyvoice2, gpt-sovits |
| format | string | Jo. | Formati i daljes: mp3 (i prezgjedhur), wav, flac |
| language | string | Jo. | Kodi i gjuhës së synuar. Duhet të jetë i suportuar nga modeli i zgjedhur. |
Përgjigje
Kthen file audio si të dhëna binare, të njëjta si pika e fundit e TTS.
Ndryshues zëri
Shndërro audion në tingull të zërit të ndryshëm. Ngarko audion burimor dhe zgjidh një zë qëllimi.
Korpi i kërkesës (multipart/form-data)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| file | file | Po | File audio burimor (MP3, WAV, FLAC). Maksimum 50MB. |
| target_voice | string | Po | ID e zërit të synuar për t'u konvertuar në (përdor /v1/voices/ për të listuar zërat në dispozicion) |
| model | string | Jo. | Modeli i konvertimit të zërit: openvoice (i prezgjedhur), knn-vc |
| format | string | Jo. | Formati i daljes: wav (i prezgjedhur), mp3, flac |
Kërkesa e shembullit
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
Përgjigje
Kthen file audio të konvertuar si të dhëna binare.
Përkthim i Fjalës
Përkthe audion e folur nga një gjuhë në tjetrën. Kombinon fjalë-në-tekst, përkthim dhe tekst-në-folje në një thirrje të vetme.
Korpi i kërkesës (multipart/form-data)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| file | file | Po | File audio burimor në gjuhën origjinale. Maksimum 100MB. |
| target_language | string | Po | Kodi i gjuhës së synuar (p.sh. es, fr, de, ja) |
| voice | string | Jo. | Zëri për output e përkthyer. Zgjedhur automatikisht nëse hiqet. |
| preserve_voice | boolean | Jo. | Përpiqet të ruajë karakteristikat origjinale të zërit të folësit. E prezgjedhur: false |
Përgjigje
{
"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
}
Fjalë në Fjalë
Transformon stilin e fjalimit, emocionin, apo përmbajtjen duke mbajtur përmbajtjen. E dobishme për rregullimin e tonit, ritmit dhe shprehjes.
Korpi i kërkesës (multipart/form-data)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| file | file | Po | Burimi i file audio të foljes. Maksimum 50MB. |
| voice | string | Po | ID e zërit të synuar për të folurit në dalje |
| model | string | Jo. | Modeli: openvoice (i prezgjedhur), chatterbox |
| emotion | string | Jo. | Emocioni i synuar: neutral, happy, sad, angry, excited
|
| speed | float | Jo. | Rregullimi i shpejtësisë. I prezgjedhur: 1.0. Rrethi: 0.5 deri tek 2.0 |
Përgjigje
Kthen file audio të transformuar si të dhëna binare.
Instrumentet e zërit
Pikat përfundimtare të përpunimit të audios për përmirësim, heqjen e zërit, ndarjen e stem, dhe më shumë.
Përmirëso cilësinë e audios: elimino zhurmën, përmirëso qartësinë, super-rezolutën.
| file file | File audio për të përmirësuar |
| denoise boolean | Aktivo zhdukjen e zhurmës (e prezgjedhur: e vërtetë) |
| enhance_clarity boolean | Përmirëso qartësinë e të folurit (e prezgjedhur: e vërtetë) |
| super_resolution boolean | Përmirëso cilësinë e audios (e prezgjedhur: e pavërtetë) |
| strength integer | 1-3 (i lehtë, i mesëm, i fortë). I prezgjedhur: 2 |
Shpërndarja e vogël e grimcave (e vogël) ose e madhe (e madhe) në një lëng.
| file file | File audio për t'u ndarë |
| model string | demucs (e prezgjedhur) ose spleeter |
| stems integer | Numri i rrënjëve: 2, 4, 5 ose 6 (i prezgjedhur: 2) |
| format string | Formati i daljes: wav, mp3, flac |
Hiq ekuilibrin dhe reverb nga regjistrimet audio.
| file file | File audio për t'u përpunuar |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analizo audion për të zbuluar keys, BPM dhe time signature.
| file file | File audio për t'u analizuar |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Kthe audion midis formateve.
| file file | File audio për t'u konvertuar |
| format string | Formati i synuar: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate i daljes në kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Shkalla e shembullit: 22050, 44100, 48000 |
| channels string | mono ose stereo |
Biseda me zë
Dërgo audio apo tekst dhe merr një përgjigje AI me fjalë të sintetizuara.
Korpi i kërkesës (multipart/form-data ose JSON)
| Parametrat | Lloji | E nevojshme | Përshkrimi |
|---|---|---|---|
| audio | file | Jo.* | Input audio (duhet ose audio ose text) |
| text | string | Jo.* | Hyrja e tekstit (duhet ose audio ose text) |
| voice | string | Jo. | Zëri për përgjigjen AI. I prezgjedhur: af_bella |
| tts_model | string | Jo. | Modeli TTS për përgjigje. I prezgjedhur: kokoro |
| system_prompt | string | Jo. | Prompt i personalizuar i sistemit për AI |
| conversation_id | string | Jo. | Vazhdo një bisedë ekzistuese |
Përgjigje
{
"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
Dërgo tekste të shumta për krijimin paralel të TTS. Në mënyrë opsionale merr një thirrje webhook kur të përfundojnë të gjitha punët.
Parametrat
| Parametrat | Lloji | Përshkrimi |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Përgjigje
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Proçesi i sondazhit me GET /v1/tts/batch/result/?batch_id=abc123
Zëri i integruar
Para-kalkuluar një zë të përfshirë nga audio referimi. Përdor embed_id të kthyer në kërkesat e mëvonshme të klonimit të zërit për krijimin gati menjëherë.
Parametrat
| Parametrat | Lloji | Përshkrimi |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Përgjigje
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Kontrolli i gjendjes
Kontrollo gjendjen e serverit GPU, modelet e ngarkuara dhe madhësine e rreshtit. Nuk kërkohet autentifikim. Kache për 30 sekonda.
Përgjigje
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Lista e modeleve
Kthen një listë të të gjithë modeleve në dispozicion me aftësitë e tyre.
Përgjigje
{
"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
}
]
}
Zërat e listës
Kthen një listë të të gjithë zërave në dispozicion, opcionalisht të filtruar sipas modelit apo gjuhës.
Parametrat e pyetjes
| Parametrat | Lloji | Përshkrimi |
|---|---|---|
| model | string | Filtro sipas ID të modelit (p.sh. kokoro) |
| language | string | Filtro sipas kodit të gjuhës (p.sh. en) |
| gender | string | Filtro sipas gjinisë: mashkull, femër, neutral
|
Përgjigje
{
"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
}
Subtitrat (SRT / VTT) e re
Gjenerati subtitrat e sinkronizuar për çdo punë TTS të përfunduar. Ekzekuton Whisper alignment mbi audio dhe kthen SRT ose WebVTT. Rezultati është i ruajtur në disk kështu që një thirrje e dytë për të njëjtin uuid është një disk i lexuar.
Parametrat e pyetjes
| Parametrat | E nevojshme | Përshkrimi |
|---|---|---|
| uuid | Po | UUID e punës u kthye nga /v1/tts/ ose /v1/voice-clone/. |
| format | Jo. | srt (i prezgjedhur) ose vtt. |
| download | Jo. | 1 për të dërguar Content-Disposition: attachment kështu që shfletuesi ruan në vend që të shfaqë. |
| language | Jo. | Hija për modelin e drejtimit (zbulohet automatikisht nëse hiqet). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Fjalori i Fjalëshkrimit e re
Trego motorit TTS si të përshkruaj fjalë të caktuara. Entrat e ruajtura aplikohen automatikisht në çdo kërkesë TTS që bëni. Kufiri i hyrjeve për llogari është 200.
Korpi i kërkesës (POST)
| Parametrat | Lloji | Përshkrimi |
|---|---|---|
| word | string | Fjala për t'u mbishkruar (p.sh. GIF, Anthropic). Kufiri i fjalës u përputh. |
| replacement | string | Si ta shkruash atë për modelin (p.sh. jiff, ann THROP ick). |
| language | string | Kodi opcional ISO. Bosh = aplikohet për të gjitha gjuhët. |
| case_sensitive | boolean | false i prezgjedhur. Përputhet me shkronjat e mëdha/vogla saktësisht kur true. |
# 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-..."
Ju gjithashtu mund të kaloni mbishkrimet e kërkesave pa i ruajtur ato — përfshini pronunciations në çdo thirrje /v1/tts/ si një objekt ose një array (shikoni parametrat e pikës së fundit të TTS).
Artikulli e re
Hidhe një tag të vetëm në çdo faqe të artikullit dhe vizitorët marrin një shtyllë fikse lexuese që rrëfen faqen kur klikohet. Zbulohet automatikisht trupi i artikullit, mbështet zërin e personalizuar / modelin / pozicionin / ngjyrën e theksit.
<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>
Opsionet
| Parametrat | Përshkrimi |
|---|---|
data-pk | Kyçi i publikueshëm (pk-tts-…). Kufizimet e domain-it zbatohet nëpërmjet fushës allowed_domains të kyçit. |
data-voice | ID e zërit. E prezgjedhur af_bella. |
data-model | ID e modelit TTS. kokoro e prezgjedhur. |
data-extract | auto (i prezgjedhur) — provon zgjedhësit article/main/.post-content/.entry-content, kthehet tek grupi më i dendur i paragrafëve. Ose kalon çdo zgjedhës CSS për të synuar një element të caktuar. |
data-position | bottom (i prezgjedhur) ose top. |
data-color | Ngjyra e theksuar (çdo ngjyrë CSS). E prezgjedhur #e60000. |
data-min-chars / data-max-chars | Hiqni dorë nga shtylla nëse artikulli është më i shkurtër se numri i gërmave minimale (e prezgjedhur 200). Kufizoni hyrjen tek numri i gërmave maksimale (e prezgjedhur 50,000). |
Widget i butonit Dëgjo
Nënshkrim i stilit të butonit të brendshëm. Shfaqet pranë etiketës së tij dhe luan një fragment të shkurtër të aktivizuar nga butoni. Formë e ndryshme nga Narratori i Artikullit më lart (i cili automatikisht injekton një shtyllë faqe-për-faqe dhe tregon të gjithë artikullin).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Zërat e ruajtur (Klone të përhershme)
Ngarko një audio referuese një herë, merr një voice_id të përhershëm, pastaj refero këtë id në kërkesat TTS në vend të ri-ngarkosh audion çdo thirrje. Ideale për integrime me volum të lartë.
Ngarko një zë
POST
https://tts.ai/api/v1/user-voices/
Autentifikimi është i nevojshëm
Formula me shumë pjesë. Fusha: file (e nevojshme, audio 5-30s), emri (e nevojshme), gjuha (opsionale, e prezgjedhur en), modeli (opcional — zgjedh automatikisht cosyvoice2 për zh/ja/ko else openvoice), consent_confirmed (e nevojshme, çdo vlerë e vërtetë).
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"
}
Përdor zërin e ruajtur në TTS
POST në /api/v1/tts/ (Shënim: host web VPS, jo api.tts.ai) me user_voice_id. Ne ngarkojmë audion tuaj të ruajtur dhe udhëzimin në tubacionin e klonimit.
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.
Listë / eleminohet
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
Arkivo / riaktivo (lirë)
Zërat e arkivuar mbeten në llogarinë tuaj por nuk mund të përdoren në TTS. E dobishme për përdoruesit e fjetur që lista juaj të mbetet e pastër.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Shembuj kodi
Teksti në Fjalë
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')}")
Fjalë në tekst
# 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"])
Klonimi i zërit
# 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)
Teksti në Fjalë
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();
Fjalë në tekst
// 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);
Teksti në Fjalë
# 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
Fjalë në tekst
# 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"
Klonimi i zërit
# 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
Përmirësimi i zërit
# 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
Kodi i gabimit
Të gjithë gabimet kthejnë një përgjigje JSON me një error fushë.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Gjendja e HTTP | Kodi i gabimit | Përshkrimi |
|---|---|---|
| 400 | bad_request |
Parametra të pavlefshëm kërkese. Kontrollo mesazhin e gabimit për hollësi. |
| 401 | unauthorized |
Mungon kyçi i API ose është i pavlefshëm. |
| 402 | insufficient_credits |
Nuk ka karaktere të mjaftueshme. Bleni më shumë tek /pricing/. |
| 403 | forbidden |
Nuk keni të drejtat për të hyrë tek kjo burim (p.sh., për të pyetur punën e një përdoruesi tjetër). Hyrja e vetë API është e përfshirë në çdo plan. |
| 404 | not_found |
Modeli apo zëri nuk u gjet. |
| 413 | file_too_large |
File i ngarkuar kapërcen kufirin e madhësisë. |
| 429 | rate_limited |
Tepër kërkesa. Kontrollo header-ët e kufijve të shpejtësisë. |
| 500 | internal_error |
Gabim serveri. Provo përsëri më vonë. |
| 503 | model_loading |
Modeli po ngarkohet. Përpiqu përsëri pas disa sekondash. |
Webhooks
Për aktivitete me kohë të gjatë (shtrëngimi i rrënjës, TTS batch), mund të jepni një parametr webhook_url. Kur aktiviteti të përfundojë, do të POSTojmë rezultatin tek URL juaj.
{
"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"
}
Gati për të ndërtuar?
Merr çelësin tënd API dhe fillo integrimin e TTS.ai në aplikimet e tua.