我意识到随着时间的流逝,已经有几个问题,但是似乎它们已经过时了,现在可能有更好的方法来解决这个问题。
我有一个应用程序,该应用程序说合成文本,然后听用户输入,然后响应用户输入,并重复该循环。这有点像我自己的可定制助手,我可以对其编程以响应特定的关键字。目前,我正在将SpeechRecognizer
与RecognizerIntent
一起使用。使用我自己的RecognitionListener
实例,我可以精确地控制用户开始和停止讲话时发生的情况。但是,如果用户没有立即讲话,我就会遇到问题。侦听器停止侦听,必须再次调用才能开始侦听。如果用户希望此应用程序免提,则这是不希望的。
我看了几篇不同的StackOverflow
帖子,并浏览了一些有关我正在使用的类的文档。到目前为止,还没有什么东西可以作为我的解决方案,但是我不是最注重技术的程序员。有时候,我可能很难完全理解这些文档。
当前,我正在使用Runnable
任务,该任务每500毫秒检查一次语音识别软件是否在监听。如果不是在听,并且我的文本语音合成器没有在讲话,它将调用语音识别软件以开始听。
这有效,但似乎不稳定。每次调用startListening
时,它都会发出噪音,并且由于某种未知原因,监听器将在一段时间后停止监听并且不响应startListening
。如果可以通过某种方式将超时设置为无限长的时间,那将是理想的选择,但是从我看来,没有建议的解决方案起作用。
话虽这么说,是实现我的“免提”助手应用程序目标的更好/更简便的方法,还是我的解决方案是最好的解决方案?我已经研究了这个主题几天了,没用。
API版本:Android API 23
操作系统:Marshmallow 6.0.1