连续语音识别 Android - 无间隙

Continuous Speech Recognition Android - Without Gaps

我有一个 activity 实现了 RecognitionListener。为了让它连续,每次 onEndOfSpeech() 我都会重新启动监听器:

speech.startListening(recognizerIntent);

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

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

这是什么?

谢谢

选项如下:

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 及以下版本 - 不确定是有意还是错误!

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

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

如果你真的想用google的api,see this

试着看看其他几个 api 的....

speech demo : has source here and is discussed here and operated on CLI here

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

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

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