I want to add a voice interface to my Android app. Two requirements:
I only need to recognize from a small dictionary of words at any time - basically any clickable element on screen, and most of the clickable elements already have text on them, so it would literally be "say what you see".
Continuous voice recognition while the app is visible, although I could live with having to say "Ok app" before the speech to be acted upon.
What is the optimum way to implement this?
Thanks
NickB
If you want something offline, I'd look at PocketSphinx (https://cmusphinx.github.io/wiki/tutorialandroid/). I used it for offline wake word recognition. It seems to err on the side of being more accepting of what you say, rather than less.
For continuous listening, you might look at IBM's Watson's Speech to Text software (https://github.com/watson-developer-cloud/android-sdk), which is a cloud bases Speech to Text.
I was able to combine the two, using PocketSphinx to detect wake words and then using Watson to get good speech to text results.
Related
I would really appreciate little help with voice control for android. I am making voice-controlled chess, but voice recognition is identifying words that I don't want.
Example: "King to C7" > "Pink 2 See 7"
So, is there a way how to filter only words that I want to use? Make something like whitelist? Thanks for every response.
Unfortunately, this isn't possible because of the way how speech to text works. Limiting the speech recognition only to some small whitelist would require retraining of the neural network (and that isn't something that an individual can do).
I have started with Speech recognition using android, sl4a and python and so far, it works fine.
My user is just supposed to input numbers between 0 and 9 with his voice. Is there a way to tell android to only search in those number and therefore reduce the time of recognition (and probably errors) ?
No. You cannot change what google returns. You can only process the results.
Fortunately, you can process the results to increase the chance of a match.
For example, you could use a phonetic matching algorithm like
Soundex
Using Soundex or something similar, if the recognizer hears something like "true" your code could still recognize it as the number 2.
Does anybody know if there's a way to progmatically disable the "Block offensive words" setting for Android voice recognition?
I know I can do it from my settings but would like to have control of it within the context of the voice recognizing that my application does.
I don't think so. When recognition returns an offensive word it will say a bunch of **
You only have control over the LANGUAGE_MODEL.
i am building an application "Voice Calculator" which takes input as a voice and display result based on the input.
i dont want to use a google servers for voice recognization, is there any way through i can achive my goal.
i want to take input as " two plus three multiply four hundred twenty two minus one hundred" etc. so i would like to record and compare every words,
that can be converted in to text and which can be used to perform calculation.
can any one guide me , how to achive this? i am done with designing calculator with its functionality,
i hope i am able to explain my doubt, looking for help.. thank u..
I have used Google API for voice recognition, although I wanted an off-line version, I need to rely on voice recognition.
Have a look at Voice Recognization for android example.
Granted that not many device support it yet, but Jelly Bean will allow you to download Google's voice controls to the device for offline use.
I don't have much experience with Android, but was asked by a hearing-impaired friend if there is a way to essentially "stream" voice to text on a mobile device. I've used and looked into the android built in api, but it seems that only sends the speech off for processing after the speech input is completed. I'm looking for something that works contiguously (similar to how Dragon works with microsoft word).
Perhaps there is already an app that does this. If not, is there a way to implement this with the current Android OS/API?
Any suggestions appreciated.
As you've mentioned, the speech-to-text recognition is sent to Google for processing. This can take enormous computing power, which current devices simply can't handle (yet). Because everything is processed server-side, you won't be able to do immediate speech recognition in real time directly on the phone.
It's possible that somebody has created a 3rd-party library to do this, but I'm not aware of any. Even so, it would probably have some significant limitations or reduced accuracy.
You can use this Extra for the Recognizer Intent:
String EXTRA_PARTIAL_RESULTS Optional boolean to indicate whether partial results should be returned by the recognizer as the user speaks (default is false).
http://developer.android.com/reference/android/speech/RecognizerIntent.html#EXTRA_PARTIAL_RESULTS