C# 4.0 如何在中文Windows7上使用SAPI5.4识别英语句子

C# 4.0 如何在中文Windows7上使用SAPI5.4识别英语句子,c#-4.0,windows-7,speech-recognition,sapi,C# 4.0,Windows 7,Speech Recognition,Sapi,我使用的是中文Windows 7,如果我使用语法来识别用所选对象构造的英语句子,语音识别工作正常。但是SpeechRecognitionEngine对象只能出现SpeechDetectedEventArgs,而不会出现LoadGrammarCompletedEventArgs或RecognitedCompletedEventArgs,当语法的宾语是用srgsdocument的宾语构成的。这是我的项目的一部分 SpeechRecognitionEngine recognizer = new

我使用的是中文Windows 7,如果我使用语法来识别用所选对象构造的英语句子,语音识别工作正常。但是SpeechRecognitionEngine对象只能出现SpeechDetectedEventArgs,而不会出现LoadGrammarCompletedEventArgs或RecognitedCompletedEventArgs,当语法的宾语是用srgsdocument的宾语构成的。这是我的项目的一部分

    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine ( System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"));
            SrgsDocument srgsdoc = new SrgsDocument(./commongreetingGrammar.grxml");
            recognizer.MaxAlternates = 5;
            recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
            recognizer.SpeechDetected += new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);
            recognizer.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
            recognizer.LoadGrammar(new Grammar(srgsdoc));

            recognizer.SetInputToDefaultAudioDevice();
            recognizer.RecognizeAsync (RecognizeMode .Multiple);
        }
        catch (Exception ex)
        { Console.WriteLine(ex.Message); }
        Console.ReadKey();
    }

    static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
    {
        Console.WriteLine("Detect that someone is speeching");
    }

    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
        if (e.Error == null)
            Console.WriteLine("complete to load grammar ");
        else
            Console.WriteLine("Fail to load grammar");
    }

    static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
    {
        if (e.Result.Semantics["step"].Value.ToString() == "A1")
        {
            Console.WriteLine("A start to speak:{0}", e.Result.Text);
        }
    }

恐怕我没有把我的问题说清楚。 我尝试在安装了Microsoft Speech Recognition 8.0 for Windows(简体中文-PRC)的中文Windows7上使用SpeechRecognitionEngine类(SAPI5.4的一部分)识别英语句子。使用由object of Choice类构造的object of Grammar类,加载语法的SpeechRecognitionEngine类的对象可以识别一些简单的英语句子,例如,“你好”、“是”、“退出”。 然而,使用用.grxml文件构造的srgsdocument对象构造的语法类对象,加载语法的SpeechRecognitionEngine对象无法识别一些简单的英语句子,只能检测音频输入。代码片段如下所示

幸运的是,我今天找到了解决问题的办法。 问题是我没有安装英语语言包,并且错误地构造了语法对象,这导致SpeechRecognitionEngine对象无法识别英语句子。我在中发布了解决方案的详细信息

![enter image description here][1]