以编程方式关闭Windows语音识别的自动化功能?

时间:2010-02-17 03:36:15

标签: c# .net speech-recognition

我正在制作一个使用system.speech命名空间的程序(这是一个可以启动电影的简单程序)。我从文件夹中加载所有文件名,并将它们添加到我想要使用的语法中。它运作得非常好,但是有一个障碍:我根本不希望Windows语音识别与Windows交互(即,当我说开始时,我不希望开始菜单打开...我不喜欢我希望发生任何事情)。

同样,我目前有一个列表框,列出了目录中的所有电影。当我说要打开的节目/电影时,程序没有认识到该名称是因为Windows语音识别是从列表中选择listboxitem而不是将其传递给我的程序。

识别工作正常,因为我在语法中有“停止”,“播放”,“倒带”等字样,当我抓住listener_SpeechRecognized时,它会正确地知道我所用的单词/短语说(现在只需在文本框中输入)。

知道我怎么能这样做吗?

2 个答案:

答案 0 :(得分:1)

我使用SpeechRecognitionEngine类而不是SpeechRecognizer类。这会创建一个与Windows语音识别完全断开连接的语音识别器。

答案 1 :(得分: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);
}