Texto para fala com emoção é uma voz sintética que soa feliz, preocupada, arrependida ou irritada quando o momento pede, em vez de ler tudo no mesmo tom educado e monótono. Os modelos atuais já fazem boa parte disso sozinhos: leem a frase e decidem como ela deve soar. Os controles que você adiciona servem para ajustar, não para salvar uma frase escrita sem emoção.
Essa ordem resume o guia. Se você cria agentes de voz ou apps, a maior parte da qualidade emocional que você ouve vem das palavras que o seu sistema escreve e da voz que você escolhe. Tags e parâmetros ajustam o restante. A seguir: como cada abordagem funciona, como as principais APIs a expõem, código funcional para o Sonic da Cartesia e como saber se o resultado é bom.
De onde vem a emoção no TTS
Uma frase não define uma única interpretação correta. “I can’t believe it” pode ser alegria, fúria, tristeza ou sarcasmo. Nossa equipe de pesquisa descreve o texto para fala como um problema de um para muitos: o modelo precisa escolher onde pausar, quais palavras enfatizar, em que velocidade falar e qual sentimento transmitir, muitas vezes a partir de um texto que não diz nada disso.
Um modelo faz essa escolha de quatro maneiras:
- Deduz do texto. O modelo lê as palavras e a pontuação em volta e escolhe uma interpretação. É o padrão em todos os modelos atuais, e o que mais importa.
- Você nomeia. Um parâmetro ou uma tag diz
angryoucalm. O modelo se inclina nessa direção, dentro do razoável. - Você escolhe um estilo. Algumas vozes têm estilos de fala com nome, como atendimento ao cliente ou telejornal, cada um gravado ou treinado como uma interpretação própria.
- Você descreve. Um prompt em linguagem natural diz “fale com carinho, como se estivesse tranquilizando um amigo”. O modelo interpreta a descrição.
Todas as APIs misturam essas opções. O que muda é qual delas é tratada como controle principal.
Como as principais APIs recebem a direção emocional
Segundo a documentação de cada provedor, consultada em 12 de outubro de 2026:
| API | Como você direciona a emoção | Vale saber |
|---|---|---|
| Cartesia Sonic 3.6 | Por padrão, deduzida do texto. generation_config.emotion por requisição, ou uma tag <emotion value="..."/> em linha. [laughter] para risadas. | 58 valores, 6 principais. As tags estão em beta e só em inglês; em todos os idiomas, o Sonic continua lendo a emoção do texto. Funciona quando a tag combina com as palavras. A emoção pode mudar no meio do stream. |
| ElevenLabs v4 e v3 | Tags de áudio entre colchetes no texto, como [sarcastic], [whispers] ou [laughs]. | As tags são instruções livres, não uma lista fixa. v4 e v3 não suportam as tags SSML de pausa. |
| Azure Speech | SSML <mstts:express-as style="..."> com um styledegree de 0,01 a 2. As vozes HD também aceitam marcadores de estilo como [whispering]. | Os estilos das vozes neurais existem só para parte das vozes. Confira a voz antes de projetar em torno de um estilo. |
| Gemini TTS | Um campo prompt em linguagem natural ao lado do texto, mais tags em linha como [laughs] e [sigh]. | Os modelos TTS preview 2.5 e 3.1 saem da API do Gemini no mínimo em 17 de novembro de 2026. |
| OpenAI gpt-4o-mini-tts | Uma string instructions, como “Speak in a cheerful and positive tone.” | Descontinuado. A OpenAI remove todos os modelos do endpoint de fala em 6 de janeiro de 2027. |
| Amazon Polly | Sem tags de emoção. Um estilo de apresentador de notícias em algumas vozes neurais. | A interpretação depende sobretudo da voz e do texto. |
O Octave, da Hume, que aceitava instruções de atuação em linguagem natural, estava nesta tabela até pouco tempo. A Hume vai encerrar suas APIs de TTS e EVI em 13 de novembro de 2026. Se você está migrando, nosso guia de alternativas à Hume explica o que salvar primeiro.
Um ponto importa em produção. Controles do tipo prompt (Gemini e o modelo da OpenAI que está saindo) são texto livre: não há um vocabulário fixo para testar, e para reproduzir uma interpretação é preciso guardar a redação exata da instrução e testar de novo sempre que ela mudar. Um valor com nome (a lista de emoções do Sonic, os estilos do Azure) é uma configuração que você pode versionar, testar e reverter, que é o que você quer quando 10.000 ligações por dia passam pelo mesmo agente.
Escreva a emoção nas palavras primeiro
É a etapa que a maioria das equipes pula, e a que funciona melhor.
O Sonic 3.6 ajusta o ritmo e a entonação ao contexto emocional do texto, sem tags. Em testes cegos lado a lado em inglês americano, os ouvintes preferiram o Sonic 3.6 ao Eleven v3 em 92% das vezes, por causa de uma entonação melhor e de uma emoção guiada pelo contexto. Ou seja, o modelo já está ouvindo suas palavras. Dê a ele palavras que valham a pena.
Num agente de voz, isso significa que a emoção mora no prompt do LLM. Se você quer um tom empático, o LLM precisa escrever um texto empático. Compare duas respostas a um cliente cujo pedido está atrasado:
- “Seu pedido está atrasado. A nova data de entrega é quinta-feira.”
- “Sinto muito, sei que você estava contando com isso. Agora ele chega na quinta.”
Nenhuma tag vai fazer a primeira soar arrependida. A segunda soa arrependida sem tag nenhuma. Nosso guia para escolher modelos de IA de voz diz o mesmo pelo outro lado: o Sonic se expressa de acordo com o texto e ignora uma configuração que o contradiga.
Alguns hábitos de escrita que ajudam qualquer modelo:
- Mantenha a pontuação normal. Um ponto de interrogação, uma vírgula antes de “mas” ou um ponto de exclamação dão pistas sobre a interpretação. Tirar a pontuação para “limpar” a saída do LLM deixa a voz mais plana.
- Deixe o agente hesitar onde uma pessoa hesitaria. O Sonic lê hesitações no texto, como “hã” ou “hmm”, como um ritmo natural de pensamento. Use com moderação, antes de um número consultado ou depois de uma pergunta difícil, não em toda frase.
- Não narre a emoção. “Disse ela, irritada” é lido em voz alta. Coloque a irritação no que ela diz.
Escolha uma voz com o temperamento certo
As vozes têm um humor padrão. Uma voz criada como alguém animado que resolve tudo não vai soar como um confidente de confiança, seja qual for a tag. Combine primeiro a voz com o trabalho, depois ajuste.
Na Cartesia, a biblioteca de vozes marca as vozes expressivas com a tag Emotive, e os controles de emoção respondem melhor com elas. A documentação cita Leo, Jace, Kyle, Gavin, Maya, Tessa, Dana e Marian como as vozes com maior alcance emocional. Se você clonar uma voz, o clone mantém a interpretação da gravação original, então grave a amostra no humor que você quer que o agente tenha.
Controle a emoção com o Sonic
Com as palavras e a voz certas, veja como intensificar a interpretação. Estes exemplos usam o SDK Python da Cartesia na versão 4.2.0 e sonic-3.6. Defina antes CARTESIA_API_KEY no seu ambiente e instale cartesia[websockets] para o exemplo de streaming. Nosso tutorial de texto para fala em Python explica a configuração.
Uma emoção para a requisição inteira
import os
from cartesia import Cartesia
with Cartesia(api_key=os.environ["CARTESIA_API_KEY"]) as client:
response = client.tts.generate(
model_id="sonic-3.6",
transcript="I'm sorry, I know you were counting on this. It's now arriving Thursday.",
voice="6ccbfb76-1fc6-48f7-b71d-91ac6298247b", # Tessa, an Emotive voice
language="en",
output_format={"container": "wav", "encoding": "pcm_s16le", "sample_rate": 44100},
generation_config={"emotion": "sympathetic", "speed": 0.95},
)
response.write_to_file("apology.wav")
generation_config vale só para essa requisição; não existe configuração para a conta inteira. speed vai de 0,6 a 1,5 e volume de 0,5 a 2,0, e o Sonic trata os três como orientação, não como multiplicadores rígidos, para que a fala continue natural. Para uma mudança bem audível, faça um ajuste maior: 0,7 em vez de 0,9.
Mude a emoção dentro de um texto
transcript = (
'<emotion value="calm"/> I can help with that. '
'<emotion value="excited"/> Good news, your refund went through this morning!'
)
Tags em linha são práticas para uma fala roteirizada com uma virada clara. Mudanças no meio do texto são a parte mais experimental do recurso, então, quando a mudança importa, envie cada parte no seu próprio contexto de geração.
Mude a emoção durante o streaming
Na API WebSocket, cada trecho de texto enviado pode ter suas próprias configurações. É o padrão de um agente que transforma em fala os tokens do LLM conforme chegam:
with client.tts.websocket_connect() as ws:
ctx = ws.context(
model_id="sonic-3.6",
voice="6ccbfb76-1fc6-48f7-b71d-91ac6298247b",
output_format={"container": "raw", "encoding": "pcm_s16le", "sample_rate": 44100},
language="en",
)
ctx.push("Well, maybe if you just ")
ctx.push("loosen up a little!", generation_config={"emotion": "angry"})
ctx.no_more_inputs()
for response in ctx.receive():
if response.type == "chunk" and response.audio:
... # play or buffer the audio
Esse exemplo vem do exemplo de emoção via WebSocket da nossa documentação. Para uma risada, coloque [laughter] no texto. Para uma pausa exata, use <break time="1s"/>, embora uma vírgula ou um ponto costumem dar uma pausa melhor.
Qual valor escolher
Comece pelas seis emoções principais: neutral, calm, angry, content, sad e scared. São as que têm mais dados de treinamento. As outras 52 (sympathetic, apologetic, curious, skeptical, determined, sarcastic e as demais) estão na lista completa e valem um teste quando um valor principal chega perto mas não acerta. Muitos agentes de suporte se viram com três: calm como padrão, sympathetic para más notícias e content quando o problema está resolvido.
Como saber se a emoção está certa
A emoção é a parte da qualidade do TTS que nenhuma métrica captura. Uma verificação baseada em transcrição, como a taxa de erro de palavras, dá nota perfeita a uma leitura furiosa de “Obrigado por aguardar”. É preciso ouvir, e ouvir pensando na situação.
- Conte o cenário a quem ouve. “Um agente de suporte dizendo a um cliente que o voo foi cancelado” gera um julgamento útil. “Avalie este clipe” gera um julgamento sobre a voz.
- Teste conversas completas, não frases soltas. Uma emoção que combina com um turno pode soar estranha três turnos depois, e uma voz que muda de humor ao longo de uma ligação é uma falha que só se ouve no contexto.
- Espere discordância entre ouvintes. Algumas pessoas gostam de um agente expressivo; outras acham a mesma interpretação exagerada e cansativa. Reporte essa divisão em vez de tirar a média. Nosso guia do mean opinion score explica por que um único número esconde isso.
- Ouça pelo caminho real de streaming. Um modelo que escolhe a emoção errada no primeiro trecho de áudio às vezes não se recupera. Isso não aparece num render offline.
Onde a Cartesia se encaixa
O Sonic foi feito para fala em tempo real: agentes de voz, ligações telefônicas e apps que respondem falando. Por padrão, a emoção vem do texto, os controles funcionam durante o streaming e a configuração de emoção é um valor com nome que você pode testar e versionar como o resto do seu agente. Se você está criando um agente telefônico e não quer conectar por conta própria reconhecimento de fala, LLM e TTS, o Managed Agents roda o ciclo inteiro com o Sonic como voz.
Se você produz um audiolivro ou uma locução de vídeo e quer editar a interpretação linha a linha numa linha do tempo, um editor de estúdio combina mais do que uma API. Nosso guia de alternativas ao ElevenLabs lista vários.
Para ouvir a diferença, abra o playground, escolha uma voz Emotive e leia a mesma frase com calm e depois com sympathetic. Em seguida, reescreva a frase para que ela soe arrependida sem nenhuma tag. O segundo experimento costuma ensinar mais.