运行非脱机语言时的SpeechRecognizer ERROR_SERVER

当我将英语设置为默认语言运行此程序时,一切都很好,但是,即使我打开了Internet连接,当我使用任何不能脱机使用的语言运行该程序时,我仍然会收到错误4(ERROR_SERVER)。

我前一段时间通过将语言模型更改为LANGUAGE_MODEL_WEB_SEARCH来解决此问题。但是我添加了其他一些功能,无论我在此处进行什么更改,它都无法再次使用。

我已经尝试做的事情:

  • 阅读有关堆栈溢出的所有其他相关问题。
  • 手动设置语音识别api(我的设备上只有一个)。
  • 添加了录制音频和使用Internet的权限。

可能是由于它试图获取不存在的脱机语言而引起的。您是否知道有什么方法可以迫使SpeechRecognizer仅使用在线服务器,而不是尝试连接到脱机服务器或其他方法来修复它?

代码:

class CommandRecognizer(private val view: VoiceCommandsView) {

    private val mSpeechRecognizer: SpeechRecognizer =
            SpeechRecognizer.createSpeechRecognizer(view.getapplicationContext())

    private val mSpeechRecognizerIntent: Intent = Intent(RecognizerIntent.actION_RECOGNIZE_SPEECH)

    init {
        create()
    }

    private fun create() {
        mSpeechRecognizerIntent.putExtra(
            RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH
        )
        mSpeechRecognizerIntent.putExtra(
            RecognizerIntent.EXTRA_LANGUAGE,Locale.getDefault()
        )

        mSpeechRecognizer.setRecognitionListener(object : RecognitionListener {
            override fun onreadyForSpeech(bundle: Bundle) {}

            override fun onBeginningOfSpeech() {}

            override fun onRmsChanged(v: Float) {}

            override fun onBufferReceived(bytes: ByteArray) {}

            override fun onEndOfSpeech() {}

            override fun onError(i: Int) {
                when (i) {
                    SpeechRecognizer.ERROR_SERVER -> view.onSpeechRecognizerServerError()
                }
            }

            override fun onResults(bundle: Bundle) {
                view.onCommandRecognizerResults(bundle)
            }

            override fun onPartialResults(bundle: Bundle) {}

            override fun onEvent(i: Int,bundle: Bundle) {}
        })
    }

    fun startListening() {
        mSpeechRecognizer.startListening(mSpeechRecognizerIntent)
    }

    fun cancelListening() {
        mSpeechRecognizer.cancel()
    }
}

编辑:

我更改了一些内容,然后又还原它们,然后又可以正常工作(但是,每次启动应用程序时我都必须运行语音识别几次,之后才不会出现错误),尽管实际上并没有任何改变。我添加的一件事是EXTRA_PREFER_OFFLINE并将其设置为false。也许它会永久设置一些全局变量。

我也在不同的PC上构建了它。也可能是这种情况,因为当我开始在新PC上使用此应用程序,而现在又在完全不同的PC上尝试该问题时,问题就开始了。

无论如何该应用程序现在都可以运行,但是在启动该应用程序时,在前几次运行中仍然会出现错误。因此,该问题尚未完全解决,并且不是一个稳定的解决方案。

ranjing9 回答:运行非脱机语言时的SpeechRecognizer ERROR_SERVER

最后,我将其永久修复。它不起作用的唯一原因仅仅是STAMINA模式。禁用它之后,一切正常。

本文链接:https://www.f2er.com/3092369.html

大家都在问