我有一个使用 pocketsphinx 运行的应用程序(附带的演示)。例如,我的应用程序需要能够在收到命令时更改颜色。sphinx4 上的“hello world”排序为“color black/blue”而不是“hello phillip”
为此,我稍微修改了 pocketsphinxandroiddemo。
当使用按钮识别时,我可以通过在 OnResult 的 run() 中使用它来实现操作:
if(hyp.equals("COLOR BLACK")){
bg.setImageResource(R.drawable.black);
}
if(hyp.equals("COLOR WHITE")){
bg.setImageResource(R.drawable.white);
}
那里没有问题。
但我需要持续收听,所以我绕过了按钮,转而使用 OnPartial run()。那里 .equals("KEY WORD") 不起作用,所以我使用了 .contains("KEY WORD")。只要我改变我的 if 语句而不是改变它们,这就会起作用,因为我的 hyp 或其他东西仍然包含以前的单词,因此执行我的开关中的最后一个命令。
问题:执行良好的操作后如何清除炒作?
这是我的 OnPartial:
公共无效 onPartialResults(Bundle b) {
final PocketSphinxAndroidDemo that = this;
final String hyp = b.getString("hyp");
that.edit_text.post(new Runnable() {
public void run() {
that.edit_text.setText(hyp);
if(hyp.contains("COLOR BLACK")){
bg.setImageResource(R.drawable.black);
}
if(hyp.contains("COLOR WHITE")){
bg.setImageResource(R.drawable.white);
}
我对此很陌生(几个月前才开始学习编程),所以我可能会遗漏一些明显的东西。如果你能看到我的错误,请解释一下。如果我在 OnPartial 中应该使用 .contains 以外的东西,那该怎么办?我试过 .equals("KEY WORD") 但这仅适用于 OnResult。
亲切的问候雅各布
伊迪丝:“一些错误和代码”
伊迪丝 2:“想出了上一个问题的一部分”