0

このような認識意図を実装しました。

    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 検索ではまったく何も得られなかったため、誰かがこれに対する解決策を持っているかどうか疑問に思っています。助けてくれてありがとう

4

1 に答える 1

2

文法は必要ありません。

このコードでそれを行う方法を確認してください。

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」などの数字のように聞こえる他の単語をコードに受け入れさせたい場合もあります...

于 2012-11-20T18:12:09.423 に答える