Módulo de Reconhecimento de Voz V3


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

 Módulo de Reconhecimento de Voz - UNO

Arduino MEGA

Módulo de Reconhecimento de Voz - 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 ExemplosVoiceRecognitionV3vr_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.

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

 

Módulo de Reconhecimento de Voz V3

Onde comprar?

LOJAS

Conheça também!