Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Good day! It is about Microsoft Server Speech SDK v11.0 (Server version).

I have run test example at MSDN sample . So English phrases -red,blue - recognized well. But I want to recognize Russian language too -install Microsoft Speech Recognition Language -TELE (ru-RU) and runs my app/

Code:

 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));
      
    }

Error appears at this line:

 sre.LoadGrammar(g);

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

So, how to fix this error? I try to set CultureInfo, but it does not works... Thank you!

like image 399
user2545071 Avatar asked Feb 12 '23 13:02

user2545071


2 Answers

Change the GrammarBuilder.Culture property would solve this error.

After:

GrammarBuilder gb = new GrammarBuilder();

Add:

gb.Culture = Thread.CurrentThread.CurrentCulture

So that the grammar culture matches the recognizer.

like image 123
Kevor Wang Avatar answered Feb 15 '23 09:02

Kevor Wang


Looks like you need

SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(
          new System.Globalization.CultureInfo("ru-RU")))
like image 29
Nikolay Shmyrev Avatar answered Feb 15 '23 09:02

Nikolay Shmyrev