【问题标题】:Restricting speech recognition results on Android限制 Android 上的语音识别结果
【发布时间】:2013-06-05 02:46:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: java android speech-recognition


    【解决方案1】:

    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 建议的那样)当然更容易实现。但是,如果您想扩展到更复杂和/或多语言的语言模型,那么我们的方法当然可以提供所需的模块化和表达能力。

    【讨论】:

    • 我同意卡雷尔的观点。如果您尝试进行复杂的语音对话,其中涉及包含多个部分的命令,您应该使用语法,但如果您只执行一两个部分命令,我的方法将工作得很好并且更容易实现。
    【解决方案2】:

    没有,没有这个参数,google语音识别不够灵活。您可以使用外部语音识别工具包,例如CMUSphinx

    【讨论】:

      【解决方案3】:

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

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

      为此,您可以使用here 之类的语音匹配算法

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 1970-01-01
        相关资源
        最近更新 更多