2012-01-31 35 views
6

我有一个客户需要一个Android应用程序,可以识别口头命令。据我所知,内置的语音功能实际上是将数据发送给Google的服务器,然后发回文本翻译。这是一个主要问题,因为语音数据非常敏感(除非数据在发送到Google或从Google发送时加密 - 但我怀疑它是否加密)。CMU狮身人面像可以设置识别200字

有两个选项,我可以想到。首先是在Android上转换语音到文本,尽管这似乎是一个非常昂贵的操作。第二种可能是让本地服务器为我转换数据(我可以在发送和接收时加密语音数据和翻译)。这是什么CMU斯芬克斯可以拉开?值得一提的是,我也可以访问Asterisk服务器,这可能有助于解决这个问题(我不知道)。

实际上,应该只有~200字左右,需要被识别。我更喜欢开源/免费软件解决方案,但我也开放了商业解决方案(可能是FlexT9)。理想情况下,我可以将音频流发送到某处,取回一个字符串作为文本,然后我可以使用字符串解析并执行其他操作。

我过去没有做过多的android或任何语音识别开发,所以我希望有人能够至少指出我正确的方向。谢谢!

回答

10

CMUSphinx是一个开源的语音识别工具包,您可以使用它来构建您的应用程序。它包含工具,库和数据,使您可以构建语音应用程序。您可以在上面的网站上了解更多关于CMUSphinx的信息。

在Android上,你有几种选择使用CMUSphinx:

  1. 认识到音频设备上。为此,您可以编译Android的Pocketsphinx引擎。详情请见see this blog post

  2. 识别服务器上的音频。作为服务器,您可以使用Pocketsphinx或Sphinx4。您可以发送压缩音频格式的音频或提取设备上的语音识别功能,并将特征流发送到服务器。

CMUSphinx为您提供多种声学模型,使您能够识别多种语言(如英语,法语,普通话,德语,荷兰语,俄语)的音频。

您还可以使用自适应工具改善识别结果。

如果您对CMUSphinx有任何疑问,欢迎您来ask in our community forums

4

闭源,但免费,是微软的语音引擎。有些背景请参阅What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?。有关更多背景信息,请尝试使用https://stackoverflow.com/a/4217638/90236

Microsoft服务器语音平台11的完整SDK位于http://www.microsoft.com/download/en/details.aspx?id=27226。语音引擎是免费下载的。

+0

微软的解决方案是否可用于Android(您建议的那个)? – srf 2013-04-21 19:59:49

+0

它只是一个服务器端组件。您必须构建自己的客户端实现来捕获音频并将其发送到服务器。 – 2013-04-21 21:38:13