3

我正在制作一个允许人们说话并在几个选项(字符串)之间进行选择的应用程序。我在使 Android 语音识别器符合我的想法时遇到了一点问题。

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

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

4

3 回答 3

4

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

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

基本思想是:

  1. 不要使用 Google 的语音识别器,因为您(目前)不能将语言模型(例如语法)传递给它(在我们的例子中,它也不支持我们想要使用的输入语言);
  2. 所以你需要实现自己的语音识别器(例如基于Sphinx)并让它接受语法作为输入的一部分;
  3. 实现语法。如果它是可接受短语的简单列表,那么 JSGF 将作为语法描述语言,对于更复杂的语法,我推荐Grammatical Framework(您可以自动编译为 JSGF 或有限状态自动机);
  4. 通过添加一种将语法传递给识别器的方法,实现一个扩展 RecognizerIntent API 的 Android 应用程序。您可以基于Kõnele

在您的情况下,所有这些都可能是矫枉过正。谷歌结果的后处理(正如@gregm 建议的那样)当然更容易实现。但是,如果您想扩展到更复杂和/或多语言的语言模型,那么我们的方法肯定会提供所需的模块化和表达能力。

于 2013-06-12T10:04:53.050 回答
1

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

于 2013-06-09T07:01:05.293 回答
0

不,您不能传递限制识别或帮助识别最佳匹配的参数。您必须自己实施。

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

为此,您可以使用此处的语音匹配算法

有关 Android 上的一些实现和示例代码,请查看这个开源项目:GAST

于 2013-06-11T20:49:10.620 回答