Nach einigen 3rd-Party-Spracherkennungsoptionen Auswertung Anerkennung Google Voice wird durch weit am genauesten. Bei der Verwendung der Google-Spracherkennung gibt es zwei grundlegende Ansätze. Am einfachsten ist es, eine Absichtserklärung zu starten und die Ergebnisse entsprechend zu behandeln:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
dann in Ihrem onActivityResults(), würden Sie die Spiele zurück durch den Dienst behandeln:
/**
* Handle the results from the recognition activity.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//Toast.makeText(this, "voice recog result: " + resultCode, Toast.LENGTH_LONG).show();
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);
// handleResults
if (matches != null) {
handleResults(matches);
}
}
}
Der zweite Ansatz ist mehr beteiligt ermöglicht jedoch eine bessere Behandlung einer Fehlerbedingung, die auftreten kann, während der Erkennungsdienst ausgeführt wird. Mit diesem Ansatz würden Sie eigene Erkennungslistener und Rückrufmethoden erstellen. Zum Beispiel:
Start Zuhören:
mSpeechRecognizer.startListening(mRecognizerIntent);
wo mRecognizerIntent:
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);
mRecognizerIntent.putExtra("calling_package", "com.you.package");
dann, erstellen Sie Ihre Zuhörer:
private RecognitionListener mRecognitionListener = new RecognitionListener() {
public void onBufferReceived(byte[] buffer) {
// TODO Auto-generated method stub
//Log.d(TAG, "onBufferReceived");
}
public void onError(int error) {
// TODO Auto-generated method stub
// here is where you handle the error...
public void onEvent(int eventType, Bundle params) {
// TODO Auto-generated method stub
Log.d(TAG, "onEvent");
}
public void onPartialResults(Bundle partialResults) {
// TODO Auto-generated method stub
Log.d(TAG, "onPartialResults");
}
public void onReadyForSpeech(Bundle params) {
// TODO Auto-generated method stub
Log.d(TAG, "onReadyForSpeech");
}
public void onResults(Bundle results) {
Log.d(TAG, ">>> onResults");
//Toast.makeText(getBaseContext(), "got voice results!", Toast.LENGTH_SHORT);
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
handleResults(matches);
}
public void onRmsChanged(float rmsdB) {
// TODO Auto-generated method stub
//Log.d(TAG, "onRmsChanged");
}
public void onBeginningOfSpeech() {
// TODO Auto-generated method stub
Log.d(TAG, "onBeginningOfSpeech");
}
public void onEndOfSpeech() {
// TODO Auto-generated method stub
Log.d(TAG, "onEndOfSpeech");
}
};
Sie handle hinzufügen können() zu tun, was auch immer Sie wollen.
Nicht das erste Mal, dass ich von CMUSphinx gehört habe, während ich gesucht habe. Danke für die Info. – LefterisL