Documentare API

Integrați TTS.ai în aplicațiile dvs. cu API REST. Format compatibile cu OpenAI pentru o migrație ușoară.

API REST Compatibil cu OpenAI Răspunsuri ale JSON Suport de fluxuri

Prezentare generală

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

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

Toate cererile API necesită autentificare prin intermediul unui token Bearer în Authorization antet.

Header HTTP
Authorization: Bearer sk-tts-your-api-key-here
Ţine-ţi cheia API secretă. Nu-l împărtășiți în codul client-side, depozite publice sau loguri. Rotiți cheile cu regularitate din setările contului.

URL de bază

URL de bază: https://api.tts.ai/v1/

Toate punctele finale sunt legate de această URL de bază. De exemplu, punctul final TTS este:

POST https://api.tts.ai/v1/tts/

Limitele ratei

Limitele ratei API variază după plan:

Plan Cereri/min Concurrent Lungimea maximă a textului
Pro 60 5 5.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.

Costuri de credit

Serviciu Costuri Unitate
TTS (modele gratuite: Piper, VITS, MeloTTS) 1 credit per 1000 de caractere
TTS (modele standard: Kokoro, CosyVoice 2, etc.) 2 credite per 1000 de caractere
TTS (Modele premium: Tortoise, Chatterbox, etc.) 4 credite per 1000 de caractere
Discursul textului 2 credite pe minut de audio
Clonarea vocală 4 credite per 1000 de caractere
Schimbător de voce 3 credite pe minut de audio
Îmbunătățire audio 2 credite pe minut de audio
Eliminarea vocală / divizarea stemului 3-4 credite pe minut de audio
Traducerea discursului 5 credite pe minut de audio
Conversare vocală 3 credite pe rând
Căutător de cheie & BPM Gratuit --
Convertitor audio Gratuit --

Text la discurs

POST /v1/tts/

Convertiți textul în audio de voce. returnează fișierul audio în formatul solicitat.

Organismul de cerere

ParametrulTipNecesităDescriere
model string Da. ID-ul modelului (de exemplu, kokoro, chatterbox, piper)
text string Da. Text pentru a converti în vorbire (max 5.000 de caractere pentru Pro, 50.000 pentru Enterprise)
voice string Da. ID voce (utilizați /v1/voci/ pentru a lista vocile disponibile)
format string Nu. Format de ieșire: mp3 (default), wav, flac, ogg
speed float Nu. Se vorbește multiplicator de viteză. Predefinit: 1.0. Gama: 0.5 la 2.0
language string Nu. Codul limbii (de exemplu en , es). Detectat automat dacă este omis.
stream boolean Nu. Activează răspunsul streaming. Predefinit: false

Cerere de exemplu

cURL
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

Răspuns

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

Capitole de răspuns
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Discursul textului

POST /v1/stt/

Transcrie audio la text. Susține 99 de limbi cu auto-detectare.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesităDescriere
file file Da. Fișier audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nu. Modelul STT: whisper (defect), rapid-whisper, sensevoice
language string Nu. Codul limbii. auto pentru detectare automată (defect).
timestamps boolean Nu. Include marca de date a nivelului cuvântului. Predefinit: false
diarize boolean Nu. Activează diarizarea speakerului. Implicit: false

Răspuns

Răspuns JSON
{
  "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ă

POST /v1/tts/clone/

Generați vocea într-o voce clonată. Încărcaţi un audio de referință și un text.

Organismul de cerere (multipart/form-data)

ParametrulTipNecesită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: mp3 (defect), wav, flac
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

POST /v1/voice-convert/

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)

ParametrulTipNecesită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 /v1/voci/ pentru a lista vocile disponibile)
model string Nu. Model de conversie vocală: openvoice (defect), knn-vc
format string Nu. Format de ieșire: wav (defect), mp3, flac

Cerere de exemplu

cURL
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

POST /v1/speech-translate/

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)

ParametrulTipNecesităDescriere
file file Da. Fișier audio sursă în limba originală. Max 100MB.
target_language string Da. Codul limbii ţintă (de exemplu, es , fr, de, ja)
voice string Nu. Voce pentru ieșire tradusă. Auto-selectat dacă este omit.
preserve_voice boolean Nu. Încercarea de a păstra vorbitorul original

Răspuns

Răspuns JSON
{
  "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

POST /v1/speech-to-speech/

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)

ParametrulTipNecesită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: openvoice (defect), chatterbox
emotion string Nu. Emoție țintă: neutral, happy, sad, angry, excitat
speed float Nu. Ajustarea vitezei: 1.0 . Gama: 0.5 la 2.0

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.

POST /v1/audio/enhance/

Îmbunătățirea calității audio: denoise, îmbunătățește claritatea, super rezoluție.

file fileFișier audio pentru îmbunătățire
denoise booleanActivează denoizarea (defect: true)
enhance_clarity booleanÎmbunătățiți claritatea vorbirii (defect: adevărat)
super_resolution booleanCalitatea audio de vârf (defect: fals)
strength integer1-3 (lumină, medie, puternică).
POST /v1/audio/separate/

Voci separate de instrumentale (îndepărtare vocală) sau împărțite în tulpini.

file fileFișier audio pentru separare
model stringdemucs (implicit) sau spleeter
stems integerNumărul tijelor: 2, 4, 5, sau 6 (defect: 2)
format stringFormat de ieșire: wav, mp3, flac
POST /v1/audio/dereverb/

Elimină eco și reverb din înregistrările audio.

file fileFișier audio de procesat
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Gratuit

Analiză audio pentru a detecta cheie, BPM și semnătură de timp.

file fileFișier audio de analizat
Răspuns
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Gratuit

Convertește audio între formate.

file fileFișier audio de convertit
format stringFormat țintă: mp3, wav, flac, ogg, m4a, aac
bitrate integerTaxa de bits de ieșire în kbps: 64, 128, 192, 256, 320
sample_rate integerRata eșantionului: 22050, 44100, 48000
channels stringmono sau stereo

Conversare vocală

POST /v1/voice-chat/

Trimite audio sau text și primește un răspuns al IA cu discurs sintetizat.

Organismul de cerere (multipart/form-data sau JSON)

ParametrulTipNecesităDescriere
audio file Nu.* Introducere audio ( fie audio sau text necesar)
text string Nu.* Introducerea textului ( fie audio sau text necesar)
voice string Nu. Voce pentru răspunsul IA. Predefinit: af_bella
tts_model string Nu. Modelul TTS pentru răspuns. Predefinit: kokoro
system_prompt string Nu. Prompt de sistem personalizat pentru IA
conversation_id string Nu. Continuați o conversație existentă

Răspuns

Răspuns JSON
{
  "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
}

Listă modele

GET /v1/models/

Întoarce o listă cu toate modelele disponibile cu capacitatea lor.

Răspuns

Răspuns JSON
{
  "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

GET /v1/voices/

Returnează o listă cu toate vocile disponibile, opțional filtrate prin model sau limbaj.

Parametrii cercetării

ParametrulTipDescriere
model string Filtru după ID-ul modelului (de exemplu kokoro)
language string Filtrare prin cod limbaj (de exemplu en)
gender string Filtrat după gen: mascul , femal, neutral

Răspuns

Răspuns JSON
{
  "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
}

Exemple de cod

Text la discurs

Python - requests
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

Python - requests
# 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ă

Python - requests
# 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

JavaScript - fetch
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

JavaScript - fetch
// 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

cURL
# 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

cURL
# 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ă

cURL
# 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

cURL
# 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.

Format de răspuns la eroare
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Starea HTTPError CodeDescriere
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 suficiente credite. Cumpără mai mult la /pricing /.
403 forbidden Accesul API nu este disponibil pe planul dumneavoastră.
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.

Webhook Paylook
{
  "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"
}
Webhook results are available for download for 24 hours after completion. Make sure to download them promptly.

Gata pentru a construi?

Obțineți cheia API și începeți să integrați TTS.ai în aplicațiile dumneavoastră.