Google's
servers currently support English, Mandarin Chinese, and Japanese.There are
basically to two models supported now: "free_form" for dictation, or
"web_search" for shorter,
search-like
phrases. The web search model is available in all three languages, while
free-form has primarily been optimized for English.
*How to use it in Application:*
You can use it by implementing simple code described
simple steps below:
*A:)First approach :Simply start RecognizerIntent*
1:)You have to check whether Google's Voice Search
application is installed or not:
//
Check to see if a recognition activity is present
<pre>
PackageManager
pm = getPackageManager();
List<ResolveInfo>
activities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if
(activities.size() != 0) {
speakButton.setOnClickListener(this);//simple
button which is enabled if Google's Voice Search application is installed
} else
{
//if
Google's Voice Search application is not installed,it will not work.
speakButton.setEnabled(false);
speakButton.setText("Recognizer
not present");
}
</pre>
2:)Than you have to call RecognizerIntent to start
the speech recognition activity.
<pre>
Intent intent = new
Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);//set model for search
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
"Speech recognition demo");//text displayed when starting intent
startActivityForResult(intent,
VOICE_RECOGNITION_REQUEST_CODE);
</pre>
3;)After completing ,you will get results in
startActivitForResult method
<pre>
@Override
protected
void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==
VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
//
Fill the list view with the strings the recognizer thought it could have heard
ArrayList<String>
matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);//this will get you result texts of
speech converted
mList.setAdapter(new
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
matches));
}
super.onActivityResult(requestCode,
resultCode, data);
}
</pre>
*B:)Implementing SpeechRecognizer:*
Described above is simple demo and easiest way to
integrate speech api into your app.It is also included in api demo.Problem with
this method is there was too little control over the speech recognition error
handling. Second approach is the using
the SpeechRecognizer directly in
code. With this advantage is our
application is not being paused and resumed in order to get the results from
the speech recognition activity.
1;)You have to implement described below code in
onCreate() method :
<pre>
mSpeechRecognizer
= SpeechRecognizer
.createSpeechRecognizer(getBaseContext());
mSpeechRecognizer.setRecognitionListener(mRecognitionListener);
mRecognizerIntent
= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);//model for search
mRecognizerIntent.putExtra("calling_package",
"com.indianic.SpeechTest");//adding your package name
</pre>
2:)Than you have to implement listener for speech
recognizer as described below in which you can handle various events for
SpeechRecognizer:
private RecognitionListener mRecognitionListener =
new RecognitionListener() {
public
void onBufferReceived(byte[] buffer) {
}
public
void onError(int error) {
}
public
void onEvent(int eventType, Bundle params) {
}
public void onPartialResults(Bundle
partialResults) {
Log.d(TAG,
"onPartialResults");
}
public
void onReadyForSpeech(Bundle params) {
}
public
void onResults(Bundle results) {
}
public
void onBeginningOfSpeech() {
}
public
void onEndOfSpeech() {
}
};
3:)Than you have to just start speechrecognizer for
listening in onResume() method:
mSpeechRecognizer.startListening(mRecognizerIntent);
For using above method,You have to add permission in
manifest fro recording audio:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
No comments:
Post a Comment