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).
Related
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.
I've been using android text to speech and I have it working well, but the voice never sounds as good as I would like it to. I understand its never going to sound "natural" but does anyone have any suggestions or know of any ways to make it sound more human or at least understandable.
I know you can adjust the pitch and rate and language. Are there any other adjustments that can be made? or even a better text to speech API that sounds better?
No, you can't improve TTS quality. Even changing the pitch is dangerous. If you set it too low the TTS sounds terrible.
The only way to get a better voice would be to use a service that is not google such as ispeech
Android text to speech supports multiple voices, the ones installed with your phone will vary depending on the model. One of my Nexus phones had excellent voices, but every (non-nexus) phone since then has had poor ones. You can change the active voice and download more voices in Settings->Language & [varies]->Text-to-speech output. Google's range seems to be limited to poor quality voices at the moment. You can also download paid for voices and/or engines from the likes of Svox, Pico and Ivona.
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.
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