Voice Recognition and Speech With Arduino Shield

About: I am an author and a maker. My current project is Santa's Shop. I'm working on a science fiction type book--more later. @EngineerRigsby

Intro: Voice Recognition and Speech With Arduino Shield

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

Step 1:

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.

Step 2:

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

Share

    Recommendations

    • Audio Contest 2018

      Audio Contest 2018
    • Fix It! Contest

      Fix It! Contest
    • Furniture Contest 2018

      Furniture Contest 2018

    2 Discussions

    0
    None
    Build_it_Bob

    8 months ago

    Hi Mike,

    Looks great. How many statements / responses can you set up?

    Build_it_Bob

    1 reply
    0
    None
    MikeTheMakerBuild_it_Bob

    Reply 8 months ago

    I think the board can handle about 150 inputs and speak back 200 to 1000 responses. I've used it more for speech output rather than voice input . . . here's an example:

    I added another step to the instructable so that people could look at this if they are interested.