Módulo de Reconhecimento de Voz consiste em uma placa integrada com um microfone onde se é possível armazenar até 80 comandos de voz e com a possibilidade de operar 7 desses comandos ao mesmo tempo.
Esse Módulo de Reconhecimento de Voz possibilita um maior requinte em seu projeto tanto na área da robótica quanto em um projeto um pouco mais sofisticado na automação residencial.
Especificações
-
- Tensão de Operação: 4,5 a 5,5V
- Capacidade de armazenamento de 80 comandos diferentes
- Cada comando pode ter até 1500ms de voz (uma ou duas palavras)
- Suporta até 7 comandos de voz ao mesmo tempo
- Capacidade de armazenamento de 80 comandos diferentes
- Corrente de Operação: < 40 mA
- Interface: UART e GPIO
- Conector P2 3,5mm para microfone
- Precisão de reconhecimento de voz: 99%
- Dimensões: 31 x 50 mm
Simples Aplicação com o Módulo de Reconhecimento de Voz
Primeiramente, necessitamos adquirir alguns componentes:
-
- 01 Arduino
- 01 Módulo de Reconhecimento de Voz V3
- 04 LEDs (cores diferentes)
- 04 Resistores de 220 Ω
Em seguida, faremos a conexão conforme o esquema:
Módulo ⇒ Arduino
GND ⇒ GND
VCC ⇒ 5V
RXD ⇒ 3 (53 Arduino Mega)
TXD ⇒ 2 (52 Arduino Mega)
Arduino UNO
Arduino MEGA
Para evitar erro de “Train Time Out” não conectaremos o TXD e o RXD nas portas 2 e 3, mas sim nas portas 52 e 53.
Atenção ao conectar o microfone na placa, pois, ao inserir o plug, devemos girar um pouco o plug macho à esquerda para se obter um encaixe perfeito do microfone ao módulo de reconhecimento de voz.
Então, agora, partiremos para o código, porém, primeiramente, devemos baixar e incluir a biblioteca VoiceRecognitionV3.h.
Feito isso, na IDE do Arduino em Exemplos → VoiceRecognitionV3 → vr_sample_train abriremos esse código onde iniciaremos a gravação dos comandos de voz com um treinamento executando essa rotina.
Sabendo-se que no projeto acenderemos e apagaremos 4 LEDs com o comando: amarelo, azul, verde e vermelho.
Treinamento da gravação dos comandos de voz
Então, é só carregar o código vr_sample_train e, em seguida, abrir o Monitor Serial.
Percebemos que para fazer a gravação dos comandos de voz, utilizaremos os comandos train seguido da numeração de 0 a 79.
Então, sabendo disso, podemos iniciar a gravação dos comandos de voz para acender os LEDs, podendo ser qualquer palavra e, para facilitar o funcionamento, escolheremos as palavras amarelo, azul, verde e vermelho tanto para acender como para apagar os respectivos LEDs.
Concluindo train 0 para Amarelo, train 1 para Azul, train 2 para Verde e train 3 para vermelho, então, agora é só ajustar o código.
Código de Aplicação
Fazendo alguns ajustes no próprio exemplo dessa biblioteca e indo em Exemplos → VoiceRecognitionV3 → vr_sample_control_led, adaptaremos esse código para controlar 4 LEDs pela voz, sendo que utilizaremos o mesmo comando tanto para acender como para apagar.
Então, seguindo para o exemplo, faça as alterações conforme o Sketch abaixo:
#include <SoftwareSerial.h> #include "VoiceRecognitionV3.h" /** Connection Arduino VoiceRecognitionModule 2 -------> TX 52 Arduino Mega 3 -------> RX 53 Arduino Mega */ //VR myVR(2, 3); // 2:RX 3:TX VR myVR(52, 53); // 52:RX 53:TX uint8_t records[7]; // save record uint8_t buf[64]; # define LedAmarelo 5 # define LedAzul 6 # define LedVerde 7 # define LedVermelho 8 # define on_off_LedAmarelo (0) # define on_off_LedAzul (1) # define on_off_LedVerde (2) # define on_off_LedVermelho (3) /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> command length len --> number of parameters */ void printSignature(uint8_t *buf, int len) { int i; for (i = 0; i < len; i++) { if (buf[i] > 0x19 && buf[i] < 0x7F) { Serial.write(buf[i]); } else { Serial.print("["); Serial.print(buf[i], HEX); Serial.print("]"); } } } /** @brief Print signature, if the character is invisible, print hexible value instead. @param buf --> VR module return value when voice is recognized. buf[0] --> Group mode(FF: None Group, 0x8n: User, 0x0n:System buf[1] --> number of record which is recognized. buf[2] --> Recognizer index(position) value of the recognized record. buf[3] --> Signature length buf[4]~buf[n] --> Signature */ void printVR(uint8_t *buf) { Serial.println("VR Index\tGroup\tRecordNum\tSignature"); Serial.print(buf[2], DEC); Serial.print("\t\t"); if (buf[0] == 0xFF) { Serial.print("NONE"); } else if (buf[0] & 0x80) { Serial.print("UG "); Serial.print(buf[0] & (~0x80), DEC); } else { Serial.print("SG "); Serial.print(buf[0], DEC); } Serial.print("\t"); Serial.print(buf[1], DEC); Serial.print("\t\t"); if (buf[3] > 0) { printSignature(buf + 4, buf[3]); } else { Serial.print("NONE"); } Serial.println("\r\n"); } void setup() { /** initialize */ myVR.begin(9600); Serial.begin(115200); Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample"); pinMode(LedAmarelo, OUTPUT); pinMode(LedAzul, OUTPUT); pinMode(LedVerde, OUTPUT); pinMode(LedVermelho, OUTPUT); if (myVR.clear() == 0) { Serial.println("Recognizer cleared."); } else { Serial.println("Not find VoiceRecognitionModule."); Serial.println("Please check connection and restart Arduino."); while (1); } if (myVR.load((uint8_t)on_off_LedAmarelo) >= 0) { Serial.println("on_off_LedAmarelo loaded"); } if (myVR.load((uint8_t)on_off_LedAzul) >= 0) { Serial.println("on_off_LedAzul loaded"); } if (myVR.load((uint8_t)on_off_LedVerde) >= 0) { Serial.println("on_off_LedVerde loaded"); } if (myVR.load((uint8_t)on_off_LedVermelho) >= 0) { Serial.println("on_off_LedVermelho loaded"); } } void loop() { int ret; ret = myVR.recognize(buf, 50); if (ret > 0) { switch (buf[1]) { case on_off_LedAmarelo: // Liga/Desliga LED Amarelo digitalWrite(LedAmarelo, digitalRead(LedAmarelo) ^ 1); break; case on_off_LedAzul: // Liga/Desliga LED Azul digitalWrite(LedAzul, digitalRead(LedAzul) ^ 1); break; case on_off_LedVerde: // Liga/Desliga LED Vermelho digitalWrite(LedVerde, digitalRead(LedVerde) ^ 1); break; case on_off_LedVermelho: // Liga/Desliga LED Vermelho digitalWrite(LedVermelho, digitalRead(LedVermelho) ^ 1); break; default: Serial.println("Record function undefined"); break; } /** voice recognized */ printVR(buf); } }
Percebe-se que com essa biblioteca fica muito simples e fácil trabalhar com esse Módulo de Reconhecimento de Voz V3. Daí em diante é só apelar para a sua imaginação e aplicar em inúmeros projetos.