Ferramentas · No ar
Piper TTS
Texto vira voz neural, sem sair do seu navegador.
Texto para voz em português do Brasil com o Piper rodando no navegador (WebAssembly): vozes melhores que a do sistema e nenhum texto enviado a servidor.
Sobre o projeto
O que é Piper TTS
O Piper TTS transforma texto em fala com vozes neurais em português do Brasil. O Piper é um motor de síntese de voz de código aberto, baseado na arquitetura VITS e feito para rodar rápido em máquinas modestas. Aqui ele roda dentro do navegador, em WebAssembly: o texto vira fonemas, passa pelo modelo e sai como áudio no seu computador ou celular, sem passar por servidor nenhum.
Você escolhe entre 5 vozes (Faber, Cadu, Jeff, Edresson, Dii), ajusta a velocidade, a expressividade e a pausa entre as frases, ouve a fala começar enquanto o resto ainda é gerado e baixa o resultado em WAV. Um botão compara com a voz padrão do sistema. Cada voz tem cerca de 63 MB e é baixada uma vez só: depois fica guardada no navegador.
O motor é um módulo reutilizável (piper-tts.js, com um tocador à parte): o mesmo código dá a voz do locutor da Rádio No Ar, outro projeto deste portfólio, e pode ser copiado para qualquer página.
Recursos
O que o Piper TTS faz
Vozes neurais em pt-BR
5 vozes, de tom grave a agudo, com a licença de cada uma à vista. A Dii é a voz feminina.
O texto não sai do navegador
A fonetização, o modelo e o áudio rodam no seu aparelho. O servidor só conta, de forma anônima, quantas falas foram geradas.
Começa a falar antes de acabar
O texto é cortado em frases: a primeira toca enquanto a segunda é gerada, e assim por diante, sem esperar o texto inteiro.
Rápido sem placa de vídeo
Na medição feita para este projeto, no Chrome de um computador, 8 segundos de fala saíram em cerca de 3 segundos. O tempo muda de aparelho para aparelho.
Ajustes de voz
Velocidade de 0,5x a 2x, expressividade, variação de ritmo e pausa entre as frases, além do volume.
Compare com a voz do sistema
Um botão fala o mesmo texto com a voz padrão do seu aparelho, para você ouvir a diferença.
WAV para levar
Baixe a fala em WAV de 16 bits, mono, para usar num vídeo, numa apresentação ou num aviso.
Baixa uma vez só
Motor e voz somam uns 93 MB na primeira vez. Depois a voz fica guardada no navegador, e a tela mostra quais já estão e deixa remover.
Voz conferida
O arquivo da voz vem de uma revisão fixa do repositório e só é aceito se a soma de verificação (SHA-256) for a esperada.
Tecnologias
Por dentro do Piper TTS
WebAssembly: espeak-ng e ONNX Runtime
O espeak-ng, compilado para WebAssembly, transforma o texto em fonemas. O onnxruntime-web executa o modelo VITS em formato ONNX e devolve as amostras de áudio. Os dois arquivos moram em /vendor/piper, sem CDN.
Tudo num Web Worker
Baixar a voz, fonetizar e rodar o modelo acontecem num worker: a página não trava. Uma fila serializa as sínteses, e a frase seguinte já está sendo gerada enquanto a atual toca.
Cache API com conferência
A voz baixada vai para o armazenamento do navegador. Na primeira vez, o SHA-256 do arquivo precisa bater com o do catálogo. Depois, abrir a voz de novo não usa a rede.
O mapa de fonemas é de cada voz
Cada voz traz o seu próprio mapa de símbolos fonéticos para números, e eles diferem entre as vozes. O módulo converte pelo mapa da voz carregada, e um teste confere o resultado com o do fonetizador oficial.
Inglês dentro da frase
Uma fala pode misturar trechos em idiomas diferentes: o título de uma música em inglês é fonetizado como inglês e o resto como português, na mesma frase.
Web Audio sem estalo
As frases são agendadas no relógio do áudio, emendadas sem silêncio indevido, com pausa configurável e um analisador que anima a tela.
Módulo reutilizável
piper-tts.js (motor), piper-player.js (tocador), piper-voices.js (catálogo) e piper-text.js (peças puras, testadas no Node). A Rádio No Ar usa os mesmos arquivos.
FAQ
Perguntas frequentes
Meu texto vai para algum servidor?
Não. A fonetização, o modelo e o áudio rodam no seu navegador. O servidor só conta, de forma anônima, quantas falas foram geradas e quantos WAV foram baixados, nunca o texto, e nada é enviado com Não rastrear ligado.
Por que a primeira vez demora?
O navegador baixa o motor (uns 30 MB) e a voz (cerca de 63 MB). Depois a voz fica guardada, e só o motor volta do cache normal do navegador.
Posso usar as vozes em projetos comerciais?
Depende da voz. Faber, Cadu e Jeff são CC0. A Edresson é CC BY 4.0 e pede atribuição. A Dii é CC BY-NC-ND 4.0: uso não comercial e sem modificação. A licença de cada uma aparece na tela de escolha da voz.
Funciona no celular?
Deve funcionar em navegadores recentes com WebAssembly, mas só foi testado no Chrome do computador. O download inicial é grande: prefira uma rede Wi-Fi.
Por que algumas palavras saem estranhas?
O texto passa por um fonetizador (espeak-ng) que erra siglas, nomes estrangeiros e abreviações. Escreva por extenso ("Rádio" em vez de "Rd.") ou separe a sigla em letras.
Posso usar o módulo no meu site?
O código do portfólio é este mesmo: piper-tts.js e os arquivos ao lado. O motor traz as licenças dele, listadas no arquivo NOTICE.txt da pasta /vendor/piper.
O que o servidor conta?
Só três números: falas geradas, arquivos WAV baixados e vozes baixadas pela primeira vez. Nunca o texto.
Gostou do Piper TTS? Dá para apoiar o trabalho: Me pague um café
Continue explorando
Veja também
Mercado Helper
Listas de compras para usar no celular: adicione vários itens de uma vez, marque com um toque e, se quiser, informe preço e quantidade para ver o total.
Ver projeto No arShareSoFast
Compartilhe um arquivo de até 25 MB por um link curto, com senha e uma carta opcional. Depois de 1 dia, tudo é apagado de verdade.
Ver projeto No arRec2Link
Grave a tela, o áudio, os dois ou só a webcam direto no navegador. O arquivo é comprimido aí mesmo, ganha um link curto e é apagado sozinho em 24 horas.
Ver projeto