Documentação da API

Integrar TTS.ai em suas aplicações com a nossa API REST. Formato compatível com o OpenAI para fácil migração.

API REST OpenAI Compatível Respostas do JSON Suporte de Streaming

Visão geral

A API TTS.ai oferece acesso programático a todas as funcionalidades da plataforma: síntese de texto a voz, transcrição de voz a texto, clonagem de voz, melhoramento de áudio e muito mais. A API usa convenções REST padrão com corpos de pedido/resposta JSON.

Chave da API

Obtenha a sua chave API de Configurações da Conta. Disponível nos planos Pro e Enterprise.

URL de base

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

Auth

Token de portador através de Authorization cabeçalho

Autenticação

Nível livre — não é necessária qualquer chave. POStos Anônimos a /v1/tts/ trabalhar sem qualquer auth, até 5.000 caracteres/dia por IP, usando qualquer um dos nossos modelos livres (piper, vits, melotts, kokoro). Inscreva-se para uma conta gratuita para obter 15.000 personagens de bônus e acesso a modelos premium.

Para modelos premium e limites de taxa mais elevados, autentifique-se com um token de Bearer no Authorization cabeçalho.

Cabeçalho HTTP
Authorization: Bearer sk-tts-your-api-key-here
Manter sua chave API secreta. Não compartilhe isso no código do lado do cliente, repositórios públicos ou logs. Gire as chaves regularmente a partir das configurações da sua conta.

SDKs

Os SDKs oficiais tornam fácil integrar TTS.ai em sua aplicação. Ambos são de código aberto e disponíveis no 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 de base

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

Todos os endpoints são relativos a esta URL base. Por exemplo, o endpoint TTS é:

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

Limites de taxa

Os limites de taxa da API variam por plano:

Plano Pedidos/min Concorrente Comprimento máximo do texto
Grátis 10 2 500 caracteres
Início 30 3 Milhões de caracteres
Pro 60 5 Milhões de caracteres
Empresa 300 20 50.000 caracteres

Os cabeçalhos-limite da taxa estão incluídos em cada resposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Custos de crédito

Serviço Custo Unidade
TTS (Modelos gratuitos: Piper, VITS, MeloTTS) 1.000 caracteres por 1.000 caracteres
TTS (Modelos standard: Kokoro, CosyVoice 2, etc.) 2.000 caracteres por 1.000 caracteres
TTS (Modelos de prémio: Tortoise, Chatterbox, etc.) 4.000 caracteres por 1.000 caracteres
Discurso ao texto 2.000 caracteres por minuto de áudio
Clonagem de Voz 4.000 caracteres por 1.000 caracteres
Mudante de voz 3.000 caracteres por minuto de áudio
Melhoria do áudio 2.000 caracteres por minuto de áudio
Remoção Vocal / Separação de estirpe 3.000-4.000 caracteres por minuto de áudio
Tradução da Fonoaudiologia 5.000 caracteres por minuto de áudio
Chat de Voz 3.000 caracteres por turno
Key & BPM Finder Grátis --
Conversor de Áudio Grátis --

Texto ao Discurso

POST /v1/tts/

Converter texto para áudio de voz. Devolve o arquivo de áudio no formato solicitado.

Órgão de Pedido

ParâmetroTipoRequeridoDescrição
model string Não ID do modelo (por exemplo, kokoro, chatterbox, piper). Se for omitido, escolhemos um modelo que suporta o pedido lingkokoro para en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper para outras línguas suportadas (ar/pl/nl/cs/da/el/hu/tr/uk/vi/etc.).
text string Sim Texto para converter em fala. Tampa por pedido: 500 chars (anonymous), 5.000 (conta livre), 1.000.000 (plano pago). Inputs longos são o lado do servidor auto-choque.
voice string Sim ID de voz (use /v1/voces/ para listar vozes disponíveis)
format string Não Formato de saída: mp3 (por defeito), wav, flac, ogg
speed float Não Falando multiplicador de velocidade. Predefinido: 1.0 . Gama: 0.5 para 2.0
language string Não Código do idioma (por exemplo, en , es). Detectado automaticamente se omitido.
instructions string Não Indicações de atuação / entrega (≤500 caracteres). por exemplo \
pronunciations object | array Não A pronúncia por pedido sobrescreve. Ou {\
stream boolean Não Activar a resposta ao streaming. Por omisión: false

Pedido de Exemplo

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

Etiquetas SSML

Envolva números, datas, moeda, números de telefone e siglas em

interpretar-comoEntradaFalou como
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

Formato de data padrão para mdy para inglês e dmy em outro lugar; sobrescrever com format=\

Exemplo
{
  "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.

Full example

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.

Discurso ao texto

POST /v1/stt/

Transcriba áudio para texto. Apoia 99 idiomas com auto-detecção.

Órgão de Pedido (multipart/form-data)

ParâmetroTipoRequeridoDescrição
file file Sim Arquivo de áudio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Não Modelo STT: whisper (por defeito), faster-whisper, sensevoice
language string Não Código do idioma. auto para autodetecção (por defeito).
timestamps boolean Não Incluir selos de tempo de nível de palavra. Por omisión: false
diarize boolean Não Activar a diarização do alto-falante. Por omisión: false

Resposta

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

Clonagem de Voz

POST /v1/tts/clone/

Gerar a fala em voz clonada. Envie um áudio de referência e texto.

Órgão de Pedido (multipart/form-data)

ParâmetroTipoRequeridoDescrição
reference_audio file Sim áudio de voz de referência (10-30 segundos recomendados). Max 20MB.
text string Sim Texto para falar na voz clonada.
model string Não Modelo clone: chatterbox (por defeito), cosyvoice2, gpt-sovits
format string Não Formato de saída: mp3 (por defeito), wav, flac
language string Não Código da língua-alvo. Deve ser suportado pelo modelo escolhido.

Resposta

Devolve o arquivo de áudio como dados binários, como o endpoint TTS.

Mudante de voz

POST /v1/voice-convert/

Converte áudio para som como uma voz diferente. Carregue áudio fonte e escolha uma voz de destino.

Órgão de Pedido (multipart/form-data)

ParâmetroTipoRequeridoDescrição
file file Sim Arquivo de áudio de origem (MP3, WAV, FLAC). Max 50MB.
target_voice string Sim ID de voz alvo para converter (use /v1/voces/ para listar as vozes disponíveis)
model string Não Modelo de conversão de voz: openvoice (default), knn-vc
format string Não Formato de saída: wav (por defeito), mp3, flac

Pedido de Exemplo

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

Devolve o arquivo de áudio convertido como dados binários.

Tradução da Fonoaudiologia

POST /v1/speech-translate/

Traduzir áudio falado de uma língua para outra. Combina a fala-a-texto, a tradução e o texto-a- voz em uma única chamada.

Órgão de Pedido (multipart/form-data)

ParâmetroTipoRequeridoDescrição
file file Sim Arquivo de áudio de origem na língua original. Max 100MB.
target_language string Sim Código da língua-alvo (por exemplo, es, fr, de, ja)
voice string Não Voz para saída traduzida. Auto-selecionado se omitido.
preserve_voice boolean Não Tentar preservar as características de voz do alto-falante original. Por defeito: false

Resposta

Resposta 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
}

Discurso

POST /v1/speech-to-speech/

Transformar o estilo de fala, a emoção ou a entrega mantendo o conteúdo. Útil para ajustar o tom, o ritmo e a expressividade.

Órgão de Pedido (multipart/form-data)

ParâmetroTipoRequeridoDescrição
file file Sim Arquivo de áudio de fala de origem. Max 50MB.
voice string Sim Identificador de voz alvo para a fala de saída
model string Não Modelo: openvoice (por defeito), chatterbox
emotion string Não Emoção alvo: neutral, happy, sad, angry, excitado
speed float Não Ajuste de velocidade. Predefinido: 1.0 . Gama: 0.5 para 2.0

Resposta

Devolve o arquivo de áudio transformado como dados binários.

Ferramentas de Áudio

Endpoints de processamento de áudio para realce, remoção vocal, divisão de tronco, e muito mais.

POST /v1/audio/enhance/

Melhorar a qualidade do áudio: denoise, melhorar a clareza, super resolução.

file fileArquivo de áudio para melhorar
denoise booleanActivar a denoização (por omisión: true)
enhance_clarity booleanMelhorar a clareza da fala (por defeito: verdadeiro)
super_resolution booleanQualidade de áudio elevada (por defeito: false)
strength integer1-3 (luz, médio, forte). Predefinido: 2
POST /v1/audio/separate/

Vocais separados dos instrumentos (remoção vocal) ou divididos em caules.

file fileFicheiro de áudio a separar
model stringdemucs (padrão) ou spleeter
stems integerNúmero de troncos: 2, 4, 5, ou 6 (por omisión: 2)
format stringFormato de saída: wav, mp3, flac
POST /v1/audio/dereverb/

Remover eco e reverber das gravações de áudio.

file fileFicheiro de áudio para processar
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Grátis

Analise áudio para detectar chave, BPM e assinatura de tempo.

file fileFicheiro de áudio para analisar
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/ Grátis

Converter áudio entre formatos.

file fileFicheiro de áudio para converter
format stringFormato de destino: mp3, wav, flac, ogg, m4a, aac
bitrate integerTaxa de bits de saída em kbps: 64, 128, 192, 256, 320
sample_rate integerTaxa de amostragem: 22050, 44100, 48000
channels stringmono ou stereo

Chat de Voz

POST /v1/voice-chat/

Envie áudio ou texto e receba uma resposta IA com fala sintetizada.

Órgão de Pedido (multipart/form-data ou JSON)

ParâmetroTipoRequeridoDescrição
audio file Não* Entrada de áudio (ou audio ou texto requerido)
text string Não* Entrada de texto (quer audio ou texto requerido)
voice string Não Voz para resposta da IA. Por defeito: af_bella
tts_model string Não Modelo TTS para resposta. Por defeito: kokoro
system_prompt string Não Prompt de sistema personalizado para a IA
conversation_id string Não Continuar uma conversa existente

Resposta

Resposta 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
}

Lote TTS

POST /v1/tts/batch/

Enviar múltiplos textos para a geração paralela de TTS. Opcionalmente receber um webhook callback quando todos os trabalhos terminam.

Parâmetros

ParâmetroTipoDescrição
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Resposta

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

Progresso da pesquisa com GET /v1/tts/batch/result/?batch_id=abc123

Incorporação de Voz

POST /v1/voice-embed/

Pre-computar uma inserção de voz a partir de áudio de referência. Use o íd devolvido em pedidos subsequentes de clonagem de voz para geração de quase-instante.

Parâmetros

ParâmetroTipoDescrição
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Resposta

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

Verificação da saúde

GET /v1/health/

Verifique o estado do servidor GPU, os modelos carregados e o tamanho da fila. Não é necessária autenticação. Cached por 30 segundos.

Resposta

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

Listar os Modelos

GET /v1/models/

Devolve uma lista de todos os modelos disponíveis com suas capacidades.

Resposta

Resposta 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
    }
  ]
}

Listar Vozes

GET /v1/voices/

Devolve uma lista de todas as vozes disponíveis, opcionalmente filtradas por modelo ou idioma.

Parâmetros da Consulta

ParâmetroTipoDescrição
model string Filtrar por ID do modelo (por exemplo, kokoro)
language string Filtrar por código da língua (por exemplo, en )
gender string Filtrar por gênero: masculino , masculino, neutral

Resposta

Resposta 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
}

Subtítulos (SRT / VTT) novo

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

Gerar legendas sincronizadas para qualquer tarefa TTS completada. Execute o alinhamento do Whisper sobre o áudio e devolve o SRT ou o WebVTT. O resultado é cacheado no disco para que uma segunda chamada para o mesmo uuid seja uma leitura de disco.

Parâmetros da Consulta

ParâmetroRequeridoDescrição
uuidSimEmprego UUID retornado por /v1/tts/ ou /v1/voice-clone/.
formatNãosrt (por defeito) ou vtt.
downloadNão1 para enviar Content-Disposition: anexo para que o navegador salve em vez de exibir.
languageNãoSugestão para o modelo de alinhamento (detectado automaticamente se omitido).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Dicionário de pronunciação novo

GET POST DELETE /api/v1/pronunciations/

Diga ao motor TTS como pronunciar palavras específicas. Entradas guardadas automaticamente-aplicação a cada pedido TTS que você faz. 200 entradas por limite de conta.

Órgão de Pedido (POST)

ParâmetroTipoDescrição
wordstringPalavra para substituir (por exemplo, GIF, Anthropic).
replacementstringComo escrever para o modelo (por exemplo, jiff, ann THROP ick).
languagestringCódigo ISO opcional. Vazio = aplica-se a todas as línguas.
case_sensitivebooleanPor defeito false . Coincidir com a caixa exatamente quando 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-..."

Você também pode passar por pedido sobrescreve sem salvá-los — incluem pronunciações em qualquer /v1/tts/ call como um objeto ou um array (ver os parâmetros do ponto final do TTS).

Artigo Narrador novo

Deixe um único