/// <summary>
        /// On speech recognizer ready for update callback, called by recognition engine
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void RecognizerUpdateReachedHandler(object sender, RecognizerUpdateReachedEventArgs args)
        {
            // Unload currently loaded grammar
            if (this.state.Grammar != null)
            {
                try
                {
                    this.state.Recognizer.UnloadGrammar(this.state.Grammar);
                }
                catch (Exception) {}
            }

            if (grammarToLoad != null)
            {
                // Load new grammar asynchronously
                try
                {
                    this.state.Recognizer.LoadGrammarAsync(grammarToLoad);
                }
                catch (Exception exception)
                {
                    LogWarning(exception);
                    loadGrammarResponsePort.Post(exception);
                }
            }
            else
            {
                // Did not need to load a new grammar, done here
                loadGrammarResponsePort.Post(SuccessResult.Instance);
            }
        }
        private void SpeechGrammarChange(object sender, RecognizerUpdateReachedEventArgs e)
        {
            ambrRecognitionEngine.UnloadAllGrammars();

            if (e.UserToken == null)
            {
                //reset to the old grammar
                recognizeItemList = false;
                InstallDefaultSpeechGrammar();
            }
            else if (e.UserToken.GetType() == typeof(XmlDocument))
            {
                //We theoretically have a grammar we can use...
                recognizeItemList = true;

                var memoryStream = new MemoryStream();
                ((XmlDocument)e.UserToken).Save(memoryStream);

                memoryStream.Position = 0;//reset the stream position to 0
                speechGrammar         = new Grammar(memoryStream);
                ambrRecognitionEngine.LoadGrammar(speechGrammar);
            }
            else
            {
                //something is wrong here...
                throw new ArgumentException("User token was not null or XML");
            }
        }
示例#3
0
        // callback when recogniser is ready for grammar updates
        private void Recognizer_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            var todelete = new List <string>();

            foreach (var kvp in currentgrammar)
            {
                if (!updategrammar.ContainsKey(kvp.Key))        // any keys in currentgrammar not in update list, remove
                {
                    //System.Diagnostics.Debug.WriteLine($"{AppTicks.MSd} VR Remove {kvp.Key}");

                    foreach (var g in kvp.Value)
                    {
                        recognizer.UnloadGrammar(g);
                    }

                    todelete.Add(kvp.Key);
                }
                else
                {
                    //System.Diagnostics.Debug.WriteLine($"{AppTicks.MSd} VR Keep {kvp.Key}");
                }
            }

            foreach (var d in todelete)     // clean up dictionary
            {
                currentgrammar.Remove(d);
            }

            foreach (var kvp in updategrammar)
            {
                if (kvp.Value != null)     // may be null, meaning its already there, if not, add
                {
                    //System.Diagnostics.Debug.WriteLine($"{AppTicks.MSd} VR Add {kvp.Key}");

                    foreach (var g in kvp.Value)
                    {
                        recognizer.LoadGrammar(g);
                    }

                    currentgrammar.Add(kvp.Key, kvp.Value);
                }
            }

            {
                System.Diagnostics.Debug.WriteLine($"{AppTicks.MSd} VR List");
                List <Grammar> glist = new List <Grammar>(recognizer.Grammars);
                foreach (var g in glist)
                {
                    System.Diagnostics.Debug.Write($"{g.Name}, ");
                }
                System.Diagnostics.Debug.WriteLine($"");
            }

            updatinggrammar = false;
        }
示例#4
0
 private void OnUpdateRecognizer(object sender, RecognizerUpdateReachedEventArgs e)
 {
     lock (mLock)
     {
         foreach (var grammar in mGrammarQueue)
         {
             mRecognizer.LoadGrammarAsync(grammar);
         }
         mGrammarQueue.Clear();
     }
 }
示例#5
0
        private static void RegisteredEngine_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            DataStore.AddToMessageDump("SRE Update reached:");

            string         qualifier;
            List <Grammar> grammars = new List <Grammar>(registeredEngine.Grammars);

            foreach (Grammar g in grammars)
            {
                qualifier = (g.Enabled) ? "enabled" : "disabled";
                DataStore.AddToMessageDump(string.Format("{0} grammar is loaded and {1}.", g.Name, qualifier));
            }
        }
示例#6
0
        /// <summary>
        /// Requested by `SetGrammars()` - now ready to update.
        /// </summary>
        /// <param name="sender">Event sender.</param>
        /// <param name="e">Event args (`UserToken` expected to contain grammars).</param>
        private void OnRecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            if (e.UserToken is IEnumerable <Grammar> grammars)
            {
                this.speechRecognitionEngine.UnloadAllGrammars();
                foreach (var g in grammars)
                {
                    this.speechRecognitionEngine.LoadGrammar(g);
                }
            }

            DateTime originatingTime = this.streamStartTime + e.AudioPosition;

            this.PostWithOriginatingTimeConsistencyCheck(this.RecognizerUpdateReached, e, originatingTime);
        }
示例#7
0
        // At the update, get the names and enabled status of the currently loaded grammars.
        public static void RecognizerUpdateReachedHandler(
          object sender, RecognizerUpdateReachedEventArgs e)
        {
            //Thread.Sleep(1000);

            Console.WriteLine("Speech Processor: Now listing grammars ....");

            string qualifier;
            List<Grammar> grammars = new List<Grammar>(recognizer.Grammars);
            foreach (Grammar g in grammars)
            {
                qualifier = (g.Enabled) ? "enabled" : "disabled";
                Console.WriteLine("Grammar {0} is loaded and is {1}.",
                g.Name, qualifier);
            }
        }
示例#8
0
        /// <summary>
        /// Requested by `SetGrammars()` - now ready to update
        /// </summary>
        /// <param name="sender">Event sender</param>
        /// <param name="e">Event args (`UserToken` expected to contain grammars)</param>
        private void OnRecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            var grammars = e.UserToken as IEnumerable <Grammar>;

            if (grammars != null)
            {
                this.speechRecognitionEngine.UnloadAllGrammars();
                foreach (var g in grammars)
                {
                    this.speechRecognitionEngine.LoadGrammar(g);
                }
            }

            DateTime originatingTime = this.streamStartTime + e.AudioPosition;

            this.recognizerUpdateReached.Post(e, originatingTime);
        }
示例#9
0
        // At the update, get the names and enabled status of the currently loaded grammars.
        public static void RecognizerUpdateReachedHandler(
            object sender, RecognizerUpdateReachedEventArgs e)
        {
            //Thread.Sleep(1000);

            Console.WriteLine("Speech Processor: Now listing grammars ....");

            string         qualifier;
            List <Grammar> grammars = new List <Grammar>(recognizer.Grammars);

            foreach (Grammar g in grammars)
            {
                qualifier = (g.Enabled) ? "enabled" : "disabled";
                Console.WriteLine("Grammar {0} is loaded and is {1}.",
                                  g.Name, qualifier);
            }
        }
示例#10
0
        private void SpeechRecEngine_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            switch (mode)
            {
            case UpdateMode.Replace:
                SpeechRecEngine.UnloadAllGrammars();
                SpeechRecEngine.LoadGrammarAsync(newGrammar);      // Set up new contents to recognize
                break;

            case UpdateMode.Append:
                SpeechRecEngine.LoadGrammar(newGrammar);
                break;

            default:
                break;
            }
        }
        private void RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            log.Debug("RecognizerUpdateReached!");
            GrammarUpdateObject guo     = (GrammarUpdateObject)e.UserToken;
            Grammar             grammar = guo.grammarToUpdate;
            float confidence            = guo.confidence;

            // update grammar
            if (grammarMap.ContainsKey(grammar.Name))
            {
                s_recognizer.UnloadGrammar(grammarMap[grammar.Name]);
            }

            s_recognizer.LoadGrammar(grammar);
            grammarMap[grammar.Name] = grammar;

            // update confidence if it has value
            if (confidence > 0)
            {
                confidenceMap[grammar.Name] = confidence;
            }
        }
 public void recognizer_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     if (done == false)
     {
         if (grammarLoaded == true)
         {
             try
             {
                 sre.UnloadGrammar(loaded);
                 Console.WriteLine("Grammar unloaded");
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex);
             }
         }
         sre.LoadGrammar(toLoad);
         Console.WriteLine("Grammar loaded");
         grammarLoaded = true;
         done          = true;
         loaded        = toLoad;
     }
 }
示例#13
0
 private void RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     Debug.WriteLine("Recognizer update reached.");
 }
示例#14
0
 private void RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     Debug.WriteLine("Recognizer update reached: " + e.AudioPosition + " " + e.UserToken);
 }
示例#15
0
 void RecognitionEngine_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     if (toReloadTheGrammars)
     {
         LoadPluginsGrammar(mPluginHandler);
         toReloadTheGrammars = false;
     }
 }
 void sre_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     MessageBox.Show("Update?");
 }
        private static void RegisteredEngine_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
        {
            DataStore.AddToMessageDump("SRE Update reached:");

            string qualifier;
            List<Grammar> grammars = new List<Grammar>(registeredEngine.Grammars);
            foreach (Grammar g in grammars)
            {
                qualifier = (g.Enabled) ? "enabled" : "disabled";
                DataStore.AddToMessageDump(string.Format("{0} grammar is loaded and {1}.",g.Name, qualifier));
            }
        }
示例#18
0
 private static void Recognizer_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
 {
     Console.WriteLine("OK");
 }
示例#19
0
 private void OnUpdateRecognizer(object sender, RecognizerUpdateReachedEventArgs e)
 {
     lock (mLock)
     {
         foreach (var grammar in mGrammarQueue)
         {
             mRecognizer.LoadGrammarAsync(grammar);
         }
         mGrammarQueue.Clear();
     }
 }