0

たとえば、画面の中央でマウスをクリックするコマンド「center」が必要だとしましょう。些細な例ですが、文法的な側面にもっと興味があります。

"center" だけを一致させたい場合はどうすればよいですか?

一時停止して「中央」と言ってから一時停止すると一致します。

でも「私は部屋の真ん中にいる」と言ったら一致しません。

次のコードは、フレーズのどの部分で話されていても、「center」という単語に一致するようです。

            Choices center = new Choices( new string[] { "center" } );
            SemanticResultKey centerKeys = new SemanticResultKey( "center", center );

            GrammarBuilder centerGrammarBuilder = new GrammarBuilder();
            centerGrammarBuilder.Append( centerKeys );

           speechRecognitionEngine.UnloadAllGrammars();

           speechRecognitionEngine.LoadGrammar(new Grammar(centerGrammarBuilder));
4

1 に答える 1

0

音声エンジンは通常、文の途中にある文法内の単語を認識しないように適切に処理します。ただし、常にではありませんが、エンジンが文の途中で用語を認識するエッジ ケースの 1 つを見つけた場合は、次の 2 つのことをお勧めします。

  • ガベージ ルールを文法に追加し、ガベージ ルールを含む認識イベントを無視します。通常、これは推奨されません (ただし、機能する可能性はあります)。ガベージ ルールを使用することはめったになく、モデルの構築中にトレードオフが発生し、パフォーマンスが低下するためです。また、他の言語モデルよりも一部の言語モデルの方がうまく機能することに気付くかもしれません。繰り返しますが、これはモデルの構築と調整の結果です。(grxml 内では、この < ruleref special="GARBAGE"/> のようになります) http://msdn.microsoft.com/en-us/library/system.speech.recognition.srgsgrammar.srgsruleref.garbage(v=VS .85).aspx
  • 結果の単語の信頼度をチェックして調整します。中間文を認識したとしても、そのフレーズの信頼スコアははるかに低くなるはずです。残念ながら、このチューニングを正しく行うには、多くのオーディオが必要になる場合があります。
于 2013-05-06T04:04:32.313 に答える