2

system.speech 名前空間を使用するプログラムを作成しています (ムービーを起動する単純なプログラムです)。フォルダーからすべてのファイル名を読み込み、使用したい文法に追加します。それは非常にうまく機能していますが、ヒッチがあります。Windowsの音声認識がウィンドウと対話することをまったく望んでいません(つまり、開始と言ったときに、スタートメニューを開きたくありません...私はしません'何かが起こることを望んでいません)。

同様に、現時点では、ディレクトリ内で見つかったすべての映画を一覧表示するリスト ボックスがあります。開きたい番組/映画を言うと、Windows 音声認識がプログラムに渡す代わりにリストからリストボックス項目を選択しているため、プログラムは名前が言われたことを認識しません。

文法に「停止」、「再生」、「巻き戻し」などの単語があり、listener_SpeechRecognized をキャッチすると、私が言っている単語/フレーズを正しく認識します (および現在はテキストボックスに入力するだけです)。

どうすればこれを行うことができるのでしょうか?

4

2 に答える 2

1

SpeechRecognizerクラスではなく、 SpeechRecognitionEngineクラスを使用します。これにより、Windows 音声認識から完全に切断された音声認識エンジンが作成されます。

于 2010-02-18T20:56:55.010 に答える
0
private bool Status = false;

SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
Choices dic = new Choices(new String[] {
            "word1",
            "word2",
            });



public Form1()
{
    InitializeComponent();

    Grammar gmr = new Grammar(new GrammarBuilder(dic));
    gmr.Name = "myGMR";
    // My Dic

    sre.LoadGrammar(gmr);
  sre.SpeechRecognized += 
  new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
    sre.SetInputToDefaultAudioDevice();
    sre.RecognizeAsync(RecognizeMode.Multiple);
} 

private void button1_Click(object sender, EventArgs e)
{
    if (Status)
    {
        button1.Text = "START";
        Status = false;
        stslable.Text = "Stopped";
    }
    else {

        button1.Text = "STOP";
        Status = true;
        stslable.Text = "Started";
    }
}

public void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs ev)
{
   String theText = ev.Result.Text;
  MessageBox.Show(theText);
}
于 2015-09-16T18:18:43.100 に答える