Voice 属性 (Commands 对象)

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

Description

返回或设置传递到语音引擎语法 (的文本,以便识别) 。

语法

agent**。字符 (“CharacterID”) 。Commands.Voice** [ = string]

组成部分 描述
string 与语音引擎用于识别此命令的单词或短语对应的字符串表达式。

 

备注

如果不提供此参数,则 Commands 对象的 VoiceCaption 将不会显示在“语音命令”窗口中。

提供的字符串表达式可以包含方括号字符 ([ ]) 以指示可选字词和垂直条形字符 (|) 指示备用字符串。 替换项必须括在括号中。 例如,“ (hello [there] |hi) “指示语音引擎接受命令的”hello“、”hello there“或”hi”。 请记住,在括号或括号中的文本与不在括号或括号中的文本之间包括适当的空格。 可以使用 star (*) 运算符指定组中包含的单词的零个或多个实例,或者使用加 (+) 运算符来指定一个或多个实例。 例如,下面的语法支持“try this”、“please try this”、“please please try this”,with unlimited iterations of “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)+"

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

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

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

可以在语法中包括“text\发音”形式的字词,其中 文本 是显示的文本, 发音 是阐明发音的文本。 例如,当用户说“first”时,将识别语法“1st\first”,但 Command 事件将返回文本“1st\first”。 还可以使用 IPA (国际音标字母) 来指定发音,方法是使用磅号字符 (“#”) 开始发音,然后包括表示 IPA 发音的文本。

对于日语语音识别引擎,可以定义“假名\汉字”形式的语法,从而减少替代发音并提高准确性。 (为了向后兼容而反转排序。) 这一点对于汉字中正确名称的发音尤其重要。 但是,可以只传入不带假名的汉字,在这种情况下,引擎应侦听汉字的所有可接受的发音。 还可以仅传入假名。

另请注意,对于不使用空格字符来指定分词符的日语、中文和泰文等语言,请插入 Unicode 零宽度空格字符 (0x200B) 以指示逻辑分词符。

除使用分组或重复格式字符的错误外,代理不会报告语法中的错误,除非引擎本身报告错误。 如果传递的语法文本引擎无法编译,但引擎未处理并返回为错误,则代理无法报告错误。 因此,客户端应用程序必须仔细定义 Voice 属性的语法。

注意

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

 

此属性的操作取决于服务器的语音识别属性的状态。 例如,如果已禁用或未安装语音识别,则此属性不起作用。