语法的语言与语音识别器的语言不匹配

时间:2014-07-08 11:21:23

标签: c# speech-recognition microsoft-speech-platform

美好的一天!它与Microsoft Server Speech SDK v11.0(服务器版本)有关。

我在MSDN sample运行了测试示例。 所以英语短语-red,blue--很好。 但我也想识别俄语 - 安装微软语音识别语言-TELE(ru-RU)并运行我的app /

代码:

 static void DoWork()
    {

        Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("ru-RU");

        // Create a new SpeechRecognitionEngine instance.
        SpeechRecognitionEngine sre = new SpeechRecognitionEngine();

        // Configure the input to the recognizer.
        sre.SetInputToWaveFile(@"c:\Test\красный.wav");

        // Create a simple grammar that recognizes "red", "green", or "blue".
        Choices colors = new Choices(); 
       // colors.Add(new string[] { "red", "green", "blue","красный" });
        colors.Add(new string[] { "красный" }); //russian word- "red"

        // Create a GrammarBuilder object and append the Choices object.
        GrammarBuilder gb = new GrammarBuilder();
        gb.Culture = new CultureInfo("ru-RU"); // add Culture Info

        gb.Append(colors);

        Console.WriteLine(gb.Culture.CultureTypes);

        // Create the Grammar instance and load it into the speech recognition engine.
        Grammar g = new Grammar(gb);
        sre.LoadGrammar(g);

        // Register a handler for the SpeechRecognized event.
        sre.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);

        // Start recognition.
        sre.Recognize();
    }

    // Create a simple handler for the SpeechRecognized event.
    static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        Console.WriteLine(String.Format("Speech recognized: {0}",e.Result.Text));

    }

此行出现错误:

 sre.LoadGrammar(g);

The language for the grammar does not match the language of the speech recognizer.

那么,如何修复此错误?我尝试设置CultureInfo,但它不起作用...... 谢谢!

3 个答案:

答案 0 :(得分:5)

更改GrammarBuilder.Culture属性可以解决此错误。

之后:

GrammarBuilder gb = new GrammarBuilder();

添加:

gb.Culture = Thread.CurrentThread.CurrentCulture

这样语法文化与识别器相匹配。

答案 1 :(得分:1)

看起来你需要

SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(
          new System.Globalization.CultureInfo("ru-RU")))

答案 2 :(得分:1)

语法构建者文化必须与语音识别器匹配。最简单的方法是将语法文化设置为与语音识别器相同,如下所示:

filePath.setFilePath1(fileName.getPath());