Categories
Tutoriais Ubuntu

Como sintetizar voz com o espeak

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.
ícone speaker de audio e usuários
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!

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

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.

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”

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.