java—语音识别不能识别来自计算机的语音

pnwntuvh  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(305)

我在应用程序中使用此代码将语音转换为文本。当我听写和手机听到自然声音时,一切都很正常,但当我尝试使用该应用程序将语音转换为从电脑听到的文本时,屏幕上却没有显示一个单词。
我想强调的是,google-live转录版可以在很大程度上识别电脑语音并在手机屏幕上打印文本。https://play.google.com/store/apps/details?id=com.google.audio.hearing.visualization.accessibility.scribe
有人能帮忙吗,谢谢。

speech = SpeechRecognizer.createSpeechRecognizer(this);
    speech.setRecognitionListener(this);

    recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
            getString("en"));
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
            this.getPackageName());
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(10000));

recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 10000);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 10000);
    recognizerIntent.putExtra("android.speech.extra.DICTATION_MODE", true);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
    recognizerIntent.putExtra
            (RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, true);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_CONFIDENCE_SCORES, true);

    toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {
            if (isChecked) {
                speech.setRecognitionListener(VoiceRecognitionActivity.this);
                progressBar.setVisibility(View.VISIBLE);
                progressBar.setIndeterminate(true);
                speech.startListening(recognizerIntent);
            } else {
                progressBar.setIndeterminate(false);
                progressBar.setVisibility(View.INVISIBLE);
                speech.stopListening();
                speech.destroy();

            }
        }
    });

}

@Override
protected void onPause() {
    super.onPause();
    if (speech != null) {
        speech.destroy();
        Log.i(LOG_TAG, "destroy");
    }

}

@Override
public void onBeginningOfSpeech() {
    Log.i(LOG_TAG, "onBeginningOfSpeech");
    spechStarted = true;
    progressBar.setIndeterminate(false);
    progressBar.setMax(10);
}

@Override
public void onBufferReceived(byte[] buffer) {
    Log.i(LOG_TAG, "onBufferReceived: " + buffer);
}

@Override
public void onEndOfSpeech() {

    spechStarted = false;
    Log.i(LOG_TAG, "onEndOfSpeech");
    speech.startListening(recognizerIntent);

}

@Override
public void onError(int errorCode) {
    Log.d(LOG_TAG, "FAILED ");
    if (!spechStarted)
        speech.startListening(recognizerIntent);

}

@Override
public void onEvent(int arg0, Bundle arg1) {
    Log.i(LOG_TAG, "onEvent");
}

@Override
public void onPartialResults(Bundle arg0) {
    Log.i(LOG_TAG, "onPartialResults");

    ArrayList<String> matches = arg0
            .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);

    returnedText.setText(speechString + matches.get(0));

}

@Override
public void onReadyForSpeech(Bundle arg0) {
    Log.i(LOG_TAG, "onReadyForSpeech");
}

@Override
public void onResults(Bundle results) {
    Log.i(LOG_TAG, "onResults");
    ArrayList<String> matches = results
            .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
    speechString = speechString + ". " + matches.get(0);
}

@Override
public void onRmsChanged(float rmsdB) {
    Log.i(LOG_TAG, "onRmsChanged: " + rmsdB);
    progressBar.setProgress((int) rmsdB);
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题