Ich entwickle eine Anwendung, die den Android SpeechRecognizer verwendet. Ich benutze es für etwas Einfaches. Ich klicke auf einen Knopf, mein SpeechRecognizer hört zu und ich habe einige Ergebnisse von dem, was ich gesagt habe.Es ist möglich, SpeechRecognizer schneller zu machen?
Einfach richtig? Nun, mein Problem ist, dass ich SpeechRecognizer schnell machen muss. Ich meine, ich klicke auf meine Schaltfläche, ich sage "Hallo" und SpeechRecognizer dauert etwa 3-4 Sekunden im Gegenzug ein Array mit den möglichen Ergebnissen. Meine Frage ist:
Es ist möglich, SpeechRecognizer Rückkehrergebnisse schneller zu machen? Oder nehmen Sie sich weniger Zeit, um die Listening-Absicht zu schließen und zu verarbeiten, was Sie hören? Vielleicht eine andere Möglichkeit, es zu tun? was wird eine bessere Leistung als das haben?
ich die Bibliothek wurde überprüft, und ich sah diese 3 Parameter:
EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS:
Die Höhe der Zeit, dass es sollte dauern, nachdem wir Rede aufhören zu hören die Eingabe abgeschlossen zu betrachten.
EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
Die Mindestlänge einer Äußerung.
EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS
Die Menge an Zeit, die es dauern sollte, nachdem wir hören Rede stoppen betrachten die Eingabe möglicherweise abgeschlossen.
http://developer.android.com/intl/es/reference/android/speech/RecognizerIntent.html
Ich habe alle von ihnen versucht, aber es funktioniert nicht, oder vielleicht rigth ich nicht mit ihnen. Hier ist mein Code:
public class MainActivity extends Activity {
private static final String TIME_FORMAT = "%02d:%02d:%02d";
private final String TAG = "MainActivity";
private StartTimerButton mSpeakButton;
private CircleProgressBar mCountdownProgressBar;
private CountDownTimer mCountDownTimer;
private TextView mTimer;
private int mRunSeconds = 0;
private SpeechRecognizer mSpeechRecognizer;
private Intent mSpeechRecognizerIntent;
private boolean mIsListening = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRunSeconds = 0;
mTimer = (TextView) findViewById(R.id.timerText);
mCountdownProgressBar = (CircleProgressBar) findViewById(R.id.progressBar);
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
// mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,
// 1000);
// mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS,
// 1000);
// mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS,
// 1000);
SpeechRecognitionListener listener = new SpeechRecognitionListener();
mSpeechRecognizer.setRecognitionListener(listener);
mSpeakButton = (StartTimerButton) findViewById(R.id.btnSpeak);
mSpeakButton.setReadyState(false);
mSpeakButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSpeakButton.isReady()) {
if (!mIsListening)
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
} else
mSpeakButton.setReadyState(true);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
return true;
}
public void onSpeechResults(ArrayList<String> matches) {
for (String match : matches) {
match = match.toLowerCase();
Log.d(TAG, "Got speech: " + match);
if (match.contains("go")) {
//Do Something
mSpeechRecognizer.stopListening();
}
if (match.contains("stop")) {
//Do Something
mSpeechRecognizer.stopListening();
}
}
}
protected class SpeechRecognitionListener implements RecognitionListener
{
@Override
public void onBeginningOfSpeech()
{
//Log.d(TAG, "onBeginingOfSpeech");
}
@Override
public void onBufferReceived(byte[] buffer)
{
}
@Override
public void onEndOfSpeech()
{
//Log.d(TAG, "onEndOfSpeech");
}
@Override
public void onError(int error)
{
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
//Log.d(TAG, "error = " + error);
}
@Override
public void onEvent(int eventType, Bundle params)
{
}
@Override
public void onPartialResults(Bundle partialResults)
{
ArrayList<String> matches = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (String match : matches) {
match = match.toLowerCase();
Log.d(TAG, "onPartialResults : " + match);
}
}
@Override
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech"); //$NON-NLS-1$
}
@Override
public void onResults(Bundle results)
{
//Log.d(TAG, "onResults"); //$NON-NLS-1$
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
onSpeechResults(matches);
// matches are the return values of speech recognition engine
// Use these values for whatever you wish to do
}
@Override
public void onRmsChanged(float rmsdB)
{
}
}}
Vielen Dank für Ihre Zeit! Hoffe, dass mir jemand ein bisschen helfen kann: P!
Nein, in Betracht ziehen, flexiblere Erkennungen zu verwenden –
können Sie mir einen Ratschlag über andere recognizers geben, die ich verwenden kann? –