How to Use a Serial Voice Recognition Module - Arduino Tutorial

60K20129

Intro: How to Use a Serial Voice Recognition Module - Arduino Tutorial

In this tutorial you will learn how to use a voice recognition - serial - module with the Arduino uno board. This module can store up to 15 voice commands. Those are divided into 3 groups, with 5 commands in each group.

First we should train the module with voice instructions group by group. After that, we should import one group before it could recognize the 5 voice instructions within that group.If we need to implement instructions in other groups, we should import the group first. Only one group can be active per time.

In this tutorial we will use an RGB LED and we will try to change the color of it with voice commands.

So, let's get started!

STEP 1: What You Will Need

For this tutorial you will need:

  • Arduino uno
  • Breadboard (or breadboard shield)
  • Voice Recognition Module (serial)
  • Microphone
  • RGB LED
  • 3x 220 Ohm resistors

(optional an usb to serial module)usbo

STEP 2: Recording

The first think that we have to do is to record voice instructions/commands. Each voice instruction has the maximum length of 1300ms (1.3sec), which ensures that most words can be recorded. Once you start recording, you can’t stop the recording process until you finish all the 5 voice instructions/commands of one group. Also, once you start recording, the previous content of that group will be erased.

Download and extract AccessPort from here. This tool will allow us to send HEX commands to the voice recognition module.

Connection between Arduino* and module for recording procedure:

  • Module Vcc to Arduino 5V
  • Module GND to Arduino GND
  • Module RX to Arduino RX
  • Module TX to Arduino TX

*You must remove ATmega328p from board or program it with blink example. If you want you can also use one usb to serial board to complete this procedure.

Available commands:

  • Delete Group 1 - send hex AA 01
  • Delete Group 2 - send hex AA 02
  • Delete Group 3 - send hex AA 03
  • Delete All Groups - send hex AA 04
  • Record Group 1 - send hex AA 11
  • Record Group 2 - send hex AA 12
  • Record Group 3 - send hex AA 13
  • Import Group 1 - send hex AA 21
  • Import Group 2 - send hex AA 22
  • Import Group 3 - send hex AA 23
  • Query the recorded group - send hex AA 24

Let's get started with our voice commands!

We will record the group 1 with 5 commands: White, Red, Blue, Green and OFF.

Open AccessPort app and begin the serial communication at 9600 bps. (second image above).

Now click on hex and type AA 11 and click the send button.

This will start the recording procedure for the first group.

In this step, time is the key... You will be asked to record each command (white, red etc) three times.

If you having troubles with this, try to read this manual. When recording is completed type and send AA 21 to test you voice commands.

Disconnect the voice recognition module from the Arduino uno board and proceed to next step.

STEP 3: The Circuit

The connections are pretty easy, see the above image with the breadboard circuit schematic.

Note: Module RX - Arduino TX and Module TX - Arduino RX

STEP 4: The Code

Here's the code, embedded using Codebender!

Try downloading the Codebender plugin and clicking on the "Run on Arduino" button to program your Arduino board with this sketch. And that's it, you've programmed your Arduino uno board with this sketch!


STEP 5: Well Done!

You have successfully completed one more "How to" tutorial and you learned how to use the voice recognition module. What next? Try to add more voice commands to your code.

I hope you liked this, let me know in the comments.

23 Comments

What are the five pins along the side of the module used for?

how to creat group 2 please help me
hye, sorry im in urgent now.. when im try to send the code AA36.. after i click send, the '' common mode'' doesn' t appear.. and im try to use a delete code''AA04'' its nothing happen..,, is it my voice recognition module is broken? can i know why? can you help me to fix this?.. thankyou, sorry for bad english
Hi
Is it possible to use an if statement in one case, to use one command to turn a led on when off and off when on?
Can we do the same thing with atmega32. If yes, whats the new code
hi,

i have followed same procedure but unfortunately only green led is working occasionally why is that ??
hello,
i have created same thing but occasionally only green led was working please tell me what steps i should follow.
If i want to switch group than what should i do ?
For example in first group i am having 5 module Light, Fan, TV, AC, Bulb..
Than in second group i am having command like On, Off, Speed and other two..
Than what should be code ?

hi ....i have a question ....how can i change the code that can use the ordinary lamp that can switch on and switch off....if you have the right code suggestion....can you tell me.

hi sorry for my bad english, its a 3 years post sorry to add a new post but, i have a big probleme. i have geeetech recognition modul and after finshing my first groupe the accessport answer 1 groupe ok but my modul stop respending with a quik flashin red light like in usb mode and no aswer in the accessport neither in arduino its always busy i want to reset it dead from step one but nothing .

please provide me the meaning of given below code lines :-
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);

what does they actual perform step by step?

Nice work.

You cannot create more than 5 orders which limits the possibilities. We can create orders such as "Red" "More" "Blue" "Less" "Green". That's not enough, I'd like to have "Full" "Zero" "Fifty" etc. any idea ?

Hi! You can use only 5 voice-commands with this module. :(

Only one group can be available per time.

You can try to call another group inside voice-command from another group, like this:

::case 0x11:

:: //Code for 1st command of group 1 - Do something...

:: //Send 0xAA00 to exit group

:: Serial1.write(0xAA);

:: Serial1.write(0x00);

:: delay(200);

:: //send 0xAA22 to enter group 2

:: Serial1.write(0xAA);

:: Serial1.write(0x22);

::break;

It does not work. can you help me whit this. I am trying to use all 3 grups

Ok i have solution:

case 0x11:

Serial.write(0xAA);

Serial.write(0x22);// enter group 2

break;

I am trying to help a friend who has a school project on voice recognition and they were asked to put limitations for the number of users that could use the machine. for example: the number of users will be limited to 4 persons and the 5th person will not be able to activate the machine or whatever... just like using voice as password.. something like that. can you help us? please...

Hello,

I'm trying a similar project where only 4 people can turn ON LED by saying ON, but if fifth person says On the LED will not lit.

Any luck?

Is there a flexibility in the recognition of the commands?? Can it only recognize keywords in the command given by the speaker so that the speaker can say anything that contains the keywords??
can I use this module?
I want to use it because in the description it said that it supports up to 80 voice comands.

http://pages.ebay.com/link/?nav=item.view&id=321841171695&alt=web
More Comments