Java 语音识别器侦听器错误\u网络

Java 语音识别器侦听器错误\u网络,java,android,speech-recognition,audio-recording,Java,Android,Speech Recognition,Audio Recording,正如主题所暗示的,我的语音识别听众有问题。 此错误在我开始侦听后随机出现。问题是这样的: 关于这个答案: 根据SpeechRecoginator产生的网络错误(值2),错误是由三星语音API(由Vlingo提供动力)引起的。将手机设置中的语音API更改为标准Google API解决了这些问题 我可以补充一点,我使用的是三星Galaxy S4(显然,Vlingo识别器未经检查) 好的。。。我的代码: SpeechRecognizerService.java @Override public voi

正如主题所暗示的,我的语音识别听众有问题。 此错误在我开始侦听后随机出现。问题是这样的:

关于这个答案:

根据SpeechRecoginator产生的网络错误(值2),错误是由三星语音API(由Vlingo提供动力)引起的。将手机设置中的语音API更改为标准Google API解决了这些问题

我可以补充一点,我使用的是三星Galaxy S4(显然,Vlingo识别器未经检查)

好的。。。我的代码:

SpeechRecognizerService.java

@Override
public void cancel() {
    mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false);
    mSpeechRecognizer.cancel();
    listener.setListening(false);
}

@Override
public void listen() {
    mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
    if (!listener.isListening()) {
        mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
        listener.setListening(true);
    }
}

@Override
public void repeat() {
    mSpeechRecognizer.cancel();
    mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
    listener.setListening(true);
}
SpeechRecognizerIntent

public Intent getSpeechIntent() {
    Intent mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "pl");
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, Config.getContext().getPackageName());
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_WEB_SEARCH_ONLY, true);
    mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 100);
    return mSpeechRecognizerIntent;
}
SpeechRecogenerListener

@Override
public void onBeginningOfSpeech() {
    Log.i(TAG, "on begining");
}

@Override
public void onBufferReceived(byte[] buffer) {

}

@Override
public void onEndOfSpeech() {
    Log.i(TAG, "on end");
}

@Override
public void onError(int error) {    
    Log.i(TAG, error + "");
    service.repeat();
}

@Override
public void onEvent(int eventType, Bundle params) {

}

@Override
public void onPartialResults(Bundle partialResults) {
}

@Override 
public void onReadyForSpeech(Bundle params) {
    Log.i(TAG, "on ready for speech");
}

@Override
public void onResults(Bundle results) {
    Log.i(TAG, "on results");
    service.manageResults(results);
    service.cancel();
}

@Override
public void onRmsChanged(float rmsdB) {

}
正常工作时的LogCat

01-18 12:56:08.827: I/SPEECH LISTENER(602): on ready for speech
01-18 12:56:09.538: I/SPEECH LISTENER(602): on begining
01-18 12:56:10.969: I/SPEECH LISTENER(602): on end
01-18 12:56:11.670: I/SPEECH LISTENER(602): on results
01-18 12:56:11.740: I/SPEECH LISTENER(602): on end
在这里,这是正确的工作,但为什么“结束”触发两次

触发错误时的LogCat

01-18 13:00:42.694: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:42.694: I/SPEECH LISTENER(3202): 2
01-18 13:00:42.704: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:42.704: I/SPEECH LISTENER(3202): 2
01-18 13:00:43.185: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.415: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.415: I/SPEECH LISTENER(3202): 2
01-18 13:00:43.425: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.425: I/SPEECH LISTENER(3202): 2
01-18 13:00:43.625: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.975: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.975: I/SPEECH LISTENER(3202): 2
01-18 13:00:43.985: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:43.985: I/SPEECH LISTENER(3202): 2
01-18 13:00:44.176: I/SPEECH LISTENER(3202): on ready for speech
01-18 13:00:46.548: I/SPEECH LISTENER(3202): on begining
01-18 13:00:47.979: I/SPEECH LISTENER(3202): on end
01-18 13:00:49.060: I/SPEECH LISTENER(3202): on results
01-18 13:00:49.190: I/SPEECH LISTENER(3202): on end
2表示触发错误(2-错误\u网络)

Android Manifest.xml-权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />

我也试着像stackoverflow上的某个人一样使用我的SpeechRecognitor作为单例,但它并没有改变什么

我还可以补充一点,我不能使用离线识别,因为我的语言(波兰语)还不受支持