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.
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ó
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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 base
Tots els punts finals són relatius a aquest URL base. Per exemple, el punt d' acabament TTS és:
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
Converteix el text a l' àudio de parla. Retorna el fitxer d' àudio en el format sol· licitat.
Petició del cos
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| model | string | No | ID del model (e.g., < codicode>koro , < codiq >box , piper ) |
| text | string | Sí | Text a convertir al discurs (màx. 5000 caràcters per a Pro, 50.000 per a Enterprise) |
| voice | string | Sí | 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>, < 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 -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 Format de data per omissió per a 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
interpret- com Entrada He 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 mdy per a l' anglès i < Code> en un altre lloc; substitueix amb <> Codeformat=\{
"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
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.Exemple complet
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.
Paraula a text
Grava l' àudio a text. Accepta 99 idiomes amb auto- detectació.
Petició del cos (multipart/form-data)
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| file | file | Sí | Fitxer d' àudio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | No | Model ST: whisper (per defecte), |
| 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
{
"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
Genera un discurs en una veu clonada. Carregar un àudio de referència i text.
Petició del cos (multipart/form-data)
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| reference_audio | file | Sí | Àudio de veu de referència (10- 30 segons recomanat). Max 20MB. |
| text | string | Sí | Text a parlar en la veu clonada. |
| model | string | No | Model clonat: < maid>chatterbox (per defecte), < codiCode> , , |
| format | string | No | Format de sortida: mp3 (per omissió), < codiCode>, flac Code> |
| 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
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àmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| file | file | Sí | Fitxer d' àudio font (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Sí | 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 Code> |
| format | string | No | Format de sortida: < Code>wav (per omissió), < codi3 , < Code>flac |
Petició d' exemple
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
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àmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| file | file | Sí | Fitxer d' àudio font en l' idioma original. Max 100MB. |
| target_language | string | Sí | Codi de l' idioma de destí (e.g., sa , < icode>, <>de , , |
| 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
{
"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
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àmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| file | file | Sí | Fitxer d' àudio d' origen. Max 50MB. |
| voice | string | Sí | ID de veu de destí pel discurs de sortida |
| model | string | No | Model: openvoice (per omissió), chatterbox |
| emotion | string | No | Emulació de destí: neutric >, , 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.
Augmenta la qualitat de l' àudio: denosa, millora la claredat, super resolució.
| file file | Fitxer d' àudio a millorar |
| denoise boolean | Habilita la denominació (per omissió: cert) |
| enhance_clarity boolean | Millora la claredat de la parla (per omissió: cert) |
| super_resolution boolean | Qualitat d' escala d' àudio (per omissió: false) |
| strength integer | 1- 3 (light, suport, fort). Per omissió: 2 |
Separa les vocals dels instrumentals (eliminació de la potència) o dividits en mares.
| file file | Fitxer d' àudio a separar |
| model string | demucs (per omissió) o spleeter |
| stems integer | Nombre de mares: 2, 4, 5, o 6 (per defecte: 2) |
| format string | Format de sortida: < Code>wav , < Code3 Code >, < Code>flac |
Elimina l' eco i el reverbi de les gravacions d' àudio.
| file file | Fitxer d' àudio a processar |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analitzeu àudio per a detectar la clau, BPM i la signatura del temps.
| file file | Fitxer d' àudio a analitzar |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Converteix l' àudio entre formats.
| file file | Fitxer d' àudio a convertir |
| format string | Format de destí: mp3 , < codifica>, < codifica >, < encoding>flac , , < key3 >, < CodeX > |
| bitrate integer | Taxa de bits de sortida en kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Taxa de mostreig: 22050, 44100, 4800 |
| channels string | mono o stereo |
Xat de veu
Envieu àudio o text i rebeu una resposta de IA amb el discurs sintetitzat.
Petició del cos (multipart/form-data o JSON)
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
| 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
{
"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
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àmetre | Tipus | Descripció |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | L' URL opcional als resultats de POST en finalitzar el lot. |
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
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àmetre | Tipus | Descripció |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Resposta
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Comprovació de salut
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
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Models de llista
Retorna una llista de tots els models disponibles amb les seves capacitats.
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
Retorna una llista de totes les veus disponibles, opcionalment filtrades per model o idioma.
Paràmetres de consulta
| Paràmetre | Tipus | Descripció |
|---|---|---|
| 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 , |
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
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àmetre | Requerit | Descripció |
|---|---|---|
| uuid | Sí | Job UUID ha retornat per / v1/tts / o /v1/voice-clone /. |
| format | No | rt (per omissió) o vt . |
| download | No | 1 per enviar - Disposition: adjunt per tant el navegador desa en comptes de mostrar. |
| language | No | Consell al model d' alineació (es detecta automàticament si s' omet). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Diccionari de pronunciació nousdefault filter name
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àmetre | Tipus | Descripció |
|---|---|---|
| word | string | Paraula a substituir (p. ex. GIF , Anthropic ). S' aparella Word- Roundary. |
| replacement | string | Com s' ha d' escriure pel model (p. ex. jff , anWROnJPick ). |
| language | string | Codi ISO opcional. Buit = aplica a tots els idiomes. |
| case_sensitive | boolean | false . Concorda exactament quan 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-..."
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