11

我有一个实现RecognitionListener. 为了使其连续,每次onEndOfSpeech()我再次启动监听器时:

speech.startListening(recognizerIntent);

但是,它需要一些时间(大约半秒)才能开始,所以有半秒的间隙,没有人在听。因此,我想念在那个时差里说的话。

另一方面,当我使用谷歌的语音输入而不是键盘来口述消息时——这个时间间隔不存在。含义 - 有一个解决方案。

它是什么?

谢谢

4

3 回答 3

5

我会推荐使用CMUSphinx来连续识别语音。要使用 google 语音识别 api 实现连续语音识别,您可能不得不求助于后台服务中的循环,这将占用过多资源并耗尽设备电池。

另一方面,Pocketsphinx 真的很棒。它的速度足以在用户无需触摸设备的情况下发现关键短语并识别锁定屏幕后面的语音命令。它离线完成所有这些工作。你可以试试演示

如果你真的想使用google的api,看这个

于 2015-05-17T16:49:10.467 回答
2

有如下选项:

intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 2000); // value to wait

或者

intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS, 2000);

这些不再适用于 Jelly Bean 及以上版本,但适用于 ICS 及以下版本 - 不确定是有意还是错误!

于 2015-05-17T01:44:10.853 回答
2

尝试查看其他几个 api ......

演讲演示:这里有源代码这里讨论并在 CLI 上操作

您可以使用全双工 google api(其速率上限为每天 50)

或者,如果您喜欢这个总体思路,请查看此处讨论的 ibm 的 watson

IMO - 它更复杂但没有上限。

于 2015-05-17T19:07:49.587 回答