Speech Recognition - Robot Thinking and Understanding
November 23, 2013
Programming a robot to do a single specific task such as following a line is hard enough for most people. So how do we program a robot so it can perform many different task? How do we command / control it?
Recently I have been wanting to use the speech and voice recognition of an Android mobile phone. My friend Bing wrote a simple app for me that allows my controller to connect to an Android phone via Bluetooth and then send the phone a list of words that I want the robot to recognize. For example: "OddJob,go,forward,backward,turn,stop"
The first word in the list is the robots name. If the app does not hear a sentence starting with the robot's name then it will ignore anything being said. Once it hears a sentence starting with the robots name then it will look for words in the word list supplied. The Android software will offer several different possible results when it recognizes a sentence so the app looks for the first sentence in the list where all words are recognized. This means your instructions must be made from words in the list but you can say them in different combinations.
Once the app finds a sentence where all words are recognized it returns a number for each word it recognized. For example the robots name is always first so the app will always send a 1 to indicate the robot's name. using my previous word list example, go=2, forward=3 etc. The next problem is making sense of the words (numbers). The simplest solution is probably to group the words into different types and then treat the different types like rotary switches.
This could be done with switch case statements or a 4 dimensional array but the logic would not be flexible. If you wanted to add new words or even to change the code so that the robot could learn new words then switch case statements would be a nightmare to update and a 4D array would quickly become too big to fit in memory.
So now I am trying to think of a more flexible logic system. Preferably one that can learn new words without the code being re-written. I was thinking of some of the early A.I. programs that you could have a conversation with. Although they might not pass a Turing test they might be good enough for the robot to follow your instructions.