Search code examples
windows-phone-8speech-recognition

Windows Phone speech recognition - words that are not in grammar


consider a grammar like this ; speech.Recognizer.Grammars.AddGrammarFromList("answer",new string[] { "Go.","no" });

When I say something else that are not in grammar, she says "sorry didnt catch" and then tries to start it again. Same goes for null input.

What I want is that it should only recognize the words in grammar and for everything else it should just pass the recognition. I don't want to see anything like "sorry didnt catch" and second time recognotion. Any idea ? thanks.

Edit : with try-catch I can avoid from second time recognotion if the word is unknown but now it's waiting too long on "sorry didnt catch" part.

try
    {
        SpeechRecognizerUI speech = new SpeechRecognizerUI();
        speech.Settings.ReadoutEnabled = false;
        speech.Settings.ShowConfirmation = false;
        speech.Recognizer.Settings.InitialSilenceTimeout = System.TimeSpan.FromSeconds(0.8);
        speech.Recognizer.Grammars.AddGrammarFromList("answer", new string[] { "Go.", "no" }); 

        SpeechRecognitionUIResult result = await speech.RecognizeWithUIAsync();

        if (result.RecognitionResult.Text == "Go.") { .... }   
    }
    catch
    {
        ..... }

Solution

  • In my opinion, you must build your own UI to avoid this. So you should use SpeechRecognizer and then you can handle the input as you want. In my case I even created two SpeechRecognizer, on with own Wordlist, the other one with default dictionary. It works like a charm, but I couldn't get it to work with SpeechRecognizerUI.