Fala Em Português - Tipos de Atos de Fala em Português | PDF
Tipos de Atos de Fala em Português | PDF

Text-to-Speech em Português: O que Funciona na Prática

A maior parte dos sistemas de fala em português que eu vi rodando em produção tem um problema constante: a entonação. Não é o reconhecimento do texto que trava, é a forma como a voz soa quando vai pronunciar uma frase com mais de duas linhas. Vou explicar como contornar isso.

fala em português e as variações regionais

Existem basicamente dois sotaques padrão no mercado: o brasileiro e o europeu. Eles não são intercambiáveis. Se você treinar um modelo com dados brasileiros e rodar em um usuário português, o resultado é compreensível mas estranho. Os fonemas mudam, os ditongos abertos se comportam de outra forma, e a prosódia — o ritmo natural da fala — fica completamente deslocada. A maioria dos serviços cloud oferece ambos, mas o português europeu ainda tem uma qualidade visivelmente inferior na maioria das engines. O problema real começa quando você precisa mesclar os dois em um único projeto. Eu tive um caso onde um cliente queria que um assistente virtual alternasse entre os dois sotaques dependendo do país do usuário. A solução que funcionou foi separar completamente as duas vozes nos arquivos de configuração do TTS e usar um proxy que redireciona a requisição com base no código ISO do país. Nada de tentar treinar um modelo multilingue com os dois variantes — o custo computacional não compensa o ganho.

Processamento antes da síntese

Antes de qualquer texto chegar ao sintetizador, ele precisa passar por um normalizador. Isso é obrigatório. Texto cru com datas, abreviações, números e símbolos quebra a maioria das engines. "R$ 1.500,00" vira algo ininteligível sem pré-processamento. O normalizador transforma para "real um milhar e quinhentos reais". Mesma coisa para "Dr." — vira " doutor ". "2ª-feira" vira "segunda-feira". Se você pular essa etapa, gasta horas depurando problemas que na verdade estão na entrada, não no motor de síntese. Eu desenvolvi um pipeline simples que usa regex encadeado seguido de um dicionário de substituição para os casos irregulares. Funciona assim: primeiro passo as expressões regulares para datas, moedas, siglas e endereços. Depois aplico o dicionário para as palavras que o regex não cobre. O tempo médio de normalização de um texto de 500 palavras é de cerca de 40 milissegundos em uma CPU moderna. Se o texto passar por um modelo de linguagem adicional para desambiguação — como decidir se "p.v.a." é "por favor" ou um termo técnico — o tempo sobe para cerca de 200ms. Vale a pena apenas em contextos onde a precisão é crítica.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Escolhendo a engine certa

As opções disponíveis hoje se dividem em dois grupos: clouds e soluções locais. Os serviços de cloud como Google Cloud TTS, Amazon Polly, Azure Neural TTS e ElevenLabs oferecem qualidade impressionante com português brasileiro. O preço cai drasticamente se você processar em lote. A desvantagem é a latência de rede e a dependência de conexão. Para aplicações que precisam de resposta em tempo real abaixo de 200ms, cloud pode não ser viável. Soluções locais como Coqui TTS, Piper e SpeechT5 rodam em hardware próprio. A qualidade não chega perto das redes neurais comerciais, mas são gratuitas e não têm limitação de quota. O Piper, por exemplo, gera áudio em tempo real em um Raspberry Pi 4 com qualidade aceitável para comandos simples. O Coqui é mais flexível mas exige GPU dedicada para resultados razoáveis.

Uma questão que poucos mencionam: muitos desses sistemas não tratam bem a pontuação. Vírgulas, travessões e reticências são frequentemente ignorados ou geram pausas artificiais. A workaround que eu uso é inserir marcas especiais no texto antes de enviar à engine. Uma vírgula longa vira uma tag que o sistema interpreta como pausa de 300ms, não como 50ms. Parece simples, mas faz toda a diferença na naturalidade.

Armazenamento e caching

Se você vai gerar as mesmas frases repetidamente — um FAQ, um menu de IVR, instruções de um app — cache é essencial. Armazenar o áudio em formato Opus reduz o tamanho em cerca de 80% comparado ao WAV sem perda perceptível. Um texto de 30 segundos que custaria cerca de R$ 0,05 por geração em serviços de cloud pode ser servido de graça se estiver em cache após a primeira síntese. O problema é a invalidação. Quando o conteúdo textual muda, você precisa saber quais áudios precisam ser regenerados. Eu mantenho um hash MD5 do texto normalizado como chave do cache. Se o hash mudar, o áudio é regenerado. Se mantiver o mesmo, sirvo do disco. Isso eliminou quase todo o custo operacional de TTS recorrente no projeto em que apliquei.

Limitações reais

Nenhum sistema atual de fala em português lida bem com nomes próprios estrangeiros, trocadilhos ou sarcasmo marcante na entoação. Isso não é limitação técnica que vai resolver no curto prazo — é uma lacuna fundamental na representação de contexto pragmático. Se seu aplicativo precisa ler contratos, manuais técnicos ou noticiários, os sistemas atuais funcionam muito bem. Se precisa ler diálogos de ficção com ironia, você vai precisar de intervenção manual nos marcações de entoação ou aceito um resultado imperfeito. Também há o problema do custo escondido em larga escala. Gerar 10 horas de áudio por dia em cloud custa entre R$ 150 e R$ 400 mensais dependendo do serviço. Em escala de milhões de usuários, isso se torna um item significativo de OpEx. A migração para solução local nesse ponto geralmente se paga em 3 a 6 meses.