Recognize letters said by a person using Java

I think a good option is to follow the guidlines @rmunoz posted. But if you do not want to use an external activity, then I am afraid, you have to code text recognition by yourself. I am also not sure, how good is speech recognition for letters in android. I suppose the mechanisms behind were trained for words.

I think this would be best accomplished with Neural Networks. Firstly, you will have to collect a lot of samples of different people saying letters (for each letter you get lets say 2 examples from a person). You would also denote the letter, which the person said. So suppose in such a way, you get 52 examples from a person and you have 10 people participating. Now you acquired 520 examples of spoken letters. After that you have to construct your Neural Network from the supplied examples. A very good tutorial is here: https://www.coursera.org/course/ml. Then you just have to remember this neural network (the parameters in the neural network), and use it for classification. The person speaks something in their microphone, and the neural network classifies the newly acquired example with a letter.

There is only one problem. How to represent the user inputted sound, so that the neural network can be trained and later classify this sound. You have to compute some spectral features of the inputted sound. You can read something about that in http://www.cslu.ogi.edu/tutordemos/nnet_recog/recog.html. But I strongly advise you, to view the first link before diving into next (if you do not know anything about neural networks yet).

Other answers have an assumption, that you can already recognize words such as "Are". But from my understanding of the question, this is not the case. So the mapping posted in the question will not help you.


You could use get the text from voice using Google's API (have a quick look to http://developer.android.com/reference/android/speech/RecognizerIntent.html ).

Then, if you want to infer the language (and then, the alphabet) you could use an open project called "Language detector" based on n-grams:

http://code.google.com/p/language-detection/

You could combine it using "dictionary coincidences" and other features that you can get from the text.