Pocketsphinx与Google语音识别API比较

7
我正在开发一款语音识别的安卓应用程序,旨在作为虚拟个人助手执行以下任务:

预约/提醒

天气信息

向Wolfram|Alpha/Wikipedia提出一般查询问题——(例如:谁执导了《捉鬼敢死队》,英镑兑换美元汇率是多少)

我的问题是:应该使用Pocketsphinx还是Google API?

最初我使用“android.speech.RecognitionListener”进行设置,效果很好,但是我想实现关键字检测,以便用户只需要说话而无需任何其他交互。

据说Google API不支持此功能,因此我考虑使用pocketsphinx来实现这一目标,并仍然使用Google API来完成应用程序的其余部分(因为我听说pocketsphinx的准确度不如Google API?)。 然而,由于两者都无法同时占用麦克风,所以它们不能兼容。

是否有一种优雅的方法可以在识别器之间切换?(甚至无法将它们同时导入同一项目)

我应该选择pocketshinx并处理较低的准确性吗?

建议将十分有用。

谢谢!


1
你在使用Pocketsphinx实现唤醒词并停止录音后切换到Google语音识别器方面遇到了什么问题? - Florent
据我所知,它们不能同时导入到同一个项目中。然而,我觉得我在过去的5分钟内解决了这个问题。当我更加理解原因和方法时,我会在这里发布答案,以便未来的人受益。 - Aphire
Pocketsphinx与GSR相比实在是太差了。你从/dev/random中采样都能得到更好的结果。 - Cerin
2个回答

1
对于任何想要实现类似项目的人,我找到了一个解决方法。它有点hacky并且不完全干净,但它可以工作。 使用Android语音识别器和像网上许多示例中那样的开关切换,当onResults返回时,将检查字符串是否包含所说的“热词”,如果不存在,则丢弃该字符串,如果存在,则处理它。一旦查询已被处理且文本到语音正在响应,程序化地重新单击切换按钮,确保持续听取。 在"onError"上也做同样的事情。 我也在"onPartialResults"上这样做,但它似乎会使线程崩溃,不完全确定为什么,但一旦它被删除,一切似乎都很好运行。

我最终做了,尽管将近两年没碰这个项目。 - Aphire
1
没问题,有任何问题我都很乐意尝试回答(虽然我的信息可能已经过时了!) - Aphire
我们需要使用线程来进行文本转语音和语音转文本吗?当我调用语音转文本时,文本转语音似乎不起作用了。你能帮帮我吗? - Spartan
@Aphire,我能得到一个实现特定部分的代码链接吗? - Sushovan Mandal
@SushovanMandal,很抱歉我无法再访问它了,因为我不再为我曾经写作的公司工作了。对不起! - Aphire

0

你可以使用Pocketsphinx来识别预定义的命令集,但其准确性非常差(你需要准备自己的字典和语言模型)。此外,Pocketsphinx可以离线使用,这对于某些项目来说是一个很大的缺点。

另一方面,Google非常准确,但它不是免费的,并且只能在线使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接