如何将语法添加到默认的VoiceDialer应用程序?

时间:2011-07-14 19:57:18

标签: android voice-recognition

我正在尝试向android默认的voicedialer app添加一些命令。它有打开,拨号,呼叫,重拨等命令,我想包括让我们说'找'。我从here下载了源代码并在Eclipse中编译了它。应用程序为这些命令的参数设置语法,例如它将联系人列表中的人员的姓名和电话号码存储起来,以便在为CALL JOHN语音命令识别其名称时生成意图。对于此命令中的CALL,它只是将结果识别的字符串的第一个单词与“CALL”进行比较。

如果onRecognitionSuccess()函数中的条件如下所示,我添加了“FIND”作为额外的其他内容:

public class CommandRecognizerEngine extends RecognizerEngine 
{
 ............
 protected  void onRecognitionSuccess(RecognizerClient recognizerClient) throws InterruptedException 
 {
  .....................
  if ("DIAL".equalsIgnoreCase(commands[0])) 
        {
            Uri uri = Uri.fromParts("tel", commands[1], null);
            String num =  formatNumber(commands[1]);
            if (num != null) 
            {
                addCallIntent(intents, uri, literal.split(" ")[0].trim() + " " + num, "", 0);
            }
        }
    ................
    else if ("FIND".equalsIgnoreCase(commands[0])) 
        {
            if (Config.LOGD) 
                Log.d(TAG, "FIND detected...");
        }
  }//end onRecognitionSuccess
 }//end CommandRecognizerEngine

但我的应用无法识别它。有谁知道识别器如何检测OPEN或CALL等命令或者引用我的相应文档?

感谢。

1 个答案:

答案 0 :(得分:1)

由于已经超过一年,我怀疑你不再需要这个答案了。但是,其他人可能会像我一样通过Google找到这个。

目前,在Android上将语法应用于语音识别的最佳方法是将结果数设置得更高,然后根据语法过滤结果。它并不完美,因为识别的单词可能没有超出列入列表的阈值,但它确实大大提高了所有语音识别应用程序的准确性,在这些应用程序中,您可以说的内容类型有限。