Android的特定词的语音识别(Android specific words speech rec

2019-09-28 02:21发布

我想有应用程序识别使用下面的代码由用户说某些词,但由于某种原因,它不是在所有的工作。 请检查这一点,并告诉我什么是错的。 谢谢

应用程序是简单的假设,如果说的话“橙色”或“苹果”,显示敬酒消息,但使用下面的代码时没有任何反应。

//按钮的onclick触发RecognizerIntent

public void OnClick_Speed_Detector(View v)
{
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up");
    startActivityForResult(i, 1);

}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if(requestCode == 1 && resultCode == RESULT_OK)
    {
        ArrayList<String> result = 
                data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

                if(((result).equals("orange")))
                {
                  Toast.makeText(getApplicationContext(), "orange", Toast.LENGTH_LONG).show();

                }   
                else
                    if (((result).equals("apple")))
                { 
                  Toast.makeText(getApplicationContext(), "apple", Toast.LENGTH_LONG).show();   
                }

    }
}

Answer 1:

你的问题是,如果一个ArrayList ==一个字符串,您正在测试时,它不可能(String类型的ArrayList中包含多个字符串)

代替:

if ((result).equals("orange")) {}

尝试:

if ((result).contains("orange")) {}

此代码将期待通过ArrayList中的各项指标,并确定是否有任何它等于“橙色”的指标。 如果有任何做那么它将返回

true

...它会执行if语句! 希望这可以帮助!



文章来源: Android specific words speech recognition