从Android语音识别中获取数字

时间:2012-11-20 01:28:23

标签: android speech-recognition voice-recognition arrays

我已经实现了这样的识别器意图。

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Tell me stuff");
    startActivityForResult(intent, REQUEST_CODE);

这样的回报

    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
    {

        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);

    }

我想对这些数据做些什么是用数字实现简单的语法规则。比如像这样的东西

        if(matches.contains("my number is"))
        {

             string number = matches.getNextWord();

                 //Then parse the string into an integer    

        }

显然这段代码不起作用,但我想知道是否有人有这方面的解决方案,因为Google搜索绝对没有任何结果。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

你不需要语法。

在此代码中查看我是如何做到的。

https://github.com/gast-lib/gast-lib/blob/master/app/src/root/gast/playground/speech/food/command/AskForCalories.java

该库中的代码基本上遍历调用此方法的所有可能识别结果的所有单词:

  private boolean isNumber(String word)
    {
        boolean isNumber = false;
        try
        {
            Integer.parseInt(word);
            isNumber = true;
        } catch (NumberFormatException e)
        {
            isNumber = false;
        }
        return isNumber;
    }

您可能还希望让您的代码接受听起来像数字的其他单词,例如“too”“tree”“for”等...