Documentare API
Integrați TTS.ai în aplicațiile dvs. cu API REST. Format compatibile cu OpenAI pentru o migrație ușoară.
Prezentare generală
API TTS.ai oferă acces programmatic la toate caracteristicile platformei: sinteză text-to-speech, transcripție vocală-to-text, clonare vocală, îmbunătățire audio și mai mult. API utilizează convenții standard REST cu JSON cerere/corps de răspuns.
Cheie API
Obțineți cheia API de la Setări contului. Disponibil pe Pro şi Enterprise planuri.
URL de bază
https://api.tts.ai/v1/
Auth
Figură de purtător prin intermediul Authorization antet
Autentificare
/v1/tts/ lucrează fără nici o autorizație, până la 5.000 de caractere/zi pe IP, folosind oricare dintre modelele noastre gratuite (piper, vits, melotts, kokoro). Înregistrează-te pentru un cont gratuit pentru a obține 15.000 de personaje bonus și acces la modele premium.
Pentru modelele premium și limitele ratei mai mari, autentificați cu un token Bearer în Authorization antet.
Authorization: Bearer sk-tts-your-api-key-here
SDK
SDK-urile oficiale fac ușor să integreze TTS.ai în aplicația dumneavoastră. Ambele sunt surse deschise și disponibile pe 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 de bază
Toate punctele finale sunt legate de această URL de bază. De exemplu, punctul final TTS este:
Limitele ratei
Limitele ratei API variază după plan:
| Plan | Cereri/min | Concurenţi | Lungimea maximă a textului |
|---|---|---|---|
| Gratuit | 10 | 2 | 500 de caractere |
| Pornitor | 30 | 3 | 1.000.000 de caractere |
| Pro | 60 | 5 | 1.000.000 de caractere |
| Întreprindere | 300 | 20 | 50.000 de caractere |
Înălțimea limită a ratei sunt incluse în fiecare răspuns: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Utilizarea caracterelor
| Serviciu | Costuri | Unitate |
|---|---|---|
| TTS (modele gratuite: Piper, VITS, MeloTTS) | 1000 de caractere | per 1000 de caractere |
| TTS (modele standard: Kokoro, CosyVoice 2, etc.) | 2000 de caractere | per 1000 de caractere |
| TTS (Modele premium: Tortoise, Chatterbox, etc.) | 4000 caractere | per 1000 de caractere |
| Discursul textului | 2000 de caractere | pe minut de audio |
| Clonarea vocală | 4000 caractere | per 1000 de caractere |
| Schimbător de voce | 3.000 de caractere | pe minut de audio |
| Îmbunătățire audio | 2000 de caractere | pe minut de audio |
| Eliminarea vocală / divizarea stemului | 3.000-4.000 caractere | pe minut de audio |
| Traducerea discursului | 5.000 de caractere | pe minut de audio |
| Conversare vocală | 3.000 de caractere | pe rând |
| Căutător de cheie & BPM | Gratuit | -- |
| Convertitor audio | Gratuit | -- |
Text la discurs
Convertiți textul în audio de voce. returnează fișierul audio în formatul solicitat.
Organismul de cerere
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| model | string | Nu. | Model ID (de exemplu, |
| text | string | Da. | Textul pentru a converti în vorbire. capac per-request: 500 chars (anonymous), 5.000 (cont liber), 1.000.000 (plan plătit). Introducerile lungi sunt latura server-chincate automat. |
| voice | string | Da. | ID voce (utilizați |
| format | string | Nu. | Format de ieșire: |
| speed | float | Nu. | Se vorbește multiplicator de viteză. Predefinit: |
| language | string | Nu. | Codul limbii (de exemplu |
| instructions | string | Nu. | Indici de acțiune / livrare (≤500 caractere). de exemplu |
| pronunciations | object | array | Nu. | Pronunțarea per-request omite. Ori |
| stream | boolean | Nu. | Activează răspunsul streaming. Predefinit: false |
Cerere de exemplu
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 etichete
Numerele, datele, moneda, numerele de telefon și acronimele în Formatul de date implicit în 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
interpretare-sub formă de Intrare Am vorbit ca 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 {
"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."
}Răspuns
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.
Discursul textului
Transcrie audio la text. Susține 99 de limbi cu auto-detectare.
Organismul de cerere (multipart/form-data)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| file | file | Da. | Fișier audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | Nu. | Modelul STT: |
| language | string | Nu. | Codul limbii. |
| timestamps | boolean | Nu. | Include marca de date a nivelului cuvântului. Predefinit: |
| diarize | boolean | Nu. | Activează diarizarea speakerului. Implicit: |
Răspuns
{
"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"
}
]
}
Clonarea vocală
Generați vocea într-o voce clonată. Încărcaţi un audio de referință și un text.
Organismul de cerere (multipart/form-data)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| reference_audio | file | Da. | Audio vocal de referință (10-30 secunde recomandate). Max 20MB. |
| text | string | Da. | Text pentru a vorbi în voce clonată. |
| model | string | Nu. | Model clonat: chatterbox (default), cosyvoice2, gpt-sovits |
| format | string | Nu. | Format de ieșire: |
| language | string | Nu. | Codul limbii ţintă. Trebuie susţinut de modelul ales. |
Răspuns
Returnează fișierul audio ca date binare, la fel ca punctul final TTS.
Schimbător de voce
Convertiți audio pentru a suna ca o voce diferită. Încărcaţi audio sursă și alegeți o voce țintă.
Organismul de cerere (multipart/form-data)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| file | file | Da. | Fișier audio sursă (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Da. | ID voce țintă pentru a converti în (utiliza |
| model | string | Nu. | Model de conversie vocală: openvoice (defect), knn-vc |
| format | string | Nu. | Format de ieșire: |
Cerere de exemplu
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
Răspuns
Returnează fișierul audio convertit ca date binare.
Traducerea discursului
Traduceţi audio vorbit dintr-o limbă în alta. Combinaţi discursul-în-text, traducere şi text-în-speech într-un singur apel.
Organismul de cerere (multipart/form-data)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| file | file | Da. | Fișier audio sursă în limba originală. Max 100MB. |
| target_language | string | Da. | Codul limbii ţintă (de exemplu, |
| voice | string | Nu. | Voce pentru ieșire tradusă. Auto-selectat dacă este omit. |
| preserve_voice | boolean | Nu. | Încearcă să păstreze caracteristicile vocale originale ale speakerului. Predefinit: |
Răspuns
{
"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
}
Discursul discursului
Transformați stilul de vorbire, emoție sau livrare în timp ce păstrați conținutul. Util pentru ajustarea tonului, pacing și expresivitate.
Organismul de cerere (multipart/form-data)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| file | file | Da. | Fișier audio de voce sursă. Max 50MB. |
| voice | string | Da. | ID voce țintă pentru discursul de ieșire |
| model | string | Nu. | Model: |
| emotion | string | Nu. | Emoție țintă: |
| speed | float | Nu. | Ajustarea vitezei: |
Răspuns
Returnează fișierul audio transformat ca date binare.
Unelte audio
Endpointe de procesare audio pentru îmbunătăţire, îndepărtare vocală, divizare stem, și mai mult.
Îmbunătățirea calității audio: denoise, îmbunătățește claritatea, super rezoluție.
| file file | Fișier audio pentru îmbunătățire |
| denoise boolean | Activează denoizarea (defect: true) |
| enhance_clarity boolean | Îmbunătățiți claritatea vorbirii (defect: adevărat) |
| super_resolution boolean | Calitatea audio de vârf (defect: fals) |
| strength integer | 1-3 (lumină, medie, puternică). |
Voci separate de instrumentale (îndepărtare vocală) sau împărțite în tulpini.
| file file | Fișier audio pentru separare |
| model string | demucs (implicit) sau spleeter |
| stems integer | Numărul tijelor: 2, 4, 5, sau 6 (defect: 2) |
| format string | Format de ieșire: |
Elimină eco și reverb din înregistrările audio.
| file file | Fișier audio de procesat |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analiză audio pentru a detecta cheie, BPM și semnătură de timp.
| file file | Fișier audio de analizat |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Convertește audio între formate.
| file file | Fișier audio de convertit |
| format string | Format țintă: |
| bitrate integer | Taxa de bits de ieșire în kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Rata eșantionului: 22050, 44100, 48000 |
| channels string | mono sau stereo |
Conversare vocală
Trimite audio sau text și primește un răspuns al IA cu discurs sintetizat.
Organismul de cerere (multipart/form-data sau JSON)
| Parametrul | Tip | Necesită | Descriere |
|---|---|---|---|
| audio | file | Nu.* | Introducere audio ( fie |
| text | string | Nu.* | Introducerea textului ( fie |
| voice | string | Nu. | Voce pentru răspunsul IA. Predefinit: |
| tts_model | string | Nu. | Modelul TTS pentru răspuns. Predefinit: |
| system_prompt | string | Nu. | Prompt de sistem personalizat pentru IA |
| conversation_id | string | Nu. | Continuați o conversație existentă |
Răspuns
{
"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
}
Serie TTS
Trimite mai multe texte pentru generarea paralelă a TTS. Opțional primește un apelback webhook atunci când toate locurile de muncă se completează.
Parametri
| Parametrul | Tip | Descriere |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Răspuns
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Progresul sondajului cu GET /v1/tts/batch/result/?batch_id=abc123
Incorporare vocală
Pre-compută o încorporare vocală din audio de referință. Utilizați incorporarea_id returnată în cererile ulterioare de clonare vocală pentru generarea aproape-instant.
Parametri
| Parametrul | Tip | Descriere |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Răspuns
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Verificarea sănătăţii
Verificați starea serverului GPU, modelele încărcate și dimensiunea coada. Nu este necesară autentificare. Cached timp de 30 de secunde.
Răspuns
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Listă modele
Întoarce o listă cu toate modelele disponibile cu capacitatea lor.
Răspuns
{
"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
}
]
}
Lista vocilor
Returnează o listă cu toate vocile disponibile, opțional filtrate prin model sau limbaj.
Parametrii cercetării
| Parametrul | Tip | Descriere |
|---|---|---|
| model | string | Filtru după ID-ul modelului (de exemplu |
| language | string | Filtrare prin cod limbaj (de exemplu |
| gender | string | Filtrat după gen: mascul , femal, neutral |
Răspuns
{
"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
}
Subtitrare (SRT / VTT) nou
Generați subtitrari sincronizate pentru orice job TTS finalizat. Execută alinierea Whisper pe audio și returnează SRT sau WebVTT. Rezultatul este cached pe disc astfel încât un al doilea apel pentru același uuid este un disc citit.
Parametrii cercetării
| Parametrul | Necesită | Descriere |
|---|---|---|
| uuid | Da. | Loc de muncă UUID a revenit de /v1/tts/ sau /v1/voce-clone/. |
| format | Nu. | |
| download | Nu. | |
| language | Nu. | Sfat la modelul de aliniere (detectat automat dacă este omis). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Dicţionar de pronunţare nou
Spune motorul TTS cum să pronunțe cuvinte specifice. Salvate înregistrări auto-apply la fiecare cerere TTS pe care o faceți. 200-intrare pe cont limită.
Organismul de cerere (POST)
| Parametrul | Tip | Descriere |
|---|---|---|
| word | string | Cuvânt de înlocuit (de exemplu |
| replacement | string | Cum să-l scrie pentru model (de exemplu jiff, ann THROP ick). |
| language | string | Codul ISO opțional. Goală = se aplică tuturor limbilor. |
| case_sensitive | boolean | Predefinit |
# 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-..."
De asemenea, puteți trece pe-request override fara a le salva — includeți
Articolul Narator nou
Aruncă un singur
<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>
Opțiuni
| Parametrul | Descriere |
|---|---|
data-pk | Cheia publicabilă (pk-tts-...). Restricții de domeniu aplicate prin câmpul autorizat_domains. |
data-voice | ID voce. Implicat |
data-model | ID model TTS. Defect kokoro. |
data-extract | |
data-position | |
data-color | Culoare Accent (cu orice culoare CSS). Predefinită |
data-min-chars / data-max-chars | Sari în bară dacă articolul este mai scurt decât min-chars (defectul 200). Introducerea max-chars (defectul 50.000). |
Widget buton de ascultare
Inline buton-style incrust. Renders alături de tag și joacă un fragment scurt cu buton-triggered. Diferente forme de la articolul Narrator de mai sus (care auto-injectă o bară pagini-spanning și nara întregul articol).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Voci salvate (Clone persistente)
Încărcaţi un audio de referinţă o dată, primiţi o voce_id persistentă, apoi referiţi-vă că id în cererile TTS în loc să reîncărcaţi audio fiecare apel. Ideal pentru integraţii de mare volum.
Încarcă o voce
POST
https://tts.ai/api/v1/user-voices/
Autorizare necesară
Formă multipart. Câmpuri: fișier (necesar, audio de 5-30), nume (necesar), limba (opțional, implicit en), model (opțional — auto-picks cosyvoice2 pentru zh/ja/ko altul openvoice), consimțământ_confirmat (necesit, orice valoare adevărată).
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"
}
Folosește vocea salvată în TTS
POST la /api/v1/tts/ (NOTE: gazda web VPS, nu api.tts.ai) cu user_voice_id. Vă încărcăm audio stocat și rută către conducte de clonare.
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ă / șterge
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
Arhivă / reactivează (gratuit)
Vocile arhivate rămân în contul dumneavoastră, dar nu pot fi folosite în TTS. Util pentru utilizatorii finali indormi astfel încât lista ta să rămână curată.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Exemple de cod
Text la discurs
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')}")
Discursul textului
# 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"])
Clonarea vocală
# 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)
Text la discurs
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();
Discursul textului
// 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);
Text la discurs
# 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
Discursul textului
# 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"
Clonarea vocală
# 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
Îmbunătățire audio
# 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
Coduri de eroare
Toate erorile returnează un răspuns JSON cu un error câmpul.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Starea HTTP | Cod eroare | Descriere |
|---|---|---|
| 400 | bad_request |
Parametrii de cerere nevalizi. Verificați mesajul de eroare pentru detalii. |
| 401 | unauthorized |
Cheia API lipsă sau nu este validă. |
| 402 | insufficient_credits |
Nu sunt destule personaje. Cumpără mai mult la /pricing /. |
| 403 | forbidden |
Nu aveți permisiunea de a accesa această resursă (de exemplu sondajul unui alt serviciu de utilizator). Accesul API în sine este inclus pe fiecare plan. |
| 404 | not_found |
Model sau voce negăsită. |
| 413 | file_too_large |
Fișierul încărcat depășește limita de dimensiune. |
| 429 | rate_limited |
Prea multe cereri. Verificați anteturile limită rate. |
| 500 | internal_error |
Eroare la server. Încearcă din nou mai târziu. |
| 503 | model_loading |
Modelul se încarcă. Încearcă în câteva secunde. |
Webhooks
Pentru sarcini de lungă durată (diviziune stem, lot TTS), puteți furniza un parametr webhook_url. Când sarcina se completează, vom POST rezultatul pe URL-ul dvs.
{
"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"
}
Gata pentru a construi?
Obțineți cheia API și începeți să integrați TTS.ai în aplicațiile dumneavoastră.