在Android上限制语音识别结果

时间:2013-06-09 06:29:37

标签: java android speech-recognition

我正在创建一个应用程序,允许人们说话并在几个选项(字符串)之间进行选择。我有一点问题,让Android语音识别器符合我的想法。

有没有办法只将“有效”参数传递给SpeechRecognizer并让它在“最佳”匹配之间进行选择?

我不需要代码,我只需要一些指导,因为我的google-fu今天似乎让我失望了。

3 个答案:

答案 0 :(得分:3)

http://kaljurand.github.io/Grammars/描述了我们对此问题的解决方案,例如查看本页链接的论文:

  

Kaarel Kaljurand,TanelAlumäe。言语中的受控自然语言   基于识别的用户界面(CNL 2012)

基本理念是:

  1. 不要使用谷歌的语音识别器,因为你不能(目前)将语言模型(例如语法)传递给它(在我们的例子中,它也不支持我们想要使用的输入语言);
  2. 因此您需要实现自己的语音识别器(例如,基于Sphinx)并使其接受语法作为输入的一部分;
  3. 实现语法。如果它是一个简单的可接受短语列表,那么JSGF将作为语法描述语言,对于更复杂的语法我推荐Grammatical Framework(你可以自动编译成JSGF或有限状态自动机);
  4. 通过添加将语法传递给识别器的方法来实现扩展RecognizerIntent API的Android应用程序。你可以根据它,例如在Kõnele
  5. 在你的情况下,这一切可能都是一种矫枉过正。谷歌搜索结果的后处理(正如@gregm建议的那样)肯定更容易实现。但是如果你想扩展到更复杂和/或多语言的语言模型,那么我们的方法肯定能提供所需的模块化和表达能力。

答案 1 :(得分:1)

不,没有这样的参数,谷歌语音识别不够灵活。您可以使用CMUSphinx

等外部语音识别工具包

答案 2 :(得分:0)

不,您无法传递限制识别的参数或帮助其进行最佳匹配。你必须自己实现它。

您要做的是使用一些算法来帮助您将Android的语音识别器返回的内容与您想要的选项相匹配。当您的应用必须识别Android识别器无法识别的字词时,这一点尤为重要,例如Cumin。

为此,您可以使用像here

这样的语音匹配算法

对于Android上的一些实现和示例代码,请查看此开源项目:GAST