SemanticResultValue 类

定义

表示一个语义值和选择性地将该值与语音识别语法的组件关联。

public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
继承
SemanticResultValue

示例

以下示例返回一个可 Grammar 识别命令“Set/Change/Alter Foreground/Background ... [颜色列表]”。 SemanticResultValueSemanticResultKey 实例 (与 ChoicesGrammarBuilder) 对象一起用于定义可在识别时分析的语义。 分析的语义将确定请求的颜色以及是修改前景还是背景。

private Grammar FgBgColorGrammar()
{
  Grammar grammar = null;

  // Allow the command to begin with set, alter, change.
  Choices introChoices = new Choices();
  foreach (string introString in new string[] { "Change", "Set", "Alter" })
  {
    GrammarBuilder introGB = new GrammarBuilder(introString);
    introChoices.Add(new SemanticResultValue(introGB, String.Format("Command: {0}", introString)));
  }

  GrammarBuilder cmdIntro = new GrammarBuilder(introChoices);

  // Define the arguments for the command to select foreground or background
  // and to change their color as semantic values.
  Choices fgOrbgChoice = new Choices();
  GrammarBuilder backgroundGB=new GrammarBuilder("background");
  backgroundGB.Append(new SemanticResultValue(true));
  fgOrbgChoice.Add(backgroundGB);
  fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground", false));
  SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgBool", fgOrbgChoice);
  Choices colorChoice = new Choices();
  foreach (string colorName in System.Enum.GetNames(typeof(KnownColor)))
  {

    // Use implicit conversion of SemanticResultValue to GrammarBuilder.
    colorChoice.Add(
        (GrammarBuilder) (new SemanticResultValue(colorName, (Color.FromName(colorName)).Name)));
  }

  // Create a GrammarBuilder for CmdArgs to be appended to CmdIntro using
  // semantic keys.
  GrammarBuilder cmdArgs = new GrammarBuilder();
  cmdArgs.Append(new SemanticResultKey("BgOrFgBool", fgOrbgChoice));
  cmdArgs.AppendWildcard();
  cmdArgs.Append(new SemanticResultKey("colorStringList", colorChoice));

  GrammarBuilder cmds =
      GrammarBuilder.Add(
                       cmdIntro,
                       new GrammarBuilder(new SemanticResultKey("Cmd Args", cmdArgs)));
  grammar = new Grammar(cmds);
  grammar.Name = "Tree [Set,change,alter] [foreground,background] * color";
  return grammar;
}

注解

SemanticResultValue将 和 SemanticResultKey 对象与 GrammarBuilderChoices结合使用是为 Grammar设计语义结构的最简单方法。 可以通过 Semantics 上的 属性获取 的 SemanticValue实例来访问短语的RecognizedPhrase语义信息。

注意

对象 SemanticResultValue 管理的值由 Object 传递给其构造函数的实例定义。 此 Object 的基础类型必须是 boolintfloatstring。 任何其他类型都会阻止使用 SemanticResultValue构造Grammar实例。

实例的典型用法 SemanticResultValue 将实例与 的可识别组件 Grammar(例如短语、规则或 Choices 对象)相关联。 如果关联组件用作识别操作的一部分, SemanticResultValue 则 使用 在返回的短语的语义中定义值。

有两种 SemanticResultValue 基本方法可用于将实例与语法元素相关联,具体取决于用于创建 的 SemanticResultValue构造函数。

若要由 Grammar 识别使用,所有SemanticResultValue实例都必须与该 Grammar所使用的对象之SemanticValue一相关联。 这是通过将语义键与 关联来完成的 SemanticResultValue

语义键可以使用 对象显式附加到 SemanticResultValueSemanticResultKey SemanticResultValue 未显式附加到键的实例将附加到默认 SemanticValue的根键。

SemanticResultValue使用 设置 Value后,无论它是使用默认根键标记还是由任何特定 SemanticResultKey标记,都不得修改该值,否则在识别操作期间将发生异常。

以下示例将导致异常,因为它设置并修改 的根ValueGrammar

GrammarBuilder gb=new GrammarBuilder();
gb.Append(new SemanticResultValue("One"));
gb.Append(new SemanticResultValue("Two"));

另一方面,允许使用以下示例中的代码。 尽管它定义了 的 SemanticResultValue多个实例,但它们包含在 对象 Choices 中,并且仅使用一个实例来设置键 bgOrfgText的值。

Choices fgOrbgChoice = new Choices();
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background"));
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground"));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgText", fgOrbgChoice);

构造函数

SemanticResultValue(GrammarBuilder, Object)

使用 SemanticResultValue 对象初始化 GrammarBuilder 类和关联语义值的一个新实例。

SemanticResultValue(Object)

使用指定的语义值初始化 SemanticResultValue 类的新实例。

SemanticResultValue(String, Object)

使用 SemanticResultValue 对象初始化 String 类和关联语义值的一个新实例。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToGrammarBuilder()

GrammarBuilder 实例返回 SemanticResultValue 结构的实例。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅