当前位置: 首页 > 知识库问答 >
问题:

Android,科特林。由于某种原因,语音识别器无法工作

壤驷穆冉
2023-03-14

我正在使用名为SpeechRecognitor的android语音API,试图将语音转换为文本,但由于某种原因,只要我点击按钮,我就会看到“目前无法访问谷歌”的消息,窗口就会关闭,而不必等待我的语音。或者声音只是口吃,什么也没发生。

class MainActivity : AppCompatActivity() {
    var voiceButton: Button? = null
    var textView: TextView? = null
    var listener: Listener? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        initializeView()
        initializeListeners()
    }

    fun initializeView() {
        voiceButton = findViewById(R.id.voiceButton)
        textView = findViewById(R.id.textView)
        listener = Listener()
    }
    fun initializeListeners() {
        voiceButton?.setOnClickListener {
            val speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this)
            speechRecognizer.setRecognitionListener(listener)
            val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault())
            intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);

            speechRecognizer.startListening(intent)

            if (intent.resolveActivity(packageManager) != null) {
                startActivityForResult(intent, 10)
            } else {
                Toast.makeText(this, "Unfortunately device not supported", Toast.LENGTH_SHORT).show()
            }
        }
    }

为什么?这个代码怎么了?我认为这段代码应该有效,因为对于其他人来说,它工作得很好。也许我的模拟器(Nexus One API 22)不支持此API?我只是不知道有什么问题。

也许你知道怎么解决它?谢谢,我会感谢你的帮助!

如果有人突然面临类似的问题,我就是这样在一段时间后解决这个问题的:

您需要使用主机音频输入打开虚拟麦克风。转到:更多(“…”在右边)-

共有1个答案

佟和平
2023-03-14

我认为你的监听器是个问题,你不能只是初始化listener=Listener()并将其传递给语音识别器。它需要接收一个识别监听器类型的监听器,它有许多回调,你可以使用像on结果,它指示每次你的监听器捕捉语音讲话和更多回调。试着将你的监听器更改为listener=对象:识别监听器{这里覆盖方法}最终它会看起来像这样:

     listener = object :RecognitionListener {
            override fun onReadyForSpeech(params: Bundle?) {
                TODO("Not yet implemented")
            }

            override fun onRmsChanged(rmsdB: Float) {
                TODO("Not yet implemented")
            }

            override fun onBufferReceived(buffer: ByteArray?) {
                TODO("Not yet implemented")
            }

            override fun onPartialResults(partialResults: Bundle?) {
                TODO("Not yet implemented")
            }

            override fun onEvent(eventType: Int, params: Bundle?) {
                TODO("Not yet implemented")
            }

            override fun onBeginningOfSpeech() {
                TODO("Not yet implemented")
            }

            override fun onEndOfSpeech() {
                TODO("Not yet implemented")
            }

            override fun onError(error: Int) {
                TODO("Not yet implemented")
            }

            override fun onResults(results: Bundle?) {
                TODO("Not yet implemented")
            }
        }

你可以阅读任何回拨的信息,以利用自己的需要,希望能有所帮助

 类似资料:
  • 问题内容: 只是尝试删除所有文档,并这样做: 然后承诺: 我得到答复: 但是当我搜索时,我仍然会得到结果。 我做错什么了? 问题答案: 不确定是否重要,但是您也可以编码: 要尝试的另一件事是使用POST方法(调用update的首选方法):

  • 问题内容: 我是PHP的新手,正在使用mail函数发送无法正常工作的电子邮件。我收到成功消息,但仍然无法正常工作 相同的代码 我是否缺少任何内容,我是否需要为此功能包括任何文件。.我来自asp.net,这是在网站上找到的基本脚本。 我尝试了其他与邮件相关的脚本,这些脚本也无法使用。 我正在网站上而不是在本地上运行此脚本 问题答案: 这可能是配置错误。如果您坚持使用PHP 函数,则必须进行编辑。 如

  • 嗯,我使用SoundPool在ImageView声音上进行onClick,其中一些声音开始了另一个活动。像这样: 有什么建议吗? UPD:日志:

  • 我想制作一个语音识别器应用程序来转录用户的语音。我不想在这样做的时候有任何对话,所以是不可能的。(我知道如果我使用这种方法,我可以获得音频) 我正在使用SpeechRecognitor,并调用startListening来收听用户的音频。我在onResults中得到了非常准确的结果。 现在,我还需要在我的设备SD卡中存储用户的音频。为此,我尝试了MediaRecorder和AudioRecord,

  • 我使用RecognizerIntent并实现RecognitionListener,并实现其所有回调方法来执行语音命令。我试着调整参数EXTRA\u SPEECH\u INPUT\u MINIMUM\u LENGTH\u MILLIS、EXTRA\u SPEECH\u INPUT\u mably\u COMPLETE\u SILENCE\u LENGTH\u MILLIS和EXTRA\u SPEE

  • 我正在开发一个功能,当按下一个按钮时,它将启动语音识别,同时将记录用户所说的话。代码如下: 我一步一步地制作了这个应用程序,起初这个应用程序没有录音功能,语音识别效果非常好。 在我多次测试并认为语音识别正常后,我开始使用合并录音功能。 然后,我进行了测试,一旦按下按钮\u start,甚至在我试图说话之前,就会立即出现ERROR3音频信息。 我播放录音。语音也被正确记录和保存。 发生什么事了?为什