Share via


SemanticResultKey Class

Attaches key string to SemanticResultValue values to define the SemanticValue objects created in Grammar using GrammarBuilder instances

Namespace: Microsoft.Speech.Recognition
Assembly: Microsoft.Speech (in microsoft.speech.dll)

Syntax

'Declaration
<DebuggerDisplayAttribute("{_semanticKey.DebugSummary}")> _
Public Class SemanticResultKey
[DebuggerDisplayAttribute("{_semanticKey.DebugSummary}")] 
public class SemanticResultKey
[DebuggerDisplayAttribute(L"{_semanticKey.DebugSummary}")] 
public ref class SemanticResultKey
/** @attribute DebuggerDisplayAttribute("{_semanticKey.DebugSummary}") */ 
public class SemanticResultKey
DebuggerDisplayAttribute("{_semanticKey.DebugSummary}") 
public class SemanticResultKey

Remarks

The basic unit of semantic expression under Speech platform is the SemanticValue which is a key value pair.

The SemanticResultKey object tags SemanticResultValue instances contained in GrammarBuilder objects and strings so that the values may readily be accessed from SemanticValue instances on recognition.

Use of SemanticResultValue and SemanticResultKey objects, in conjunction with GrammarBuilder and Choices is the easiest way to design a semantic structure for a Grammar. Semantic information for a phrase is accessed by obtaining and instance of SemanticValue, through the Semantics property on RecognizedPhrase.

Inheritance Hierarchy

System.Object
  Microsoft.Speech.Recognition.SemanticResultKey

Example

The example below creates a Grammar to recognize password input of the form "My password is …", where the actual input is matched with a wildcard.

The wildcard is tagged with a semantic key, and the SpeechRecognized handler check for the presence of this tag to verify that a password input has occurred.

private void pwdGrammar() {
    GrammarBuilder pwdBuilder = new GrammarBuilder("My Password is");
    GrammarBuilder wildcardBuilder = new GrammarBuilder();
    wildcardBuilder.AppendWildcard();
    SemanticResultKey wildcardKey= new SemanticResultKey("Password", wildcardBuilder);
    pwdBuilder+=wildcardKey;
    Grammar grammar = new Grammar(pwdBuilder);
    grammar.Name = "Password input";
    grammar.SpeechRecognized +=
            delegate(object sender, SpeechRecognizedEventArgs eventArgs) {
                SemanticValue semantics = eventArgs.Result.Semantics;
                RecognitionResult result=eventArgs.Result;

                if (!semantics.ContainsKey("Password")) {

                    SpeechUI.SendTextFeedback(eventArgs.Result,
                                              "No Password Provided", false);
                } else {

                    RecognizedAudio pwdAudio = result.GetAudioForWordRange(result.Words[3],
                                                                result.Words[result.Words.Count - 1]);
                    MemoryStream pwdMemoryStream = new MemoryStream();
                    pwdAudio.WriteToAudioStream(pwdMemoryStream);
                    if (!IsValidPwd(pwdMemoryStream)) {
                        string badPwd = System.IO.Path.GetTempPath() + "BadPwd" + (new Random()).Next().ToString() + ".wav";
                        FileStream waveStream = new FileStream(badPwd, FileMode.Create);
                        pwdAudio.WriteToWaveStream(waveStream);
                        waveStream.Flush();
                        waveStream.Close();
                        SpeechUI.SendTextFeedback(eventArgs.Result,
                                                  "Invalid Password", false);

                    }
                }
            };
    grammar.Enabled = true;
    _recognizer.LoadGrammar(grammar);
    UpdateGrammarTree(_grammarTreeView, _recognizer);

}

Thread Safety

All public static (Shared in Visual Basic) members of this type are thread-safe. Instance members are not guaranteed to be thread-safe.

Platforms

Development Platforms

Windows XP Professional with Service Pack 2 (SP2), Windows Server 2003, Windows Vista Ultimate Edition, Windows Vista Business Edition, Windows Vista Enterprise Edition

Target Platforms

See Also

Reference

SemanticResultKey Members
Microsoft.Speech.Recognition Namespace