Using Voice Recognition with Imp

I wanted to know if anyone has used a Voice Recognition kit with the Electric Imp so far. I want to be able to recognize a few commands (~20) on the imp. There are a couple of Arduino libraries/boards like the ones below and I was wondering if someone has paired them with an Imp so far.


There are two methods to this, and you’ll find different products available …

  1. Voice recognition, where you train the module to know your voice.
  2. Speaker independent recognition, where it recognizes any voice.

I experimented with this speaker independent module and using Arduino:

The output is serial, so it would easily work with the imp.

You use a PC (USB port) to enter the words or sentences. They provide a simple .exe program. The module essentially becomes a USB drive. Once your list is loaded, you only need to use the serial port to work with it. The USB port is only for programming. The serial is using 2 pins.

Here’s the deal though … If you program a sentence like “Hello Imp”, it will recognize it very well. If you enter many different words or sentences, it recognizes them well, but if it doesn’t find the exact match, it sort of picks a random one (or the closest one). That means it will output a value for just about any words it hears.

So the best mode is to use 2 words, like the example they provide. You say a phrase, and then turn on or off an LED using 2 other phrases. If it doesn’t hear both within 4 seconds, it resets. That minimizes false matches.

An example … You say “Hello imp” and within 4 seconds (to wake it up) you give it another command like “Please open door”. That focuses the recognition to a specific command lessening the probability of a wrong match. To close the door, you program a sentence that is not similar … like: “Close the door please”.
10 hello-imp
11 please-open-door
12 close-door-please
Example: “Hello Imp” …pause… “Close the door please”.
Your program will return 10 and then return 12 … making a positive match.

I like speaker independent modules better because you don’t have to train them to your voice.

Thanks a lot for the insights. This certainly looks interesting. Did you use it in a commercial application. I will look around to see if there are any options with mic’s with smaller form factor.

I used it just to experiment … no project for it yet.
The mike can be any tiny electrec mike, like this:

The other thing to consider when talking about voice recognition is the difference between near-field and far-field recognition. If the expectation is that a user is going to speak directly into a microphone then that is near-field application and is solvable with boards like the one linked above.

Far-field applications are things like Amazon Echo where you can be anywhere in the room and talk to it. It is able to pull your voice out of the background noises without responding all the random sounds in your house. This is typically much harder. For example, the Echo uses 7 different microphones to pick up your voice while using the others to cancel out background noise.

I was always curious how Echo did that. That would be difficult on an experimenter’s level. When you say “Alexa”, and the blue light turns on, typically nobody else is talking. It picks up fairly accurate though.

@mlsiem: Thanks for the insights. I will be ordering the simpleVR board. Do you know what IC is used in the simpleVR board.

@brandon: My application is simple 3-4 word commands in the near field.

Also know that their “software” to program words (voice commands) only works with Windows 7. I tried it with Vista, Windows 8, Windows 10 and it didn’t work. Windows 7 works fine. (Windows XP or others, I didn’t test). The problem is when you ‘connect’ to USB, it doesn’t create a “Drive” for it.

After it is powered-up, there is a tiny pushbutton on the module. You hold the button down at the same time you plug the USB into the PC. It then creates a Drive F or Drive H (whatever is next). Then you release the button.

The maker “Elechouse” shows the newer V3 modules, but they do have the simpleVr:

The other versions seem to require voice training and don’t have the micro USB port. I’m not sure what chips are used. I’m guessing it varies by module versions. They sell other stuff too that looks interesting.

For less than $30 it’s really worth a try. I see they have it ‘on sale’ for $19.99

I have received the SimpleVR boards and both of them seem to be dud. I can not connect them to a Windows7 PC to program them, neither can I run them using the Arduino code as suggested by the manufacturer. I have sent a note to Elechouse for clarification.

What is funny is that when I connect the boards to the PC, a red LED lights up on one of the SimpleVRs, but not on the other.

I will keep you posted.


Hmmm …
To summarize …
You run their software program (the .exe file they provide).
Connecting to Windows 7 using a micro USB cable. You don’t need any wires on the pins, just that cable (it powers the board while connected to PC).
Before you plug-in the cable, you press and hold the tiny black pushbutton on the board.
Plug-in the cable, and when it ‘connects’, release the button.
The program on the PC should say ‘device connected’.

Here’s a simple test you can try without really doing too much …
in fact, this should work right out of the box because they have it preprogrammed:

Remove USB cable.
Connect power to the pins on the board. Just the power, no serial pins.
One LED should always be on.

Speak into the microphone and the other LED on the board should flash.
That indicates it hears something and sends out data on the serial port.