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!

Publicado por

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!

4 comentários sobre “Como sintetizar voz com o espeak”

  1. 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”

  2. 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.

  3. 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.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *