O espeak é um software de sintetização de voz, com suporte a vários idiomas, disponível para várias plataformas, o que inclui o Mac OS, o Linux e o Windows.
Habilitar a sintetização de voz, na interface gráfica não é um “bicho de sete cabeças”. Usualmente, você encontra estas opções no painel Acessibilidade, no painel de controle de configurações.
Contudo, se você deseja fazer um script, com avisos e mensagens verbais/orais para usuários, pode ser necessário fazer uso de outras ferramentas. E, neste post, vou falar do espeak.
Se você usa o Ubuntu 14.04 LTS, ele já vem instalado por padrão.
Há várias outras excelentes opções de sintetização de fala para Linux, mas esta é aquela que você já pode começar a usar agora — isto é, se a sua distro for a versão mais atual do Ubuntu.
Independente da sua plataforma, o texto que segue, serve para todos.
Como transferir um texto para a fala com o espeak
O uso do espeak, basicamente, é muito simples.
Vou começar com alguns exemplos comuns e, depois, vou mostrar sua flexibilidade para trabalhar com situações mais complexas.
Comece com o clássico helloworld:
espeak "Hello World"
Experimente criar um texto, para ser lido no sintetizador:
echo "Sintetização de voz na linha de comando é muito fácil." > exemplo.txt espeak -f exemplo.txt
Mais pra frente, vamos resolver o problema do “sotaque gringo” do sintetizador.
Como controlar o tom e a velocidade de reprodução do sintetizador
Há dois parâmetros que correspondem a estas duas necessidades.
O espeak é bastante claro na sua sintetização — depois de acostumar o ouvido, as dificuldades de compreensão vão-se embora.
Contudo, é possível melhorar a “dicção” do programa para facilitar as coisas.
Se você quiser, pode alterar o pitch (altura ou tom) da fala ou a velocidade (em palavras por minuto):
-p
— o ajuste do pitch pode variar entre 0 e 99. O valor padrão é 50.-s
— o ajuste da velocidade tem um espectro maior de variação. Faça experiências antes de decidir qual é o mais adequado para você. O valor default é 100.
Veja como funciona em um exemplo:
espeak -p 75 -s 85 -f exemplo.txt
Interpretação da pontuação
Se achar melhor, você pode pedir ao programa para “dizer” a pontuação, em vez de “agir” de acordo com ela.
Para isto, use a opção --punct
:
espeak --punct -f exemplo.txt
A opção -k
dá tratamento especial às letras maiúsculas (as que iniciam as frases, por exemplo:
-k 1
— produz um som discreto a cada vez que passa por uma letra maiúscula.-k 2
— fala “capital” ou “maiúsculo”, a cada vez que passa por uma letra maiúscula.-k valores maiores que 2
— qualquer valor acima de 2, produz um aumento no tom (pitch) conforme o número fornecido.
Experimente:
espeak -k -20 -f exemplo.txt
Para mim, a opção -k -20
funciona bem. E pra você?
Entender voz sintetizada é um processo que requer um pouco de paciência. É um pouco parecido com a adaptação a um sotaque diferente.
Sintetização de voz em português
O exemplo anterior, em português fica assim:
espeak -vpt -k -20 -f exemplo.txt
Você pode listar os arquivos de idiomas presentes no seu sistema, com o comando --voices
:
espeak --voices
Eu acho interessante ouvir textos em português, ora com a pronúncia europeia, ora com a pronúncia brasileira.
Faça uma experiência:
echo "O espeak é um software de sintetização de voz, em vários idiomas." > exemplo.txt
Agora execute a sintetização de voz (em português de Portugal) no arquivo “exemplo.txt”:
cat exemplo.txt; espeak -vpt-pt -k -20 -f exemplo.txt
E agora ouça o texto em português do Brasil:
cat exemplo.txt; espeak -vpt-br -k -20 -f exemplo.txt
Você pode fazer o mesmo com um texto em inglês. Por padrão, o espeak traz, pelo menos, 8 variantes do inglês. Veja:
espeak --voices=en
2 en-gb M english en (en-uk 2)(en 2) 3 en-uk M english-mb-en1 mb/mb-en1 (en 2) 2 en-us M english-us en-us (en-r 5)(en 3) 5 en-sc M en-scottish other/en-sc (en 4) 5 en M default default 5 en-uk-north M english-north other/en-n (en-uk 3)(en 5) 5 en-uk-rp M english_rp other/en-rp (en-uk 4)(en 5) 5 en-us M us-mbrola-2 mb/mb-us2 (en 7) 5 en-us F us-mbrola-1 mb/mb-us1 (en 8) 5 en-us M us-mbrola-3 mb/mb-us3 (en 8) 9 en M en-german mb/mb-de4-en 9 en F en-german-5 mb/mb-de5-en 9 en M en-greek mb/mb-gr2-en 9 en M en-romanian mb/mb-ro1-en 5 en-uk-wmids M english_wmids other/en-wm (en-uk 9)(en 9) 10 en M en-dutch mb/mb-nl2-en 10 en F en-french mb/mb-fr4-en 10 en M en-french mb/mb-fr1-en 10 en F en-hungarian mb/mb-hu1-en 10 en F en-swedish-f mb/mb-sw2-en 5 en-wi M en-westindies other/en-wi (en-uk 4)(en 10) 11 en M en-afrikaans mb/mb-af1-en 11 en F en-polish mb/mb-pl1-en 11 en M en-swedish mb/mb-sw1-en
Grave um podcast a partir da sintetização e saiba como sussurrar
É possível criar uma arquivo de áudio .wav a partir de um texto, lido pelo sintetizador espeak.
Vamos alterar o exemplo anterior para direcionar a saída do programa para um arquivo de áudio, chamado exemplo.wav
:
espeak -vpt-br -k -20 -f exemplo.txt -w exemplo.wav
Agora use o aplay para ouvir o áudio:
aplay exemplo.wav
Para sussurrar, acrescente “whisper”, desta forma:
espeak -k -20 -vpt+whisper -p 75 -s 85 -f exemplo.txt
Não deixe de experimentar a voz feminina, na sintetização:
espeak -k -20 -vpt+f5 -p 75 -s 85 -f exemplo.txt
A opção “f” (female), pode ter outros valores, a depender da sua instalação atual. Experimente valores abaixo de 5.
Divirta-se!
7 replies on “Como sintetizar voz com o espeak”
Linux com suporte decente de texto para fala, falando corretamente o português, com a solução do Brasil TTS:
site: https://brasiltts.wordpress.com/
blog: https://brasiltts.blogspot.com/
github: https://github.com/felipefacundes/brasiltts/
O projeto consiste em quatro vozes, 3 nativas para o sistema, offline. Funcionando muito bem por sinal. E uma quarta voz a GuglinaTTS, que usa a api de voz do Google, para todo o sistema Linux. Muito interessante:
https://guglinatts.sourceforge.io
https://github.com/felipefacundes/guglinatts
E as três vozes falam com fluência, sem engasgos robotizados.
Obrigado pela dica! Vou visitar o seu site (y)
Valeu dia, gostei muito, muito útil.
deixar aqui um escript bem legau.
1 – gedit talk-.sh
#!/bin/bash
xsel | espeak -k -20 -vpt+f2 –stdin
2 – salve e chmod +x talk.sh
3 – Todas as Configurações -> Teclado
Nome = talk
Comando = /home/usuário/talk.sh
Aplicar
-> Atalho de teclado -> Teclado Personalizado -> Super + r
Pronto.
Selecione um texto na internet e tecla “Super + r”
O atalho de teclado deve ter a forma
sh -c ‘/caminho/script.sh’
Caraca, estamos em 2017!!!
O post é antigo, mas a dica sensacional.
Resolveu-me um grande problema de forma simples.
Muito obrigado Elias Praciano.
Muito sucesso para ti.
Com atraso, sendo que seu post é de 2014 e sou recente nas ferramentas do ubuntu, venho apenas dizer parabéns pelo post. Gostei da ferramenta. Se souber fazer bom uso dela é ótima para auxilio em textos escritos.
Obrigado.
Usar o espeak para ler textos é uma ótima dica!