安卓,柯特林。由于某些原因,SpeechRecognizer无法正常工作

编程入门 行业动态 更新时间:2024-10-26 18:23:12
本文介绍了安卓,柯特林。由于某些原因,SpeechRecognizer无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用名为SpeechRecognizer的Android Speech API,试图将语音转换为文本,但由于某种原因,我一点击按钮,就看到消息&cot;Can‘t to to Google Now";,并且窗口关闭,没有等待我的演讲。或者声音断断续续,什么也不会发生。

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() } } }

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

也许你真的知道如何解决这个问题?谢谢,我将非常感谢你的帮助!

如果某人突然遇到类似的问题,这就是我一段时间后解决这个问题的方法:

您需要打开虚拟麦克风使用主机音频输入。转到:更多(右侧)-&麦克风-&>打开虚拟麦克风使用主机音频输入&q;。 此外,您的仿真程序必须安装更高版本的更新,否则语音识别将无法工作。

推荐答案

我认为监听器才是问题所在,您不能只初始化listener = Listener() 并将其传递给Speech Recognizer。它需要接收RecognitionListener类型的侦听器,该侦听器具有许多可以使用的回调,如onResults,这表示每次侦听器捕捉到语音时都会有更多回调。 尝试将监听程序更改为listener = object : RecognitionListener{ HERE OVERRIDE THE METHODS } 最终它将看起来是这样的:

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") } }

您可以阅读有关利用您自己的需求的任何回调 希望能有所帮助

更多推荐

安卓,柯特林。由于某些原因,SpeechRecognizer无法正常工作

本文发布于:2023-11-27 10:05:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637625.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:无法正常   原因   柯特   工作   SpeechRecognizer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!