首页 > 解决方案 > Android 语音识别器。如何缓存“就绪”声音事件?

问题描述

我对 android.speech.SpeechRecognizer 方法有一点问题

speechRecognizer.startListening(speechIntent) 

有时需要很长时间才能播放“就绪”的声音(主要是在应用重新运行之后)。我找不到像 onSpeechRecognitionReady 监听器之类的东西。我怎样才能捕捉到这个事件来制作一个进度条?

我以这种方式初始化识别器

private fun initSpeechRecognizer() {
        speechIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
        speechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US")
        speechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, packageName)
        speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this)
        speechRecognizer.setRecognitionListener(object : RecognitionListenerAdapter(){
            override fun onResults(results: Bundle) {
                val matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
                tv_speech.text = matches[0]
                btn_speech.isChecked = false
            }
        })
    }

标签: androidkotlinspeech-recognition

解决方案


我认为您应该使用具有onReadyForSpeech方法的RecognitionListener以便您可以在 init 上显示进度条并将其隐藏在 onReadyForSpeech


推荐阅读