Documentació de l' API

Integra TTS.ai a les vostres aplicacions amb la nostra API REST. Format compatible amb l' OpenAI per a una migració fàcil.

API REST OpenAI Competible JSON respostes Implementació de corrent de dades

Resum

L' API TTS.ai proporciona accés programàtic a totes les característiques de la plataforma: síntesi de text a veu, transcripció de text a text, clonació de veu, millores de l' àudio i més. L' API usa convencions estàndard RESTs amb cossos JSON/respons.

Clau API

Obtén la vostra clau API de Arranjament del compte. Disponibles en plans de Pro i Enterprise.

URL base

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

Autentifica

Testimoni de l'ós a través de Authorization capçalera

Autenticació

No es requereix cap clau per a la corbata lliure. POST anònim a /v1/tts/ treball sense autorització, fins a 5.000 caràcters/ dia per IP, utilitzant qualsevol dels nostres models lliures (piper, vits, melotts, kokoro). Un compte lliure per aconseguir 15.000 caràcters de bonificació i accés als models de primera línia.

Totes les sol· licituds de l' API requereixen autenticació mitjançant una fitxa de l' Bearer en Authorization capçalera.

Capçalera HTTP
Authorization: Bearer sk-tts-your-api-key-here
Mantén el secret de la vostra clau API. No el comparteixis amb codi client, repositoris públics, o registres. Gira les tecles regularment des del vostre arranjament de comptes.

SDKs

Official SDKs make it easy to integrate TTS.ai into your application. Both are open source and available on 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")
GitHub

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');
GitHub

URL base

URL base: https://api.tts.ai/v1/

Tots els punts finals són relatius a aquest URL base. Per exemple, el punt d' acabament TTS és:

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

Límits de taxa

Límits de taxa API va variar pel pla:

Pla Peticions/min Concurrent Longitud màx. de text
Lliure 10 2 500 caràcters
Iniciador 30 3 1.000, 10.000 caràcters
Pro 60 5 1.000, 10.000 caràcters
EnterpriseDescription 300 20 50.000 caràcters

S' inclouen les capçaleres límit en cada resposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Costs de crèdit

Servei Cost Unitat
TTS ( Models disponibles: Pipista, VITS, MeloTTS) 1 crèdit per 1000 caràcters
TTS ( models estàndards: Kokoro, CosyVoice 2, etc.) 2 crèdits per 1000 caràcters
Models TTS (Premium: Tortose, Chatterbox, etc.) 4 crèdits per 1000 caràcters
Paraula a text 2 crèdits per minut d' àudio
Clon de veu 4 crèdits per 1000 caràcters
Canviador de veu 3 crèdits per minut d' àudio
Millora d' àudio 2 crèdits per minut d' àudio
Vocal Eliminat / Stem Spliting 3- 4 crèdits per minut d' àudio
Traducció de veu 5 crèdits per minut d' àudio
Xat de veu 3 crèdits per torn
Cercador de claus & BPM Lliure --
Convertidor d' àudio Lliure --

Text a veu

POST /v1/tts/

Converteix el text a l' àudio de parla. Retorna el fitxer d' àudio en el format sol· licitat.

Petició del cos

ParàmetreTipusRequeritDescripció
model string No ID del model (e.g., < codicode>koro , < codiq >box , piper )
text string Text a convertir al discurs (màx. 5000 caràcters per a Pro, 50.000 per a Enterprise)
voice string ID de veu (useu < codifica >/v1/voices/ per a llistar les veus disponibles)
format string No Format de sortida: mp3 (per omissió), < codi fontv , < Code>flac ,
speed float No multiplicador de velocitat de parlant. Per omissió: 1. 0 . Interval: 0. 5 a 0. 0
language string No Codi d' idioma (e.g., en , < codifica >). Auto- detectat si s' omet.
instructions string No Actuant / sub- lliuraments (500 caràcters). p. ex. < Code>\
pronunciations object | array No La pronunciació Per- request sobreescriu. O bé {\
stream boolean No Habilita la resposta de llançament. Per omissió: false

Petició d' exemple

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

Etiquetes SSML

Ajusta els números, dates, números de moneda, números de telèfon i acrònims en

interpret- comEntradaHe parlat com
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-3130 de desembre, 1999-9
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

Format de data per omissió per a mdy per a l' anglès i < Code> en un altre lloc; substitueix amb <> Codeformat=\

Exemple
{
  "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."
}

Resposta

The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.

Step 1: Submit request

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Exemple complet

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

Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.

Paraula a text

POST /v1/stt/

Grava l' àudio a text. Accepta 99 idiomes amb auto- detectació.

Petició del cos (multipart/form-data)

ParàmetreTipusRequeritDescripció
file file Fitxer d' àudio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string No Model ST: whisper (per defecte), thisper , senvoice
language string No Codi d' idioma. Autodecode > per a la detectació automàtica (per defecte).
timestamps boolean No Inclou marques de temps de nivell de paraula. Per omissió: false
diarize boolean No Habilita la diarització de l' altaveu. Per omissió: < codifica >

Resposta

JSON Resposta
{
  "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"
    }
  ]
}

Clon de veu

POST /v1/tts/clone/

Genera un discurs en una veu clonada. Carregar un àudio de referència i text.

Petició del cos (multipart/form-data)

ParàmetreTipusRequeritDescripció
reference_audio file Àudio de veu de referència (10- 30 segons recomanat). Max 20MB.
text string Text a parlar en la veu clonada.
model string No Model clonat: < maid>chatterbox (per defecte), < codiCode> , , g- spt-sovits
format string No Format de sortida: mp3 (per omissió), < codiCode>, flac
language string No Codi de l' idioma de destí. Cal acceptar el model escollit.

Resposta

Retorna el fitxer d' àudio com a dades binaris, igual que el punt d' acabament TTS.

Canviador de veu

POST /v1/voice-convert/

Converteix l' àudio al so com una veu diferent. Puja l' àudio de la font i escolliu una veu de destí.

Petició del cos (multipart/form-data)

ParàmetreTipusRequeritDescripció
file file Fitxer d' àudio font (MP3, WAV, FLAC). Max 50MB.
target_voice string ID de la veu de destí a convertir (usa /v1/voices/ per a llistar les veus disponibles)
model string No Model de conversió de veu: openvoice (per omissió), < codiCode> kn- vc
format string No Format de sortida: < Code>wav (per omissió), < codi3 , < Code>flac

Petició d' exemple

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

Resposta

Retorna el fitxer d' àudio convertit com a dades binaris.

Traducció de veu

POST /v1/speech-translate/

Traduïu àudio parlant d' una llengua d' una llengua a una altra. Combina el text a text, traducció i text a veu en una sola crida.

Petició del cos (multipart/form-data)

ParàmetreTipusRequeritDescripció
file file Fitxer d' àudio font en l' idioma original. Max 100MB.
target_language string Codi de l' idioma de destí (e.g., sa , < icode>, <>de , , , < key> >)
voice string No Veu per a la sortida traduïda. S' ha seleccionat automàticament si s' omet.
preserve_voice boolean No Intenta preservar l' altaveu original

Resposta

JSON Resposta
{
  "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
}

Paraula a veu

POST /v1/speech-to-speech/

Estil de llenguatge transformador, emoció, o entrega mentre manté el contingut. És útil per ajustar el to, ritme i expressibilitat.

Petició del cos (multipart/form-data)

ParàmetreTipusRequeritDescripció
file file Fitxer d' àudio d' origen. Max 50MB.
voice string ID de veu de destí pel discurs de sortida
model string No Model: openvoice (per omissió), chatterbox
emotion string No Emulació de destí: neutric >, , < codificad>ad , angry >, ,
speed float No Ajustament de velocitat. Per omissió: 1. 0 . Interval: 0. 5 a 2. 0

Resposta

Retorna el fitxer d' àudio transformat com a dades binaris.

Eines d' àudio

El processament de punts d'àudio per millorar, l'eliminació vocal, la part mare, i més.

POST /v1/audio/enhance/

Augmenta la qualitat de l' àudio: denosa, millora la claredat, super resolució.

file fileFitxer d' àudio a millorar
denoise booleanHabilita la denominació (per omissió: cert)
enhance_clarity booleanMillora la claredat de la parla (per omissió: cert)
super_resolution booleanQualitat d' escala d' àudio (per omissió: false)
strength integer1- 3 (light, suport, fort). Per omissió: 2
POST /v1/audio/separate/

Separa les vocals dels instrumentals (eliminació de la potència) o dividits en mares.

file fileFitxer d' àudio a separar
model stringdemucs (per omissió) o spleeter
stems integerNombre de mares: 2, 4, 5, o 6 (per defecte: 2)
format stringFormat de sortida: < Code>wav , < Code3 , < Code>flac
POST /v1/audio/dereverb/

Elimina l' eco i el reverbi de les gravacions d' àudio.

file fileFitxer d' àudio a processar
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Lliure

Analitzeu àudio per a detectar la clau, BPM i la signatura del temps.

file fileFitxer d' àudio a analitzar
Resposta
{
  "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/ Lliure

Converteix l' àudio entre formats.

file fileFitxer d' àudio a convertir
format stringFormat de destí: mp3 , < codifica>, < codifica >, < encoding>flac , ogg>, < key4a , < key3 >, < CodeX >
bitrate integerTaxa de bits de sortida en kbps: 64, 128, 192, 256, 320
sample_rate integerTaxa de mostreig: 22050, 44100, 4800
channels stringmono o stereo

Xat de veu

POST /v1/voice-chat/

Envieu àudio o text i rebeu una resposta de IA amb el discurs sintetitzat.

Petició del cos (multipart/form-data o JSON)

ParàmetreTipusRequeritDescripció
audio file No* Entrada d' àudio (ja sigui adio o < coditext > requerit)
text string No* Entrada de text (ja sigui audeio o < coditext > requerit)
voice string No Veu per resposta de la IA. Per omissió: af_ella
tts_model string No Model TTS per resposta. Per omissió: koro
system_prompt string No Petició personalitzada del sistema per a la IA
conversation_id string No Continua una conversa existent

Resposta

JSON Resposta
{
  "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
}

TTS per lots

POST /v1/tts/batch/

Envia múltiples texts per a la generació TTS paral· lel. Opcionalment rebeu una trucada web del ganxo quan s' hagin completat tots els treballs.

Paràmetres

ParàmetreTipusDescripció
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringL' URL opcional als resultats de POST en finalitzar el lot.

Resposta

JSON Resposta
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Progrés de la comprovació amb / v1/ tts/ batch/result /? batch_ id=abc123

Encastat de veu

POST /v1/voice-embed/

Precompte una veu incrustada des de l' àudio de referència. Useu el retorn encastat de l' id en les sol· licituds de clonació de veu per a una generació propera.

Paràmetres

ParàmetreTipusDescripció
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Resposta

JSON Resposta
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Comprovació de salut

GET /v1/health/

Comproveu l' estat del servidor de la GPU, els models carregats i la mida de la cua. No es requereix autenticació. S' ha desat durant 30 segons.

Resposta

JSON Resposta
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Models de llista

GET /v1/models/

Retorna una llista de tots els models disponibles amb les seves capacitats.

Resposta

JSON Resposta
{
  "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
    }
  ]
}

Llista de Global Voices

GET /v1/voices/

Retorna una llista de totes les veus disponibles, opcionalment filtrades per model o idioma.

Paràmetres de consulta

ParàmetreTipusDescripció
model string Filtre per ID de model (p. ex., < codicode>koro )
language string Filtre per codi d' idioma (p. ex., en )
gender string Filtre per gènere: Sate , , neutal

Resposta

JSON Resposta
{
  "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
}

Subtítols (SRT / VTT) nousdefault filter name

GET /v1/speech/subtitles/?uuid=<job_uuid>&format=srt|vtt&download=1

Genera subtítols sincronitzats per a qualsevol treball TTS completats. Executa l' alineació Rumors sobre l' àudio i retorna SRT o WebVT. El resultat es desa en el disc de manera que una segona crida al mateix uUID és un disc.

Paràmetres de consulta

ParàmetreRequeritDescripció
uuidJob UUID ha retornat per / v1/tts / o /v1/voice-clone /.
formatNort (per omissió) o vt .
downloadNo1 per enviar - Disposition: adjunt per tant el navegador desa en comptes de mostrar.
languageNoConsell al model d' alineació (es detecta automàticament si s' omet).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Diccionari de pronunciació nousdefault filter name

GET POST DELETE /api/v1/pronunciations/

Digueu al motor TTS com pronunciar paraules específiques. Les entrades desades automàticament a totes les sol· licituds TTS que feu. 200 entrades per compte.

Petició del cos (POST)

ParàmetreTipusDescripció
wordstringParaula a substituir (p. ex. GIF , Anthropic ). S' aparella Word- Roundary.
replacementstringCom s' ha d' escriure pel model (p. ex. jff , anWROnJPick ).
languagestringCodi ISO opcional. Buit = aplica a tots els idiomes.
case_sensitivebooleanfalse . Concorda exactament quan true .
cURL
# 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-..."

També podeu passar per- requesta sense desar- los inclou les cadenes en qualsevol / v1/ tts/ Call com un objecte o una matriu (mireu els params del punt TTS).

Article Narrador nousdefault filter name

Deixeu una única etiqueta