Voice Recognition and Speech With Arduino Shield

by MikeTheMaker in Circuits > Arduino

3634 Views, 8 Favorites, 0 Comments

Voice Recognition and Speech With Arduino Shield

voice recog.jpg

In this instructable I'll show how to use a speaker independent, cloudless, standalone speech recognizer and voice synthesizer for Arduino.

board - 1.jpg

This requires:

One Arduino Uno

One MOVI shield

https://www.amazon.com/Arduino-Shield-Speech-Recog...

DC power supply--at least 7 volts (up to 16 volts) @ 500 mA

One led

One 200 ohm resistor

Powered speaker (or earphones) if you want to hear synthesized speech

This is a small part of a larger project I was working on, "Little Friend." The robot's name in "Little Friend" is Mato (short for tomato).

I changed one of the sample programs (www.audeme.com/MOVI) so that the shield would
recognize "Mato" when spoken.

If I say, "Mato, let there be light," an led on pin 13 will illuminate.

If the led is on and I say, "Mato, go dark," then the led will turn off.

In a quiet room, I had success at a distance of over 30 feet from the recognizer board. Here's the pertinent part of the code:

recognizer.init();

// Initialize MOVI (waits for it to boot)

//* // Note: training can only be performed in setup().

// The training functions are "lazy" and only do something if there are changes.

// They can be commented out to save memory and startup time once training has been performed.

recognizer.callSign("Mato");

// Train callsign Mato (may take 20 seconds)

recognizer.addSentence("Let there be light"); // Add sentence 1

recognizer.addSentence("Go dark"); // Add sentence 2

recognizer.train(); // Train (may take 20seconds) //*/

// recognizer.setThreshold(5); // uncomment and set to a higher value (valid range 2-95) if you have a problems due to a noisy environment. }

void loop() // run over and over

{

signed int res=recognizer.poll(); // Get result from MOVI, 0 denotes nothing happened, negative values denote events (see docs)

if (res==1) { // Sentence 1.

digitalWrite(led, HIGH); // Turn on LED

recognizer.say("and there was light!"); // Speak a sentence

}

if (res==2)

{

// Sentence 2

digitalWrite(led, LOW); // Turn off LED

}

As you can see, it's not too difficult to program the recognizer. You can choose a male or female voice for the synthesizer (they have a British accent).

The downsides:

The shield costs about $75.00

The power cannot be supplied by usb--it must be a higher external voltage (like 7 volts or so). Current consumption (in my test) was about 140 milliamps for the Arduino and shield while waiting for speech. Recognition time is a couple of seconds.

This video shows Mato (using the female vocal choice) interacting with the environment. She detects the green plastic frog and says, "I love the little froggy. Please move out of the way little froggy." When encountered again--and if the frog is moved--she says, "Thank you for moving out of the way, little froggy."

When she sees the pink ball, she tracks the ball and speaks (randomly choosing one of several possibilities). She says, "Wowee, wowee, pink ball ahead!" Or she may say, " I love the pink ball, pink ball."

Many more details can be found at: https://hackaday.io/project/10162-little-friend