The uSpeech library provides an interface for voice recognition using the Arduino.
The library utilizes a special algorithm to enable speech detection. First the complexity of the signal is determined by taking the absolute derivative of the signal multiplying it by a fixed point saclar and then dividing it by the absolute integral of the signal. Consonants (other than R,L,N and M) have a value above 40 and vowels have a value below 40. Consonants, they can be divided into frictaves and plosives. Plosives are like p or b whereas frictaves are like s or z. Generally each band of the complexity coeficient (abs derivative over abs integral) can be matched to a small set of frictaves and plosives. The signal determines if it is a plosive or a frictave by watching the length of the utterance (plosives occur over short periods while frictaves over long). Finally the most appropriate character is chosen.
It seems to have better speech recognition capabilities than your Android or iDevice. Eighty percent accuracy, compared to Siri’s sixty.
There is one caveat for the uSpeech library: it will only respond to predefined phrases and not normal speech.