我正在尝试向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等命令或者引用我的相应文档?
感谢。
答案 0 :(得分:1)
由于已经超过一年,我怀疑你不再需要这个答案了。但是,其他人可能会像我一样通过Google找到这个。
目前,在Android上将语法应用于语音识别的最佳方法是将结果数设置得更高,然后根据语法过滤结果。它并不完美,因为识别的单词可能没有超出列入列表的阈值,但它确实大大提高了所有语音识别应用程序的准确性,在这些应用程序中,您可以说的内容类型有限。