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

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.

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

Todos os pedidos de API requerem autenticação através de 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.

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 Concurrent Comprimento máximo do texto
Pro 60 5 5000 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 crédito por 1.000 caracteres
TTS (Modelos standard: Kokoro, CosyVoice 2, etc.) 2 créditos por 1.000 caracteres
TTS (Modelos de prémio: Tortoise, Chatterbox, etc.) 4 créditos por 1.000 caracteres
Discurso ao texto 2 créditos por minuto de áudio
Clonagem de Voz 4 créditos por 1.000 caracteres
Mudante de voz 3 créditos por minuto de áudio
Melhoria do áudio 2 créditos por minuto de áudio
Remoção Vocal / Separação de estirpe 3-4 créditos por minuto de áudio
Tradução da Fonoaudiologia 5 créditos por minuto de áudio
Chat de Voz 3 créditos 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 Sim ID do modelo (por exemplo, kokoro, chatterbox, piper)
text string Sim Texto para converter para fala (máx 5.000 caracteres para Pro, 50.000 para Enterprise)
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.
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

Resposta

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

Cabeçalhos de Resposta
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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 o falante original

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

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
}

Exemplos de código

Texto ao Discurso

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

Discurso ao texto

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

Clonagem de Voz

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)

Texto ao Discurso

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

Discurso ao texto

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

Texto ao Discurso

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

Discurso ao texto

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"

Clonagem de Voz

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

Melhoria do á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

Códigos de Erro

Todos os erros retornam uma resposta JSON com um error campo.

Formato de Resposta de Erro
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Estado HTTPError CodeDescrição
400 bad_request Parâmetros de pedido inválidos. Verifique a mensagem de erro para mais detalhes.
401 unauthorized Chave API faltante ou inválida.
402 insufficient_credits Não os créditos suficientes. Compra mais em /pricing /.
403 forbidden Acesso API não disponível no seu plano.
404 not_found Modelo ou voz não encontrado.
413 file_too_large O arquivo carregado excede o limite de tamanho.
429 rate_limited Demasiados pedidos. Verifique os headers do limite de taxa.
500 internal_error Erro do servidor. Tente de novo mais tarde.
503 model_loading O modelo está carregando. Volte a tentar em alguns segundos.

Webhooks

Para tarefas de longo prazo (divisão de stem, batch TTS), você pode fornecer um webhook_url parâmetro. Quando a tarefa se completa, nós vamos POST o resultado para o seu URL.

Webhook Carga útil
{
  "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"
}
Os resultados do Webhook estão disponíveis para download por 24 horas após a conclusão. Certifique-se de os baixar rapidamente.

Pronto para Construir?

Obtenha a sua chave API e comece a integrar o TTS.ai em suas aplicações.