Essa provavelmente é uma das melhores formas de implementar o reconhecimento de voz em seus programas do Arduino. Porque você não vai precisar gastar nada e só precisa baixar o programa Processing que é leve e muito bom pra muitas outras coisas.
Caso você não tenha lido o post sobre as diferentes formas de fazer reconhecimento de voz, passe lá para entender tudo que vou falar.
Características
Essa solução usa um programa chamado Processing (imagem abaixo). Esse software se assemelha muita à IDE do Arduino e serve para muitas aplicações interessantes, em especial coisas gráficas. É por meio dele, que a gente consegue fazer a conversão da nossa fala para texto.
A gente vai fazer uso de uma biblioteca e mais a frente você verá como. Basicamente, nesta solução, o reconhecimento de voz é feito em uma página da internet. Essa página retorna o comando traduzido para o Processing e o Processing envia os dados para o Arduino pelo Serial. Ou seja, o Arduino tem que estar conectado no computador.
Como foi dito no outro post, essa é uma solução computadorizada. Portanto, as desvantagens incluem os gastos de energia e a falta de praticidade em se usar o sistema. E, como disse no início do post, a vantagem está no fato de que é uma solução simples, fácil e sem custo.
Implementação
Configurações e downloads
Caso você queira ver o tutorial no site do próprio autor da biblioteca, clique aqui.
Primeiro de tudo, você precisa baixar o Processing. Feito isso, a gente precisa baixar a biblioteca neste link. Para instalar a biblioteca, basta ir na pasta de documentos do computador -> Processing -> libraries e colocar a pasta da biblioteca lá dentro. Se a pasta libraries não existe, basta criá-la.
Antes do próximo passo, é preciso deixar claro uma coisa. Como essa solução faz uso de uma página na internet, existem dois caminhos para se seguir. O primeiro é pra quem tem conhecimento em html e quer criar o próprio arquivo para abrir a página (o código está disponível no site do autor). E o segundo é pra quem não conhece e quer uma solução rápida, que é usar um link já disponível com tudo funcionando.
O link dessa página pode ser acessado aqui. Depois que você entra na página, é preciso autorizar a página do navegador a utilizar o microfone. Feito isso, você precisa ir no canto direito e mudar a linha que esta escrita “en-US” para “pt-BR”. Veja a imagem abaixo para entender onde mudar.
Programação
Agora que está tudo configurado, resta apenas a programação do Processing e do Arduino. O código abaixo eu apenas incrementei o código do autor (da biblioteca) com a comunicação serial para controlar o Arduino. O código envia toda tradução da voz que ele recebe para o Arduino, via serial.
Processing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import processing.serial.*; import websockets.*; Serial myPort; WebsocketServer socket; void setup() { myPort = new Serial(this, Serial.list()[0], 9600); //Mude o 0 para o valor da sua porta socket = new WebsocketServer(this, 1337, "/p5websocket"); } void draw() { background(0); } void webSocketServerEvent(String msg){ myPort.write(msg); //Envia os dados para o Arduino via cabo serial println(msg); //Printa no console do processing para ver o que esta sendo reconhecido } |
Na linha “myPort = new Serial(this, Serial.list()[0], 9600);” você muda o “[0]” para o valor da porta serial que você está conectado (0,1,2…).
Arduino
Abaixo é o código do Arduino, que, no loop, verifica se tem existe algo para ser lido. E caso tenha, ele faz a leitura e verifica se o valor recebido é “acende LED” ou “apaga LED”. Com isso, ele acende ou apaga o led que está ligado ao pino 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #define led 2 String frase; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { if (Serial.available()){ // Se existe algo para ser lido frase = Serial.readString(); Serial.println(frase); if(frase.indexOf("acende LED") >-1){ digitalWrite(led, HIGH); } if(frase.indexOf("apaga LED") > -1){ digitalWrite(led, LOW); } } delay(100); } |
Os códigos não são complexos, pois a complexidade está na biblioteca e na página da internet. E como elas já estão feitas pra você, é bem fácil alterar o código e transformar no que você quer.
Veja que a identificação das palavras é feito no Arduino da seguinte forma: o valor é lido como uma String (conjunto de caracteres); depois o programa procura, nessa String, o índice da frase “acende LED” (ou “apaga LED”), se a frase existir na String, essa busca irá retornar um valor maior que 0; com isso a gente executa uma ação para o caso daquela frase ser dita.
Reconhecimento de voz – Como fazer?
Olá sou leigo no assunto gostaria de ver esse código do processing no Microsoft express C#,muda alguma coisa ou tudo,queria acender um led com reconhecimento de voz, agradeco.
Olá, o código seria diferente sim. Na época que fiz os testes usando o visual studio, utilizei algumas API’s da Google para fazer o reconhecimento de voz. O resultado foi bom, mas o processo foi complicado e a utilização do reconhecimento é gratuita até certo limite de uso (relativamente alto). Não possuo mais o código para compartilhá-lo com você, mas deixo aqui o vídeo que utilizei para aprender a fazer: vídeo tutorial. Além disso, foi necessário instalar a biblioteca do Google Cloud: vídeo tutorial. E aqui está o link da página da API. Enfim, este método não é o melhor possível para se fazer o reconhecimento da fala. Recomendo para sua necessidade, criar uma extensão no Google Chrome, conforme mostrei neste post aqui. A melhor forma que encontrei de utilizar o reconhecimento de voz foi utilizando o raspberry pi com a API do Google (futuramente farei um post a respeito). Espero ter ajudado.
este código no processing , é funcional sem a placa do arduino plugada ? pois executo ele mas não me apresenta nada na tela.Poderia anexar um vídeo nesse post com o passo a passo acredito que seria de grande ajuda.
Olá, Paulo. É sim. Veja um vídeo de exemplo no site do autor da ferramenta. Lembre-se de instalar a biblioteca do Processing.
Pode ser o caso do código dele não funcionar mais por conta de alguma atualização do Google Chrome. Assim que conseguir, vou testar pra verificar e atualizar o post com um aviso.