[从 Windows 7 开始,Microsoft代理已弃用,在后续版本的 Windows 中可能不可用。
HRESULT SetVoice(
BSTR bszVoice // voice text setting for Command
);
- 返回S_OK以指示作成功。
命令 必须具有其 Voice 属性,并且 已启用 属性设置为语音可访问。 它还必须将其 VoiceCaption 属性设置为显示在 语音命令窗口中。 (为了向后兼容,如果没有 VoiceCaption,则使用 标题 设置。
提供的 BSTR 表达式可以包含方括号字符([ ])来指示可选字词和垂直条形图字符(|)以指示备用字符串。 备用项必须括在括号中。 例如,“(hello [there] |hi)“告知语音引擎接受命令的”hello“、”hello there“或”hi”。 请记住,在括号或括号中的文本与不在括号或括号中的文本之间包含适当的空格。
可以使用 star \ 运算符指定组或加号 (+) 运算符中包含的单词的零个或多个实例,以指定一个或多个实例。 例如,以下语法支持“try this”、“please try this”、“please please try this”和“please 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)+"
尽管运算符还可以与方括号(可选分组字符)一起使用,但这样做可能会降低代理处理语法的效率。
还可以使用省略号(...)来支持 单词发现,也就是说,告诉语音识别引擎忽略短语中这个位置的字词(有时称为 垃圾 单词)。 因此,语音引擎仅识别字符串中的特定字词,而不考虑何时使用相邻字词或短语进行交谈。 例如,如果将此属性设置为“”,”检查邮件 ...“,语音识别引擎会将”请检查邮件“或”检查邮件请“等短语匹配到此命令。 省略号可用于字符串中的任何位置。 但是,请谨慎使用此技术,因为带省略号的语音设置可能会增加不需要的匹配的可能性。
为命令定义字词和语法时,请始终确保至少包含一个所需的单词;也就是说,避免仅提供可选单词。 此外,请确保单词仅包含可发音的单词和字母。 对于数字,最好拼写出单词,而不是使用数字表示形式。 此外,省略任何标点符号或符号。 例如,使用“十美元披萨”,而不是“#10 $10 披萨!”。 为一个命令包括不可发音的字符或符号可能会导致语音引擎无法为所有命令编译语法。 最后,使语音参数与你定义的其他语音命令尽可能不同。 命令的语音语法之间的相似性越大,语音引擎就越有可能生成识别错误。 还可以使用置信度分数更好地区分两个可能具有类似或类似声音语法的命令。
命令 设置 Voice 属性会自动启用代理的语音服务,使侦听键和侦听提示可用。 但是,它不会加载语音识别引擎。
注意
可用的语法功能可能取决于语音识别引擎。 你可能希望与引擎的供应商联系,以确定支持哪些语法选项。 使用 IAgentCharacterEx::SRModeID 指定引擎。
另请参阅
IAgentCommand::GetVoice、IAgentCommand::SetCaption、IAgentCommand::SetEnabled、IAgentCommands::Add、IAgentCommands::Insert