【问题标题】:The language for the grammar does not match the language of the speech recognizer语法的语言与语音识别器的语言不匹配
【发布时间】:2017-09-14 20:09:38
【问题描述】:

美好的一天!这是关于Microsoft Server Speech SDK v11.0(服务器版)的。

我在 MSDN sample 运行了测试示例。 所以英语短语 -red,blue - 被很好地识别。 但我也想识别俄语 - 安装 Microsoft Speech Recognition Language -TELE (ru-RU) 并运行我的应用程序/

代码:

 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,但它不起作用... 谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    之后:

    GrammarBuilder gb = new GrammarBuilder();
    

    添加:

    gb.Culture = Thread.CurrentThread.CurrentCulture
    

    使语法文化与识别器匹配。

    【讨论】:

    • 这个答案是错误的。线程的文化完全无关紧要,它可以是任何东西。您必须设置 GrammarBuilder.Culture = myCulture 和 new SpeechRecognitionEngine(myCulture);然后异常就消失了。
    【解决方案2】:

    看来你需要

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

    【讨论】:

      【解决方案3】:

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

      var sr = new SpeechRecognizer();
      var gb = new GrammarBuilder();
      
      // set the culture
      gb.Culture = sr.RecognizerInfo.Culture;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2019-06-26
        相关资源
        最近更新 更多