“你好,我是韩国人,我不会英语。但是我正在使用Google API中的语音识别器开发android应用程序,我想增加识别时间,但是当我单击按钮时,我不知道没说,5秒钟后,它发生了ERROR_SPEECH_TIMEOUT,然后它听不到我的声音了
所以我找到了三个参数并尝试应用它。但是什么也没发生。
EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS
RecognitionListener listener = new RecognitionListener() {
@Override
public void onReadyForSpeech(Bundle params) {
Log.d(" 태그", "speech Ready");
Toast.makeText(getApplicationContext(), "Let's speak !", Toast.LENGTH_SHORT).show();
}
@Override
public void onBeginningOfSpeech() {
Log.d(" 태그", "speech Begin");
}
@Override
public void onRmsChanged(float rmsdB) {
Log.d(" 태그", "speech RMS changed");
}
@Override
public void onBufferReceived(byte[] buffer) {
Log.d(" 태그", "speech buffer received");
}
@Override
public void onEndOfSpeech() {
Log.d(" 태그", "speech end");
Toast.makeText(getApplicationContext(), "녹음 끝", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int error) {
switch (error) {
case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
Log.d(" 태그", "ERROR_NETWORK_TIMEOUT");
break;
case SpeechRecognizer.ERROR_NETWORK:
Log.d(" 태그", "ERROR_NETWORK");
break;
case SpeechRecognizer.ERROR_AUDIO:
Log.d(" 태그", "ERROR_AUDIO");
break;
case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
Log.d(" 태그", "ERROR_SPEECH_TIMEOUT");
break;
case SpeechRecognizer.ERROR_CLIENT:
Log.d(" 태그", "ERROR_CLIENT");
break;
case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
Log.d(" 태그", "ERROR_INSUFFICIENT_PERMISSIONS");
break;
case SpeechRecognizer.ERROR_NO_MATCH:
Log.d(" 태그", "ERROR_NO_MATCH");
break;
case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
Log.d(" 태그", "ERROR_RECOGNIZER_BUSY");
break;
case SpeechRecognizer.ERROR_SERVER:
Log.d(" 태그", "ERROR_SERVER");
break;
}
stopListen();
startListen();
}
@Override
public void onResults(Bundle results) {
String key = "";
key = SpeechRecognizer.RESULTS_RECOGNITION;
ArrayList<String> mResults = results.getStringArrayList(key);
String[] rs = new String[mResults.size()];
mResults.toArray(rs);
Log.d(" 태그", rs[0]);
textView.append(rs[0] + ". ");
startListen();
}
@Override
public void onPartialResults(Bundle partialResults) {
}
@Override
public void onEvent(int eventType, Bundle params) {
}
};
private void startListen() {
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
speechRecognizer.setRecognitionListener(listener);
speechRecognizer.startListening(i);
}
private void stopListen() {
speechRecognizer.stopListening();
speechRecognizer.cancel();
speechRecognizer.destroy();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageButton = findViewById(R.id.btn);
textView = findViewById(R.id.txt);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return;
}
for (String permission : perMissionList) {
int check = checkCallingOrSelfPermission(permission);
if (check == PackageManager.PERMISSION_DENIED) {
requestPermissions(perMissionList, 0);
}
}
i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");
i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS,10000);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (clickFlag) {
clickFlag = false;
} else {
clickFlag = true;
}
if (clickFlag) {
startListen();
} else {
Toast.makeText(getApplicationContext(), "녹음 끝", Toast.LENGTH_SHORT).show();
Log.d("태그", "녹음종료");
stopListen();
}
}
});
}