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ó

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 100.000 caràcters
Pro 60 5 100.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 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.
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

Resposta

Retorna el fitxer d' àudio com a dades binaris amb apropiat < codiContent- type capçalera (audio/mpeg , audio/wav , etc.).

Capçaleres d' resposta
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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_urlstringOptional URL to POST results when batch completes.

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
}

Exemples de codi

Text a veu

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')}")

Paraula a text

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"])

Clon de veu

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 a veu

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();

Paraula a text

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 a veu

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

Paraula a text

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"

Clon de veu

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

Millora d' àudio

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

Codis d' error

Tots els errors retornen una resposta JSON amb una error En el camp.

Format de resposta d' error
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
Estat HTTPCodi d' errorDescripció
400 bad_request Paràmetres de peticions no vàlids. Comproveu el missatge d' error pels detalls.
401 unauthorized Falta o no és vàlida la clau de l' API.
402 insufficient_credits No hi ha prou crèdits. Comprant més a / pricing /.
403 forbidden L' accés a l' API no està disponible en el vostre pla.
404 not_found No s' ha trobat el model o la veu.
413 file_too_large El fitxer pujat supera el límit de mida.
429 rate_limited Massa peticions. Comprova les capçaleres limitades de taxa.
500 internal_error Error del servidor. Torneu- ho a provar més tard.
503 model_loading El model està carregant. Reintentant en uns segons.

Descomunts web

Per a tasques a llarg termini (sem dividir, lot TTS), podeu proporcionar un paràmetre < codiweb descommix_url . Quan la tasca completi, millorarem el resultat a la vostra URL.

Càrrega útil per a l' estructura web
{
  "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"
}
Els resultats del conducte web estan disponibles per a descarregar- se 24 hores després de finalitzar. Assegureu- vos de descarregar- los ràpidament.

Preparat per a construir?

Obtenir la vostra clau API i comenceu a integrar TTS.ai a les vostres aplicacions.