SemanticResultKey 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
构造一个 SemanticResultKey 实例并将项与语法组件关联。
重载
SemanticResultKey(String, GrammarBuilder[]) |
分配一个语义密匙给一个或多个 GrammarBuilder 对象,用于创建语音识别语法。 |
SemanticResultKey(String, String[]) |
分配一个语义密匙给一个或多个 String 实例,用于创建语音识别语法。 |
注解
的 SemanticResultKey 构造函数指定一个文本标记 (语义键) ,以及一组要添加到语音识别语法的语法组件。
语法组件可以指定为对象的数组 GrammarBuilder ,也可以指定为实例数组 String 。
如果使用语法组件进行识别,则可以使用作为语义键提供给 构造函数SemanticResultKey的文本标记来访问返回SemanticValue的 。 Value实例的属性SemanticValue将由 的定义SemanticResultKey中使用的语法组件确定。
SemanticResultKey(String, GrammarBuilder[])
- Source:
- SemanticResultKey.cs
- Source:
- SemanticResultKey.cs
分配一个语义密匙给一个或多个 GrammarBuilder 对象,用于创建语音识别语法。
public:
SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::Speech::Recognition::GrammarBuilder ^> ^ builders);
public SemanticResultKey (string semanticResultKey, params System.Speech.Recognition.GrammarBuilder[] builders);
new System.Speech.Recognition.SemanticResultKey : string * System.Speech.Recognition.GrammarBuilder[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray builders As GrammarBuilder())
参数
- semanticResultKey
- String
要用于作为语义关键访问 SemanticValue 与参数指定的对象 GrammarBuilder关联的实例 builders
的标记。
- builders
- GrammarBuilder[]
将与可用 semanticResultKey
中定义的标记访问的 SemanticValue 对象相关联的语法组件的数组。
示例
以下示例创建 一个 Grammar ,用于识别格式为“我的密码为...”的密码输入,其中实际输入与通配符匹配。
通配符由 SpeechRecognizer 键值为“Password”的 标记。 处理程序 SpeechRecognized 检查是否存在此标记,获取密码的音频输入,并验证密码。
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);
}
注解
由于隐式转换, builders
参数还支持 SemanticResultValue、 SemanticResultKey、 Choices和 String 对象。 有关隐式转换的详细信息,请参阅 Implicit。
执行识别操作时, GrammarBuilder 参数中 builders
提供的对象被视为顺序。 例如,如果使用以下内容 SemanticResultValue 构造 , Grammar则识别引擎的输入必须按顺序包含要识别的单词“快速棕色狐狸”。
SemanticResultKey stringTest=new SemanticResultKey(
"stringTest", new GrammarBuilder[] {
new GrammarBuilder("the"),
new GrammarBuilder("quick"),
new GrammarBuilder("brown"),
new GrammarBuilder("fox")});
参数 semanticResultKey
包含用于访问 SemanticValue 可能返回的 的 标记。
Value的 SemanticValue 由 GrammarBuilder 参数提供的builders
实例确定。
GrammarBuilder如果 对象不包含 的定义实例SemanticResultValue,则 的SemanticValuenull
值为 。
GrammarBuilder如果 参数中builders
提供的对象提供的未标记 (与识别逻辑使用的对象) SemanticResultValue实例不关联SemanticResultKey,则 的SemanticResultValue实例将定义Value生成的 的属性SemanticValue。
参数指定的 对象中GrammarBuilder应有一个且只有一个未标记SemanticResultValue的builders
实例。 如果未标记 SemanticResultValue 的多个实例与 相关联, SemanticResultKey则每个实例都将尝试设置在识别结果中生成的 的值 SemanticValue 。 不允许这样做,并且识别器在尝试使用 Grammar 此类 SemanticResultKey 实例创建的 时会生成异常。
SemanticResultValue参数所指定builders
且已与另一个SemanticResultKey参数关联的 对象中包含的 GrammarBuilder 实例对当前SemanticResultKey实例没有影响。
适用于
SemanticResultKey(String, String[])
- Source:
- SemanticResultKey.cs
- Source:
- SemanticResultKey.cs
分配一个语义密匙给一个或多个 String 实例,用于创建语音识别语法。
public:
SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::String ^> ^ phrases);
public SemanticResultKey (string semanticResultKey, params string[] phrases);
new System.Speech.Recognition.SemanticResultKey : string * string[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray phrases As String())
参数
- semanticResultKey
- String
要用于访问与由 phrases
参数指定的对象 String 相关联的 SemanticValue 实例的标记。
- phrases
- String[]
一个或多个 String 对象,其连接文本将与使用定义在 semanticResultKey
标记可访问的 SemanticValue 对象关联。
示例
以下示例从GrammarBuilder使用 SemanticResultKey的对象创建 Grammar ,该对象由 对象数组String定义。
使用 Grammar 创建的 识别引擎将识别短语“颜色红绿蓝零”。 识别返回的 RecognizedPhrase 的语义将包含 SemanticValue 具有 Value “红色绿色蓝色”的 。 可以使用“代码”标记访问 SemanticValue 。
SemanticResultValue("zero", 5)
由于 追加到 ,GrammarBuilder因此 中的RecognizedPhrase根SemanticValue对象的值将为 5。
private void keyTest()
{
// Say "color red green blue zero"
GrammarBuilder gb = new GrammarBuilder("color") +
new SemanticResultKey("code",
(new string[] {"red", "green", "blue"})) +
new SemanticResultValue("zero", 5);
Grammar g = new Grammar(gb);
g.Name = "keyTest";
_recognizer.LoadGrammar(g);
}
注解
执行识别操作时, String 参数中使用的 phrases
对象被视为顺序对象。 例如,如果使用以下内容 SemanticResultValue 构造 , Grammar则识别引擎的输入必须按顺序包含要识别的单词“快速棕色狐狸”。
SemanticResultKey stringTest=new SemanticResultKey("stringTest",
new string[] {
"the",
"quick",
"brown",
"fox"});
参数 semanticResultKey
确定用于访问 SemanticValue 可能返回的 的键。
如果使用包含语义键的 对象和字符串对象的数组来构造 GrammarGrammarBuilder ,ValueSemanticValue则识别操作生成的 将是用于识别的字符串。 在前面的示例中,这意味着 Value 将是“快速棕色狐狸”。