1

私は System.Speech.Recognition.Choices クラスを使用していますが、特定の音声セッションに残っている可能な選択肢をユーザーに提示する方法が必要です (ここで正しい用語がわかりません)。

たとえば、選択肢が「サーマル」、「テルミット」、「オフ」の場合、3 つすべてを含むリストを表示したいと思います。ユーザーが「th」の音を開始した場合、最初の 2 つだけを表示したいと思います。ユーザーが続行すると、他の選択肢はなくなります。基本的に、残りの可能な選択肢を表示したいと思います。

これは可能ですか?

ありがとう!エリック

4

1 に答える 1

2

文法に応じて、System.Speech.Recognition.RecognitionResultには、信頼度が最も高い認識の代替となる順序付き認識のリストを表示するAlternateプロパティが必要です。多くの音声対応アプリケーションは、これを使用して誤認識の可能性を明確にしています。

// Handle the SpeechRecognized event. 
void SpeechRecognizedHandler(object sender, SpeechRecognizedEventArgs e)
{
  if (e.Result == null) return;

  // Display the recognition alternates for the result.
  foreach (RecognizedPhrase phrase in e.Result.Alternates)
  {
    Console.WriteLine(" alt({0}) {1}", phrase.Confidence, phrase.Text);
  }
}

別の可能な解決策 (一部のシナリオではうまく機能します) は、文法でガベージ ルールを使用してワイルド カードとして機能させることです (これは、上記の th の例ではうまく機能しません)。以下は、ワイルドカード (別名 GARBAGE ルール) により、「メッセージを開いてください」のようなものを認識します。

<rule id="WildcardExample" scope="private">
    <item>open</item>
    <ruleref special="GARBAGE"/>
    <item>message</item>
    <ruleref special="GARBAGE"/>    
</rule>

さらに別のオプションは、文法で (one-of タグを使用して) 選択肢を指定し、代替を使用することです。例えば:

<rule id="ListExample" scope="private">
    <item>I'd like a</item>
    <one-of>
        <item>chocolate</item>
        <item>coco</item>
        <item>vanilla</item>
    </one-of>
    <item>please</item>
</rule>

ユーザーが「チョコレートをお願いします」と言った場合、代替候補の信頼値を使用して、「チョコレートまたはココが欲しいですか?」というダイアログ ボックスを表示する必要があるかどうかを確認できます。

// Handle the SpeechRecognized event. 
    void SpeechRecognizedHandler(object sender, SpeechRecognizedEventArgs e)
    {
      if (e.Result == null) return;

      // Display the recognition alternates for the result.
      foreach (RecognizedPhrase phrase in e.Result.Alternates)
      {
        if (.2 > Math.Abs(e.Result.Confidence-phrase.Confidence && phrase.Text.Equals("coco"))
        {
           //Set chocolate or coco grammar/rule
           Console.WriteLine(" Did you mean chocolate or coco?");
           break;
        }
      }
    }

最終的なオプション (十分に文書化されていませんが) は、Hypothesis eventsを使用することです。Speech Engine は基本的に、認識結果を生成するプロセス中にこのコールバックを呼び出します。これは、上記の TH の例に適合します。ただし、実際には、これらのイベントに遅れずについていく UI を設計することは困難であり、それでも優れた (つまり、遅くない) ユーザー エクスペリエンスを提供します。

于 2013-06-03T04:51:37.807 に答える