我的客户需要能够识别语音命令的Android应用程序。根据我的理解,内置语音到文本功能实际上将数据发送到Google的服务器,然后发送回文本翻译。这是一个主要问题,因为语音数据非常敏感(除非数据在发送到Google和从Google发送时加密 - 但我怀疑它是加密的)。
我可以想到两个选项。首先是在Android上转换语音到文本,虽然这似乎是一个非常昂贵的操作。第二种可能性是让本地服务器为我转换数据(我可以加密语音数据和转发时的语音数据)。这是CMU Sphinx能够实现的吗?值得注意的是,我也可以访问Asterisk服务器,这可能有助于解决这个问题(我不知道)。
实际上,应该只有大约200个单词需要被识别。我更喜欢开源/免费软件解决方案,但我也对商业解决方案(可能是FlexT9)持开放态度。理想情况下,我可以将音频流发送到某处,获取一个字符串作为文本,然后我可以使用字符串解析并执行其他操作。
我过去没有做太多的机器人或任何语音识别开发,所以我希望有人能够至少指出我正确的方向。谢谢!
答案 0 :(得分:10)
CMUSphinx是一个开源语音识别工具包,可用于构建应用程序。它包含工具,库和数据,使您可以构建语音应用程序。您可以在上面的网站上了解有关CMUSphinx的更多信息。
在Android上,您有几种使用CMUSphinx的选项:
识别设备上的音频。为此你可以为Android编译Pocketsphinx引擎。有关详细信息see this blog post。
识别服务器上的音频。作为服务器,您可以使用Pocketsphinx或Sphinx4。您可以以压缩flac格式发送音频或在设备上提取语音识别功能,并将功能流发送到服务器。
CMUSphinx为您提供了几种声学模型,使您能够识别英语,法语,普通话,德语,荷兰语,俄语等多种语言的音频。
您还可以使用自适应工具改进识别结果。
如果您对CMUSphinx有任何疑问,欢迎ask in our community forums。
答案 1 :(得分:4)
封闭源代码,但免费,是Microsoft语音引擎。对于某些背景,请参阅What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?。对于更多背景,您可以尝试https://stackoverflow.com/a/4217638/90236
http://www.microsoft.com/download/en/details.aspx?id=27226提供了完整的Microsoft服务器语音平台11 SDK。语音引擎是免费下载的。