public KeywordRecognizedEventArgs(string text, KeywordConfidenceLevel confidence, /*SemanticMeaning[] semanticMeanings,*/ DateTime phraseStartTime, TimeSpan phraseDuration)
 {
     this.confidence      = confidence;
     this.phraseDuration  = phraseDuration;
     this.phraseStartTime = phraseStartTime;
     //this.semanticMeanings = semanticMeanings;
     this.text = text;
 }
            /// <summary>
            /// Adds a new listener entry.
            /// </summary>
            /// <param name="listener">The callback to call.</param>
            /// <param name="level">The minimum confidence for this callback to be called.</param>
            public void AddListener(KeywordRecognizedDelegate listener, KeywordConfidenceLevel level)
            {
                if (listener != null)
                {
                    CommandInfo info = new CommandInfo();
                    info.m_Handler         = listener;
                    info.m_ConfidenceLevel = level;

                    m_Handlers.Add(info);

                    Enabled = true;
                }
            }
 /// <summary>
 /// Called when the keyword recognizer registers our keyword.
 /// </summary>
 /// <param name="args"></param>
 private void OnPhraseRecognized(PhraseRecognizedEventArgs args)
 {
     if (Enabled)
     {
         KeywordConfidenceLevel confidence = WSAConfidenceToKeywordConfidence(args.confidence);
         for (int index = 0; index < m_Handlers.Count; index++)
         {
             if (!m_Handlers[index].m_ToRemove && confidence <= m_Handlers[index].m_ConfidenceLevel)
             {
                 m_Handlers[index].m_Handler(new KeywordRecognizedEventArgs(args.text, confidence, args.phraseStartTime, args.phraseDuration));
             }
         }
     }
 }
            private KeywordConfidenceLevel WSAConfidenceToKeywordConfidence(ConfidenceLevel level)
            {
                KeywordConfidenceLevel newLevel = KeywordConfidenceLevel.Unknown;

                switch (level)
                {
                case ConfidenceLevel.High:
                {
                    newLevel = KeywordConfidenceLevel.High;
                    break;
                }

                case ConfidenceLevel.Medium:
                {
                    newLevel = KeywordConfidenceLevel.Medium;
                    break;
                }

                case ConfidenceLevel.Low:
                {
                    newLevel = KeywordConfidenceLevel.Low;
                    break;
                }

                case ConfidenceLevel.Rejected:
                {
                    newLevel = KeywordConfidenceLevel.Rejected;
                    break;
                }

                default:
                {
                    Debug.LogError("Unknown Confidecne Level: " + level.ToString());
                    break;
                }
                }

                return(newLevel);
            }
 /// <summary>
 /// Adds a callback to be called when any of the keywords get called in the list of keywords passed in.
 /// </summary>
 /// <param name="keywords">The list of keywords to track.</param>
 /// <param name="handler">The callback to call when any of the keywords are spoken.</param>
 /// <param name="level">The minimum level of confidence for any of the keywords spoken.</param>
 public void AddKeywords(IEnumerable <string> keywords, KeywordRecognizedDelegate handler, KeywordConfidenceLevel level = KeywordConfidenceLevel.Medium)
 {
     foreach (string keyword in keywords)
     {
         this.AddKeyword(keyword, handler, level);
     }
 }
        /// <summary>
        /// Adds a callback to be called if the keyword is spoken.  If a string with commas is passed in it will be split
        /// and each word seperated by a comma will be used as a keyword.
        /// </summary>
        /// <param name="wordOrPhrase">The keyword to track.</param>
        /// <param name="handler">The callback to call when the keyword is spoken.</param>
        /// <param name="level">The minimum level of confidence for any of the keywords spoken.</param>
        public void AddKeyword(string wordOrPhrase, KeywordRecognizedDelegate handler, KeywordConfidenceLevel level = KeywordConfidenceLevel.Medium)
        {
            string[] phrases = wordOrPhrase.ToLower().Split(',');

            foreach (string phrase in phrases)
            {
                string fixedPhrase = phrase.Trim();
                if (fixedPhrase.Length > 0)
                {
                    if (!m_Commands.ContainsKey(fixedPhrase))
                    {
                        m_Commands[fixedPhrase] = new KeywordCommandInfo(fixedPhrase);
                    }

                    m_Commands[fixedPhrase].AddListener(handler, level);
                }
            }
        }