SemanticResultValue 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个语义值和选择性地将该值与语音识别语法的组件关联。
public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
- 继承
-
SemanticResultValue
示例
以下示例返回一个可 Grammar 识别命令“Set/Change/Alter Foreground/Background ... [颜色列表]”。 SemanticResultValue 和 SemanticResultKey 实例 (与 Choices 和 GrammarBuilder) 对象一起用于定义可在识别时分析的语义。 分析的语义将确定请求的颜色以及是修改前景还是背景。
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 对象与 GrammarBuilder 和 Choices结合使用是为 Grammar设计语义结构的最简单方法。 可以通过 Semantics 上的 属性获取 的 SemanticValue实例来访问短语的RecognizedPhrase语义信息。
注意
对象 SemanticResultValue 管理的值由 Object 传递给其构造函数的实例定义。 此 Object 的基础类型必须是 bool
、 int
、 float
或 string
。 任何其他类型都会阻止使用 SemanticResultValue构造Grammar实例。
实例的典型用法 SemanticResultValue 将实例与 的可识别组件 Grammar(例如短语、规则或 Choices 对象)相关联。 如果关联组件用作识别操作的一部分, SemanticResultValue 则 使用 在返回的短语的语义中定义值。
有两种 SemanticResultValue 基本方法可用于将实例与语法元素相关联,具体取决于用于创建 的 SemanticResultValue构造函数。
如果仅使用) 实例Object指定的值 (来构造SemanticResultValue对象,则 除了GrammarBuilder对象之外,SemanticResultValue还会与它前面的语法组件相关联。
例如,在下面的代码片段中,如果 Grammar 使用此 GrammarBuilder 实例构造的 识别单词“background”,则会在识别的短语语义中设置 的值
true
。GrammarBuilder backgroundGB=new GrammarBuilder("background"); backgroundGB.Append(new SemanticResultValue(true));
有关更多信息,请参见 SemanticResultValue(Object) 的说明。
如果使用字符串值短语或特定 GrammarBuilder 实例,以及 Object 指定 SemanticResultValue 值的 ,则该值将自动与字符串值短语或 GrammarBuilder 实例关联。 如果在识别过程中使用了短语或 GrammarBuilder 对象,则值将分配给已识别短语的语义。
以下示例对此进行了说明,在功能上等效于前面的示例,后者使用对 和 SemanticResultValue(Object)的Append显式调用。 如果识别逻辑使用单词“background”,则该值
true
将添加到已识别的语义中。fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));
有关详细信息,请参阅 和 SemanticResultValue(String, Object)的说明SemanticResultValue(GrammarBuilder, Object)。
若要由 Grammar 识别使用,所有SemanticResultValue实例都必须与该 Grammar所使用的对象之SemanticValue一相关联。 这是通过将语义键与 关联来完成的 SemanticResultValue。
语义键可以使用 对象显式附加到 SemanticResultValue。SemanticResultKey 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) |