INTRODUÇÃO
Observei em alguns fóruns a necessidade da comunidade de fazedores em criar projetos que sintetize a voz, por isso, escrevo este artigo para auxiliar nossos companheiros nesta jornada. Não iremos propriamente sintetizar voz, mas criar uma técnica dos nossos projetos reportarem seus resultados de forma audível através da concatenação de arquivos ".wav".
Inúmeras são as possibilidades de aplicação desta técnica, onde não necessariamente teremos de ficar observando uma tela para obter o resultado da variável que estamos monitorando, podemos fazer outras coisas enquanto esperamos o sistema reproduzir audivelmente o que queremos. Aplicações de inclusão social e acessibilidade podem ser desenvolvidas por exemplo: Para pessoas com deficiência visual ou baixa visão. A imaginação de cada um de nós será o limite.
DESCRIÇÃO
Sintetizar voz não é uma tarefa simples e fácil, em minhas buscas na web encontrei alguns poucos exemplos com placas eletrônicas dedicadas e shields para Arduino que são funcionais mas pouco atraentes por causa de suas características e limitações por exemplo: voz robotizada, língua inglesa, alto custo entre outros.
Nossa proposta é utilizar arquivos de áudio no formato wave utilizando o padrão PCM que trabalha confortavelmente com o Arduino. Apesar da facilidade de uso desses arquivos de áudio, um problema que constatei foi a baixa qualidade do som reproduzido pelo padrão de Modulação por Código de Pulso.
PCM - 8KHz de amostragem - 8 bits de resolução - canal mono - Usado em Sistema Telefônico
Teoria da Amostragem:
Qualidade de som = Amostra de Frequência * Resolução da Amostra
- 16 Kbps - Rádio de ondas curtas
- 32 Kbps - Rádio AM
- 96 Kbps - Rádio FM
- 128 Kbps - Próximo ao CD
- 256 Kbps - Estúdio de Som
Felizmente com um pouco mais de trabalho podemos obter um resultado satisfatório.
Vamos demonstrar nossa técnica através de um termômetro que fala a temperatura registrada!!!
- Inicialmente vamos usar uma biblioteca chamada TMRpcm. Com ela podemos reproduzir claramente arquivos wav de 22050 Hz 8-bit PCM mono.
- Usei o aplicativo Easy Voice Recorder com as configurações acima para gravar em arquivos separados uma voz feminina, os arquivos contém as pronúncias temperatura, graus Celcius e os números 20 até 40.
- Editei os arquivos de áudio no software Sony Vegas.
Segue o código fonte do nosso projeto:
#include <SD.h> #include <TMRpcm.h> #define pinoChipSelectSD 53 TMRpcm audioCartaoSD; const int SENSOR_LM35 = A0; const float CONVERSAO_CELSIUS = 0.49; int leituraSensor; float temperaturaAtual, temperaturaAnterior; String valorTemp; void setup(){ Serial.begin(9600); if (!SD.begin(pinoChipSelectSD)) { Serial.println("Falha no cartao SD"); } pinMode(SENSOR_LM35, INPUT); audioCartaoSD.speakerPin = 11; } void loop(){ temperaturaAtual = analogRead(SENSOR_LM35) * CONVERSAO_CELSIUS; if(temperaturaAtual != temperaturaAnterior) { temperaturaAnterior = temperaturaAtual; valorTemp = String(int(temperaturaAtual)); valorTemp.concat(".wav"); char nomeArquivo[valorTemp.length( ) + 1]; valorTemp.toCharArray(nomeArquivo, sizeof(nomeArquivo)); audioCartaoSD.play("temp.wav"); while(audioCartaoSD.isPlaying()); audioCartaoSD.play(nomeArquivo); while(audioCartaoSD.isPlaying()); audioCartaoSD.play("graus.wav"); Serial.println(temperaturaAtual); delay(5000); } } |
O componentes usados foram:
- Arduino Mega 2560
- Leitor de Cartão Micro SD
- Sensor de Temperatura LM35
- Buzzer para escutar que posteriormente foi conectado a um caixa de som de computador
As conexões dos componentes foram:
- Saída de som para fone de ouvido, caixa de som, amplificador, etc. Pino 11 para Arduino Mega e pino 9 para Arduino Uno.
- Formate o cartão micro SD em FAT32 e copie os arquivos de áudio.
- Terminal 2 (terminal do meio) do LM35 ao pino A0 do Arduino.
Leitor de cartão SD:
Arduino Mega
|
Cartão SD
|
50
|
MISO
|
51
|
MOSI
|
52
|
SCK
|
53
|
CS
|
GND
|
GND
|
5 volts
|
VCC
|
Arduino Uno
|
Cartão SD
|
12
|
MISO
|
11
|
MOSI
|
13
|
SCK
|
4
|
CS
|
GND
|
GND
|
5 volts
|
VCC
|
Assista o vídeo abaixo ou clique AQUI para abrir uma nova página para o youtube.
LINKS E DOWNLOADS
Biblioteca TMRpcm https://github.com/TMRh20/TMRpcm/wiki
Download Direto TMRpcm https://github.com/TMRh20/TMRpcm/archive/master.zip
Código Fonte do Termômetro https://www.dropbox.com/s/7zlk8c1s6cllq1e/FacaArduinoFalar.ino?dl=0
Arquivos de Áudio https://www.dropbox.com/s/uegr1sjvmxr0c37/Arquivos%20de%20Audio.rar?dl=0
boa !!!
ResponderExcluirParabéns !!!
Excelente matéria, vídeo.
ResponderExcluirAgradeço você por dividir o conhecimento.
Meus parabéns.
Ola boa noite como seria fazer ele falar com um sensor ntc em vez do sensor lm35?
ResponderExcluirNão consegui baixar os arquivos. O servidor está com virus.
ResponderExcluirÉ possível adicionar um relógio no projeto?
ResponderExcluir