0

簡単な英単語を認識しようとしていますが、認識されません。

private void Form1_Load(object sender, EventArgs e)
    {
        SpeechRecognitionEngine srEngine = new SpeechRecognitionEngine();

        // Create a simple grammar that recognizes "twinkle", "little", "star"
        Choices song_00 = new Choices();
        song_00.Add(new string[] {"twinkle", "little", "star"});

        // Create a GrammarBuilder object and append the choices object
        GrammarBuilder gb = new GrammarBuilder();
        gb.Append(song_00);

        // Create the grammar instance and load it into the sppech reocognition engine.
        Grammar g = new Grammar(gb);

        g.Enabled = true;

        srEngine.LoadGrammar(g);
        srEngine.SetInputToDefaultAudioDevice();
        // Register a handler for the Speechrecognized event.
        srEngine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
        srEngine.RecognizeAsync(RecognizeMode.Multiple);
    }

    // Create a simple handler for the SpeechRecognized event.
    void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        MessageBox.Show("Speech recognized: " + e.Result.Text);
    }

以下もメッセージは表示されません。

foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
{
    MessageBox.Show(ri.Culture);
}

ですから、私が考える失敗の主な理由は言語です。

英語以外のバージョンの Windows で英語認識を使用する解決策はありますか? または私が気付かなかった問題はありますか?

  • 現在、英語以外のバージョンの windows7 (64 ビット) を使用していますが、マイクはうまく接続されています。(コントロールパネルは確認済みです。)
4

1 に答える 1

0

簡単な選択肢が定義されていますが、正確に何を一致させようとしているのかについては言及していません。Microsoft Speech は、フレーズを聞いたかどうかを判断するために信頼度尺度を使用します。話しているときにこのマークに到達していない可能性があります。

SpeechRecognitionRejectedとのコールバックを追加しますSpeechHypothesized。それらが発砲しているかどうか、およびそれらからどのような情報が出ているかを確認してください。デバッグに役立ちます。

単に「きらめき」「ちいさな」「星」という単語を探しただけでは、「きらめき、きらめき、ちいさな星」を捉えることはできません。それらの単語はシングルトンとしてキャプチャされますが、それらをつなぎ合わせて新しい単語を追加し始めるとすぐに、信頼レベルが下がり、必要な結果が得られる可能性がはるかに低くなります.

さらに、Choicesこれらの選択肢を使用して文脈に入れるフレーズを定義する必要もあります。MSDNのGrammerBuilderクラス ドキュメントには、例が示されています。

private Grammar CreateColorGrammar()
{

  // Create a set of color choices.
  Choices colorChoice = new Choices(new string[] {"red", "green", "blue"});
  GrammarBuilder colorElement = new GrammarBuilder(colorChoice);

  // Create grammar builders for the two versions of the phrase.
  GrammarBuilder makePhrase = new GrammarBuilder("Make background");
  makePhrase.Append(colorElement);
  GrammarBuilder setPhrase = new GrammarBuilder("Set background to");
  setPhrase.Append(colorElement);

  // Create a Choices for the two alternative phrases, convert the Choices
  // to a GrammarBuilder, and construct the grammar from the result.
  Choices bothChoices = new Choices(new GrammarBuilder[] {makePhrase, setPhrase});
  Grammar grammar = new Grammar((GrammarBuilder)bothChoices);
  grammar.Name = "backgroundColor";
  return grammar;
}

コードは、「背景を青に設定」がキャプチャされることを想定していないことに注意してください。その条件を明示的に設定します。

于 2012-10-30T17:59:47.607 に答える