Ist es möglich, SpeechRecognizer schneller zu machen?

Ich entwickle eine Anwendung, die den Android SpeechRecognizer verwendet. Ich benutze es für etwas Einfaches. Ich klicke auf eine Schaltfläche, mein SpeechRecognizer fängt an zu lauschen und ich erhalte einige Ergebnisse von dem, was ich gesagt habe.

Einfach richtig? Nun, mein Problem ist, dass ich SpeechRecognizer schnell machen muss. Ich meine, ich klicke auf meinen Knopf, ich sage "Hallo" und SpeechRecognizer benötigt ungefähr 3-4 Sekunden, um ein Array mit den möglichen Ergebnissen zu erhalten. Meine Frage ist

Ist es möglich, dass SpeechRecognizer schneller Ergebnisse liefert? Oder nehmen Sie sich weniger Zeit, um die Listening-Absicht zu schließen und zu verarbeiten, was sie hört? Vielleicht ein anderer Weg, es zu tun? was wird eine bessere Leistung als diese haben?

ch überprüfte die Bibliothek und sah diese 3 Parameter:

EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS:

Die Zeit, die benötigt wird, nachdem wir keine Sprache mehr gehört haben, um die Eingabe als vollständig zu betrachten.

EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS

ie minimale Länge einer Äußerun

EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS

Die Zeit, die benötigt wird, nachdem wir keine Sprache mehr gehört haben, um die Eingabe als möglicherweise vollständig zu betrachten.

http: //developer.android.com/intl/es/reference/android/speech/RecognizerIntent.htm

Ich habe alle ausprobiert, aber es funktioniert nicht oder ich benutze sie nicht richtig. 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 weiterhelfen kann: P!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage