Text-to-speech: ElevenLabs, OpenAI, Cartesia
- ⬜🎤 Speech-to-text: Whisper e alternativas(Voice, Vision & Multimodal)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Três provedores, três otimizações
| Eixo priorizado | Preço aproximado | Adequado a | Sacrifica |
|---|---|---|---|
| Qualidade e clonagem de voz | Mais alto | Audiolivro, voz de marca, podcast | Latência e custo |
| Custo e simplicidade | Mais baixo | Assistente que só precisa falar razoavelmente | Naturalidade e vozes próprias |
| Latência até o primeiro áudio | Intermediário | Conversa em tempo real, telefonia | Um pouco de qualidade |
| Execução local | Sem custo por uso | Dado que não pode sair | Qualidade e trabalho de operação |
TTS moderno divide-se em três campos claros. ElevenLabs lidera em qualidade e voice cloning. OpenAI TTS-1/TTS-1-HD entrega vozes sólidas por preço baixo e integração trivial. Cartesia Sonic foi construído para latência absurdamente baixa (modelo state-space, TTFA <90ms). Escolher significa decidir qual eixo é prioridade.
ElevenLabs: qualidade e voice cloning
ElevenLabs é o default quando qualidade de voz é o produto (audiolivros, podcasts gerados, brand voice). Suporta PT-BR bem, tem Voice Lab para clonagem (exige verificação de identidade) e oferece modelo Turbo/Flash para streaming.
import { ElevenLabsClient } from 'elevenlabs';
const client = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_KEY });
// Streaming para latência baixa
const audio = await client.textToSpeech.convertAsStream(
'VOICE_ID',
{
text: 'Olá, este é um teste de voz em português.',
model_id: 'eleven_turbo_v2_5', // Turbo/Flash = latência; Multilingual v2 = qualidade
voice_settings: {
stability: 0.5, // 0 = expressivo/imprevisível, 1 = monótono
similarity_boost: 0.75,
style: 0.3, // exageração estilística
use_speaker_boost: true,
},
}
);
for await (const chunk of audio) {
res.write(chunk);
}stability baixo deixa a voz mais humana mas menos previsível entre frases. Para leitura de nomes de clientes ou valores monetários, suba para 0.6+ ou você terá pronúncias diferentes da mesma palavra em frases consecutivas.
OpenAI TTS: simples e barato
OpenAI TTS-1 ($15/M chars) e TTS-1-HD ($30/M chars) cobrem o 80% dos casos com 1 chamada HTTP. Seis vozes fixas (alloy, echo, fable, onyx, nova, shimmer). Não há voice cloning.
import OpenAI from 'openai';
const client = new OpenAI();
const mp3 = await client.audio.speech.create({
model: 'tts-1', // tts-1 = rápido; tts-1-hd = qualidade
voice: 'nova',
input: 'Bom dia. Sua reunião começa em cinco minutos.',
response_format: 'mp3', // mp3 | opus | aac | flac | wav | pcm
speed: 1.0, // 0.25 a 4.0
});
const buffer = Buffer.from(await mp3.arrayBuffer());Cartesia Sonic: quando cada ms conta
Voice agent que responde em tempo real (chamada telefônica, assistente pessoal) não tolera 500ms de TTFA. Cartesia Sonic usa arquitetura state-space ao invés de transformer tradicional e atinge first-audio em <90ms via WebSocket.
import { CartesiaClient } from '@cartesia/cartesia-js';
const cartesia = new CartesiaClient({ apiKey: process.env.CARTESIA_KEY });
const ws = cartesia.tts.websocket({ container: 'raw', encoding: 'pcm_f32le', sampleRate: 44100 });
await ws.connect();
// Enviar texto em chunks à medida que o LLM gera
for await (const chunk of llmStream) {
await ws.send({
model_id: 'sonic-english',
voice: { mode: 'id', id: 'VOICE_ID' },
transcript: chunk,
continue: true, // sinaliza "mais texto vem por aí"
});
}
await ws.send({ continue: false }); // fecha utteranceSeu sistema lê em voz alta nomes de clientes e valores monetários. O parâmetro de estabilidade da voz deve ir para onde, e por quê?
Controlando prosódia: o salto de qualidade
A diferença entre um TTS "aceitável" e um que engana ouvido humano é prosódia. Todos os três provedores aceitam marcadores. Template por tipo de conteúdo é padrão profissional.
// ElevenLabs v3 aceita tags inline
const textWithProsody =
'Bem-vindo ao suporte. [pause] ' +
'Por favor, diga seu CPF [pause] dígito por dígito.';
// OpenAI / Azure aceitam SSML
const ssml =
'<speak>' +
'Sua fatura vence em <say-as interpret-as="date" format="dmy">15/04/2026</say-as>. ' +
'<break time="300ms"/>O valor é <say-as interpret-as="currency" lang="pt-BR">R$ 123,45</say-as>.' +
'</speak>';Voice cloning: ética antes do código
Voz é biometria. A partir de 2025, EU AI Act exige disclosure de deepfakes sintéticos. Produto sério só cloneia voz com consent documentado (áudio gravado confirmando + contrato), escopo limitado e watermarking. ElevenLabs Voice Lab já exige "voice verification" antes de liberar cloning profissional exatamente por isso. Documente tudo.
Decisão rápida
Podcast / brand voice / audiolivro → ElevenLabs Multilingual v2. Voice agent em tempo real → Cartesia Sonic ou ElevenLabs Turbo. Chatbot que só precisa falar razoavelmente barato → OpenAI TTS-1. Em todos os casos: cache agressivo em frases fixas (saudações, confirmações) corta 60% do custo e 100% da latência repetida.
Perguntas frequentes
❓ Como escolher serviço de síntese de voz?
❓ Clonagem de voz pode ser usada livremente?
❓ Como reduzir a latência percebida em voz?
Fixando
Um agente de voz que atende chamadas telefônicas não tolera meio segundo até o primeiro áudio. Que característica arquitetural resolve isso?
Antes do código, o módulo trata clonagem de voz como questão ética. Qual é a exigência prática?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…