IAgentCommand::SetVoice

[Microsoft 代理从 Windows 7 开始已弃用,可能在后续版本的 Windows 中不可用。]

HRESULT SetVoice(
   BSTR bszVoice  // voice text setting for Command
);

设置命令Voice 属性。

  • 返回指示操作成功的S_OK。

bszVoice

一个 BSTR,指定命令Voice 属性的文本。

命令必须将其 Voice 属性和 Enabled 属性设置为语音可访问。 它还必须设置其 VoiceCaption 属性才能显示在 “语音命令”窗口中。 (为了向后兼容,如果没有 VoiceCaption,则使用 Caption 设置。)

提供的 BSTR 表达式可以包含方括号字符 ([ ]) 以指示可选字词和垂直条形字符 (|) 指示备用字符串。 替换项必须括在括号中。 例如,“ (hello [there] |hi) “指示语音引擎接受命令的”hello“、”hello there“或”hi”。 请记住,在方括号或括号中的文本与不在括号或括号中的文本之间包含适当的空格。

可以使用 star (*) 运算符指定组中包含的单词的零个或多个实例,也可以使用加号 (+) 运算符指定一个或多个实例。 例如,以下结果生成了支持“try this”、“please try this”和“please try this”的语法,并无限次迭代“please”:

   "please* try this"

以下语法格式排除“try this”,因为 + 运算符定义了至少一个“please”实例:

   "please+ try this"

重复运算符遵循常规的优先级规则,并应用于紧邻上一个文本项。 例如,以下语法生成“纽约”和“纽约纽约”,但不是“纽约纽约”:

   "New York+"

因此,通常需要将这些运算符与分组字符一起使用。 例如,以下语法包括“纽约”和“纽约纽约”:

   "(New York)+"

当你想要编写包含重复序列(如电话号码或项目列表的规范)的语法时,重复运算符非常有用:

   "call (one|two|three|four|five|six|seven|eight|nine|zero|oh)*"
   "I'd like (cheese|pepperoni|pineapple|canadian bacon|mushrooms|and)+"

尽管运算符还可以与方括号一起使用, (可选的分组字符) ,但这样做可能会降低代理处理语法的效率。

还可以使用省略号 (...) 来支持 单词识别,即告知语音识别引擎忽略此位置在短语 (有时称为 垃圾 词) 。 因此,语音引擎仅识别字符串中的特定字词,而不管何时使用相邻的字词或短语说话。 例如,如果将此属性设置为“[...]检查邮件 [...]“语音识别引擎会将”请检查邮件“或”检查邮件请“等短语与此命令匹配。 可以在字符串中的任意位置使用省略号。 但是,请谨慎使用此方法,因为带椭圆的语音设置可能会增加不需要的匹配的可能性。

定义命令的字词和语法时,始终确保至少包含一个必需的单词;也就是说,避免仅提供可选字词。 此外,请确保单词仅包含可读的单词和字母。 对于数字,最好拼出单词,而不是使用数字表示形式。 此外,请省略任何标点符号或符号。 例如,不要使用“#1 $10 披萨!”,而是使用“头号 10 美元披萨”。 包含一个命令的不可读字符或符号可能会导致语音引擎无法编译所有命令的语法。 最后,使语音参数尽可能合理地不同于你定义的其他语音命令。 命令的语音语法越相似,语音引擎就越有可能发生识别错误。 还可以使用置信度分数来更好地区分可能具有相似或相似语音语法的两个命令。

设置命令Voice 属性会自动启用代理的语音服务,使侦听键和侦听提示可用。 但是,它不会加载语音识别引擎。

注意

可用的语法功能可能取决于语音识别引擎。 你可能希望与引擎供应商检查,以确定支持哪些语法选项。 使用 IAgentCharacterEx::SRModeID 指定引擎。

 

另请参阅

IAgentCommand::GetVoiceIAgentCommand::SetCaptionIAgentCommand::SetEnabledIAgentCommands::AddIAgentCommands::Insert