Example #1
0
    public static void loadGrammar(Elite.MessageBus messageBus)
    {
        SpeechRecognitionEngine recognitionEngine = messageBus.recognitionEngine;

        recognitionEngine.SetInputToDefaultAudioDevice();
        recognitionEngine.InitialSilenceTimeout = TimeSpan.FromSeconds(5);
        recognitionEngine.EndSilenceTimeout     = TimeSpan.FromSeconds(1.5);
        recognitionEngine.BabbleTimeout         = TimeSpan.FromSeconds(5);

        DateTime startTime = DateTime.Now;

        Debug.Write("Begin loading star system grammar");
        bool grammarLoaded = true;
        int  counter       = 0;

        try
        {
            GrammarBuilder gb = new GrammarBuilder();
            gb.Culture = messageBus.recognitionEngineLang;
            Choices systemChoice = new Choices();
            foreach (string system in messageBus.systemIndex["systems"].Keys)
            {
                List <string> alternates = alternatePhonetics(system);
                foreach (string alternate in alternates)
                {
                    counter += 1;
                    GrammarBuilder systemBuilder = new GrammarBuilder(alternate);
                    systemBuilder.Culture = messageBus.recognitionEngineLang;
                    SemanticResultValue systemSemantic = new SemanticResultValue(systemBuilder, system);
                    systemChoice.Add(new GrammarBuilder(systemSemantic));
                }
            }
            gb.Append(systemChoice);
            Grammar grammar = new Grammar(gb);
            grammar.Name = "populated";
            recognitionEngine.LoadGrammar(grammar);
            Debug.Write("Star system recognition engine rules loaded:  " + counter);
        }
        catch (Exception ex)
        {
            Debug.Write(ex.ToString());
            grammarLoaded = false;
            Debug.Write("Error:  Unable to load grammar");
            Announcements.errorAnnouncement(messageBus, "Unable to load star system recognition engine");
        }
        if (grammarLoaded)
        {
            DateTime endTime  = DateTime.Now;
            TimeSpan loadTime = endTime - startTime;
            Debug.Write("Finished loading star system grammar.  Load time: " + loadTime.Seconds.ToString() + " seconds");
            Debug.Write("Recognition Engine - Audio Level: " + recognitionEngine.AudioLevel.ToString());
            Debug.Write("Recognition Engine - Audio Format: " + recognitionEngine.AudioFormat.ToString());
            Debug.Write("Recognition Engine - Grammars Loaded: " + recognitionEngine.Grammars.Count.ToString());
            Debug.Write("Recognition Engine - Recognizer Information: " + recognitionEngine.RecognizerInfo.Name.ToString());

            Announcements.engineAnnouncement(messageBus);
        }
        messageBus.grammarLoaded = grammarLoaded;
    }