O Text to Speech é, como o próprio nome sugere, transformar uma frase, palavra ou texto escrito em áudio. Trata-se de um recurso valioso em sistemas de automação, domótica e até mesmo acessibilidade (para deficientes visuais, por exemplo), afinal esta técnica pode tornar muito mais simples e intuitiva a interface com tais sistemas.
Este post irá abordar o uso deste recurso na Raspberry PI 3, utilizando linguagem Python. Ou seja, após ler este artigo, você poderá fazer seus projetos falarem. E o melhor: em muitas línguas diferentes!
Material necessário
Para reproduzir este projeto, você precisará de:
- Uma placa Raspberry PI 3
- Um fone de ouvido ou caixa de som de computador com conector P2
Assume-se neste tutorial que sua Raspberry PI está totalmente funcional, ou seja, com sistema operacional instalado e rodando (Raspbian) e conectividade à Internet funcionando.
Biblioteca de Text to Speech (gTTS) – instalação
Para fazer o Text to Speech, será usada a biblitoeca gTTS. Na verdade, esta biblioteca opera como uma interface Python para a API Text to Speech do Google, traduzindo algo escrito, para um áudio no formato mp3. Tal áudio, quando tocado, irá dizer exatamente o que havia no texto. Portanto, você irá dispor da mesma qualidade, voz e versatilidade do Text to Speech comum do Google em seus projetos.
sudo pip install gTTS
Além dela, para tocar o arquivo mp3 (com o áudio correspondente ao texto escrito), iremos utilizar o player mpg321. Tal player é muito leve e atende perfeitamente este projeto. Para instalá-lo, utilize o comando abaixo:
sudo apt-get install mpg321
Pontos de atenção com a biblioteca gTTS
Abaixo estão alguns pontos de atenção sobre o uso desta biblioteca:
- Pelo fato da biblioteca ter como “retorno” um arquivo mp3 (com o áudio correspondente ao texto escrito), não é aconselhável salva-lo em memória Flash / cartão SD. O motivo é que, como qualquer memória Flash, o cartão SD tem um limite de ciclos de escrita. Portanto se o salvamento de arquivos for muito frequente no cartão SD, corre-se o risco de danifica-lo parcialmente.
Para resolver este problema, utilizo aqui um artifício: salvar os áudios no diretório /tmp. A razão disso é que, na arquitetura Linux, este diretório é mapeado em memória RAM. Como a memória RAM não possui a limitação de ciclos de escrita presente na Flash, esta é uma alternativa ideal para a vida útil da placa como um todo. O único porém desta técnica é que, como a memória RAM é volátil, após o desligamento tudo em memória RAM é perdido (algo que não deve ser relevante para a maioria das situações, já que o arquivo normalmente será usado para “dizer” um texto em um único momento / situação). - Assim como na API Text to Speech do Google, aqui existe suporte a diversos idiomas. A lista completa dos idiomas suportados e seus correspondentes códigos de idioma a serem utilizados no script Python podem ser obtidos neste endereço: https://github.com/pndurette/gTTS
Text to Speech (gTTS) – fazendo sua Raspberry PI falar
Chegou a hora de fazer sua Raspberry PI falar! Para isso, copie o código-fonte a seguir e salve-o em um arquivo chamado ExemploGTTS.py na sua Raspberry:
from gtts import gTTS import os #em text, informe o texto a ser dito. Evite usar acentuacao. AudioDoTexto = gTTS(text='A Raspberry PI agora fala!', lang='pt') #pt eh o codigo de idioma correspondente ao Portugues. #Aqui pode ser utilizado qualquer um dos codigos de idioma citados anteriormente neste post. AudioDoTexto.save("/tmp/audio.mp3") os.system("mpg321 /tmp/audio.mp3")
Para ouvir sua Raspberry PI falar, plugue o seu fone de ouvido ou caixa de som na saída de som da Raspberry PI e execute o seguinte comando:
python ExemploGTTS.py
Olha o projeto funcionando!
Observações
Abaixo estão algumas observações importantes no uso da biblioteca gTTS:
- Devido a ser um pouco pesada, a importação da biblioteca pode demorar alguns segundos.
- Por usar a API do Google Text to Speech, toda a parte de processamento do texto em áudio é feita on-line. Portanto, é necessário ter conectividade com a Internet para fazer o Text to Speech.
- A velocidade de sua conexão Internet influencia no tempo de resposta (tempo entre solicitar o arquivo de áudio e obtê-lo).
Gostou do projeto Text to Speech com Raspberry Pi? Deixe seu comentário logo abaixo.
Boa tarde, gostaria de saber se tem como utilizar a voz que existe no sistema operacional?
Olá Martini,
Até onde encontrei não há voz padrão no sistema operacional, mas existem outros mecanismo de Text To Speech (TTS) como o eSpeak: https://espeak.sourceforge.net/
Abraços!
Vinícius – Equipe MakerHero
Agradeço Vinicius
Muito bom! Estou sempre tentando aprender essas coisas,
mas preciso melhorar o entendimento ainda. Facilitar passar
nos testes
Estou tendo um probleminha e que no python 3.6 que estou usando não reconhece o módulo, o que será que posso fazer para resolver ?
Pedro, boa noite. Muito bom o material, sou iniciante nesta plataforma. Um forte abraço.
André, muito obrigado pelo elogio!