2011-07-14 8 views
0

私はいくつかのコマンドをアンドロイドのデフォルトのボイスメールアプリケーションに追加しようとしています。それは、オープン、ダイヤル、コール、リダイヤルなどのようなコマンドを含んでいます。私はそれに 'Find'と言うことができます。私はhereからソースコードをダウンロードし、Eclipseでコンパイルしました。このアプリケーションは、CALL JOHN音声コマンドで名前が認識されたときにインテントを生成するために、連絡先リストに人の名前と電話番号を格納するように、これらのコマンドの引数として文法を設定します。このコマンドのCALLでは、結果として得られる認識された文字列の最初の単語と "CALL"を単に比較します。デフォルトのVoiceDialer Appに文法を追加するには?

下図のように私は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

誰でも手伝いできますか?ありがとうSeniorA。 – shaffooo

答えて

1

1年以上経過しているので、もうこの回答が必要なのか疑問です。しかし、私が行ったように、他の人々がGoogleを介してこれを見つけるかもしれません。

現在のところ、Androidでの音声認識に文法を適用する最も良い方法は、結果の数を高く設定し、文法に基づいて結果をフィルタリングすることです。認識された単語がリストに含まれる閾値を超えていない可能性もありますが、発言の種類が多少限定されているすべての音声認識アプリケーションの精度が大幅に向上します。

+0

私は今それを使用していませんが、あなたは正しいですが、意味があります。 – shaffooo

関連する問題