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