了解自动语音识别目录查找

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2007-10-23

Microsoft Exchange Server 2007 统一消息可以提供一个使用自动语音识别 (ASR) 的语音用户界面 (VUI)。此界面是一种电话界面,呼叫者可以在其中使用语音输入浏览菜单系统和访问邮箱。ASR 使呼叫者可以使用语音输入代替双音多频 (DTMF)(也称为按键)输入浏览 UM 自动助理菜单,或者在启用 UM 的用户访问其邮箱时使用语音输入。本主题将讨论在 Exchange Server 2007 统一消息中如何使用 ASR 以及如何将语法文件用于 ASR。

note注意:
对于 Outlook 语音访问用户以及对 UM 自动助理的调用,适用于目录查找和搜索的 ASR 当前只有英文形式可供使用。但是,已计划在以后的版本中实现其他语言的 ASR 支持。

语法文件概述

语音语法文件包含在使用语法文件时语音引擎将尝试识别的词语和短语。语法文件可以定义诸如命令之类的内容,其中,用户在查看邮件或日历,或者查看呼叫者搜索目录时由语音引擎识别的用户名时,可以使用这些命令。语音语法文件首先将生成为具有 .grxml 扩展名的文件。然后,将语音语法文件加载到语音引擎之前,这些文件将被处理为具有 .cfg 扩展名的已编译形式。但是,.cfg 文件将被加载到 Microsoft Exchange 语音引擎服务的内存中。因此,磁盘中不会创建和保存 .cfg 文件。图 1 说明了呼叫者如何使用语法文件。

图 1 语法文件概述

语法文件概述

note注意:
如果要找到与 .cfg 文件对应的 .grxml 文件,请在事件日志中查找 ID 为 1040 或 1041 的事件。该事件将表明特定 .cfg 文件是使用哪个 .grxml 文件生成的。

默认语法文件

安装统一消息服务器角色时,许多文件将被复制到服务器上。这些文件包括 ASR 用于启用语音用户界面 (VUI) 的默认语法文件。在默认情况下,这些语法文件都安装在 \UnifiedMessaging\grammars*\<language>* 文件夹中。但是,当统一消息服务器使用这些语法文件时,Microsoft Exchange 语音引擎服务会将其加载和编译为 .cfg 文件。

默认语法文件包含以下文件:

  • Calendar.grxml

  • Common.grxml

  • Contacts.grxml

  • Email.grxml

  • Mainmenu.grxml

自定义语法文件

安装统一消息服务器角色时将创建几个自定义语法文件,然后在 Active Directory 目录服务中创建统一消息对象和 Microsoft Exchange 统一消息服务在预先安排的时间运行语法生成时(每天一次),将再次创建语法文件。这些语法文件包含 Active Directory 中的用户名和其他对象,例如通讯组列表。对于每个名称,都存在其他数据,例如电子邮件别名。使用此数据可以使名称与唯一的对象关联。

Microsoft Exchange 统一消息服务在预先安排的时间运行语法生成时将创建以下语法文件:

  • Gal.grxml

  • <DialPlanGUID>.grxml

  • <AddressListGUID>.grxml

  • DistributionList.grxml

    note注意:
    启用 UM 的用户可能无法立即回应呼叫者。必须等待直到预先安排的下一个语法生成发生,或者必须手动运行 galgrammargenerator.exe,以便在语法文件中包含启用 UM 的用户的名称。

统一消息服务器创建语音语法文件时,将检查许多目录对象以确定应将哪些名称添加到语音语法文件中。统一消息服务器要处理的对象类型取决于正在创建的语法范围。但是,对于所有这些对象,如果对象在 Exchange 2007 地址列表中处于隐藏状态或对象的 msExchHideFromAddressLists 属性已设置为 True,则统一消息不会将该对象添加到语法。

  • 对于全局地址列表 (GAL) 语法文件,统一消息将考虑以下内容:

    • 已启用邮件的用户

    • 已启用邮件的联系人

  • 对于拨号计划语法文件,统一消息将考虑以下内容:

    • 在特定拨号计划中启用 UM 的用户
  • 对于通讯组列表语法文件,统一消息将考虑以下内容:

    • 在地址列表中可见的通讯组列表

在运行 Exchange 2007 的计算机上安装邮箱服务器角色时,会创建默认的 GAL。在安装统一消息服务器角色时,将为基于配置的语音语法筛选器的 GAL 创建语法文件。如果您在 Exchange 2007 组织中创建自定义地址列表或通讯组列表,将为创建的自定义地址列表或通讯组列表创建其他语法文件。

例如,如果在创建一个包含特定部门所有收件人的地址列表之后,又在此部门中添加了一个新用户,则在运行 Update-AddressList cmdlet 之前该收件人将不会变为地址列表中的成员。

例如,如果在创建一个包含特定部门所有收件人的地址列表之后,地址列表中的成员身份发生了变化,则必须在生成统一消息名称语音语法之前运行 Update-AddressList cmdlet。这样才能确保在生成或更新语法时,在语法中包含地址列表中当前存在的所有收件人。运行 Update-AddressList cmdlet 后,语法将包含该收件人所属的每个地址列表中的每一个收件人。

如果在语法生成发生之前某个启用 UM 的用户未标记为地址列表的成员,则不会将该用户添加为成员。下一次语法生成发生时,无论是按照定义的日程安排,还是手动运行 galgrammargenerator.exe,都不会在地址列表语法中添加该启用 UM 的用户。因此,在搜索目录时将找不到这些用户的名称。

note注意:
若要为通讯组列表生成语法文件,则通讯组列表不能处于隐藏模式。

第一次创建 UM 拨号计划时,不会创建任何语法文件。但是,统一消息服务器第一次加入拨号计划时,将会在相应的语言文件夹中创建一个适用于 UM 拨号计划的单个语法文件。这样,将对 UM 拨号计划语音语法文件进行筛选,使其只包含与拨号计划关联的启用 UM 的用户。这些对象的语法文件将通过该对象经过编译之后所表示的 GUID 来命名,例如 2da514a1-06f4-44a1-9ce5-610854f7d2ee.grxml 或相应的 .cfg 文件。

在创建适用于 UM 拨号计划、GAL、地址列表和通讯组列表的语法文件时,将在本地统一消息服务器上一个特定于语言的文件夹中创建这些语法文件。使用的语言文件夹将根据对 UM 拨号计划配置的默认语言进行选择。例如,如果已将拨号计划的默认语言设置为美国英语 (en-US),则将在 \UnifiedMessaging\grammars\en 文件夹中创建一个语法文件。语法文件创建之后,将根据统一消息服务器上配置的安排进行更新。语法文件创建之后,将根据统一消息服务器上配置的安排进行更新。

有关详细信息,请参阅下列主题:

语法生成

通常,默认语法生成安排可以满足您的需要。但是,某些时候您必须在预先安排的语法生成任务运行之前,手动生成语法文件或更新现有语法文件。还有一些时候您可能需要更改默认的语法生成安排。

语法生成将在以下情况发生:

  • 将统一消息服务器添加到 UM 拨号计划中,并且其后每天按照预先安排的时间间隔进行。

  • 运行 galgrammargenerator.exe 命令以手动更新或创建语法文件时。

创建的语法文件将在预先安排的语法生成任务运行时更新。若要显示某个统一消息服务器的默认语法生成安排,请使用以下 Exchange 命令行管理程序 cmdlet:

(Get-UMServer $env:COMPUTERNAME).GrammarGenerationSchedule

有关 Get-UMServer cmdlet 的详细信息,请参阅 Get-UMServer

默认情况下,语法生成每天将在由统一消息服务器的 GrammarGenerationSchedule 参数指定的时间发生。默认情况下,语法生成安排已被定义,以便语法生成在每天的 2:00 A.M 开始。但是,可以更改语法生成安排,并且该安排由 Exchange 命令行管理程序中的 Set-UMserver cmdlet 进行控制。尚不存在可以用于控制语法生成器安排的图形用户界面。只能在 Exchange 命令行管理程序中使用 Set-UMserver cmdlet 来控制此安排。有关如何使用 Set-UMServer cmdlet 更改拼音显示名称的详细信息,请参阅 Set-UMServer

默认情况下,语法生成安排已被设置为每天在 2:00 A.M(统一消息服务器上的本地时间)开始一次。开始之后,语法生成将运行至完成,无论是在活动时期预先安排的结束时间之前还是在其之后;如果存在其他正在运行的语言生成,则语法生成将不会运行。虽然可以配置其他预先安排的时间,但语法生成将不会在前一预先安排的语法生成期的一小时内运行。由于语法生成要占用大量的系统资源,所以建议对所有语法生成的日程安排进行配置,以便语法生成在非工作高峰期间发生。但是,可以在多个统一消息服务器上交错安排语法生成,例如,Umserver1 在 2:00 A.M. 开始,Umserver2 在 2:30 A.M. 开始,Umserver3 在 3:00 A.M.开始。这将有助于最大限度降低语法生成对 Active Directory 域控制器的影响。

note注意:
将在 %ExchangeRoot%\UnifiedMessaging\temp 文件夹中创建名为 UMSpeechGrammar.log 的日志文件。该日志文件包含在统一消息服务器上创建或更新的所有语法文件的有关信息。每次运行预先安排的语法生成时都会覆盖该文件。

在以下环境中,可以等待下一个预先安排的语法生成,以获得要反映的更改,或者可以通过使用 galgrammargenerator.exe 命令强制进行更新。

  • 完成新统一消息服务器角色的安装并为用户启用统一消息时

  • 创建 UM 拨号计划、UM 自动助理、自定义地址列表或自定义通讯组列表时

  • 创建启用 UM 的用户时

  • 更改 UM 拨号计划或 UM 自动助理时

note注意:
如果在完成新统一消息服务器角色的安装并为用户启用了 UM 后,Outlook Voice Access 用户立即尝试使用支持自动语音识别 (ASR) 的目录搜索功能查找已启用 UM 的用户,呼叫者将听到系统提示“对不起,我帮不上忙”。然后将挂断。因为尚未生成全局地址列表 (GAL) 的语法文件,所以会发生这种情况。使用 galgrammargenerator.exe 命令为 GAL 创建所需的语法文件。

例如,第一次为用户启用 UM 时,在预先安排的语法生成任务运行之前,使用 ASR 执行目录搜索的呼叫者无法找到这些用户。若要确保呼叫者可以看到最近启用 UM 的新用户,请运行 galgrammargenerator.exe 程序强制创建或更新 .grxml 文件并编译相应的 .cfg 文件,以便呼叫者可以使用 ASR 浏览菜单系统或通过使用 ASR 查找用户。

当统一消息服务器已加入拨号计划,并且有一个或多个已启用语音的自动助理与拨号计划相关联时,galgrammargenerator.exe 也非常有用。默认情况下,当呼叫者向启用语音的自动助理发出呼叫时,只能呼叫与拨号计划相关联的启用 UM 的用户。在可以根据语音输入将呼叫者转到启用 UM 的用户之前,必须生成一个语法文件。该语法文件不是在服务器加入拨号计划时自动生成的,而是安排在下一次语法生成时生成。除非已更改默认安排,否则,语法生成会根据默认安排(即本地时间每天上午 2:00)发生。

如果希望在创建自动助理后,便立即在启用语音的自动助理中通过目录搜索找到已启用 UM 的用户,则必须使用带有 –d 选项的 galgrammargenerator.exe 为自动助理生成所需的语法文件。

未启用语音的自动助理不需要语法文件。这是因为在 Active Directory 中为每一个启用 UM 的用户添加了一个 DTMF 映射。借助 DTMF 映射,呼叫者可以在电话键盘上输入与用户名称或电子邮件别名的字母相对应的数字。

但是,不会为未启用 UM 的用户自动创建 DTMF 映射。通过使用带 -u 选项的 galgrammargenerator.exe,可以为已启用邮件但是未启用 UM 的所有用户生成 DTMF 映射。这样,当呼叫者输入了已启用邮件但未启用 UM 的用户的名称或电子邮件别名后,这些用户就可以通过 DTMF 输入听到来自自动助理的呼叫。有关 DTMF 界面的详细信息,请参阅了解 DTMF 界面

下表列出了 galgrammargenerator.exe 程序中的开关和开关说明。

Galgrammargenerator.exe 中的开关

开关 说明

-d <dialplan>

创建一个语法文件,其中包含仅在指定 UM 拨号计划中启用 UM 的用户的名称。

-g

生成语法文件。

-l

生成适用于通讯组列表的语法文件。

-o

生成一个日志文件。其路径可以为绝对路径,如 C:\Logfiles。默认情况下,统一消息服务器也将在 \UnifiedMessaging\Temp 文件夹中自动创建一个日志文件。

-p

将所有已生成的语法预加载到 Microsoft 语音服务器平台中。

-s <UMserver>

为指定的统一消息服务器所属的每个 UM 拨号计划创建一个语法文件。

-u

为已启用 UM 的用户和没有启用 UM 的用户创建或更新 DTMF 映射。

note注意:
如果已启用邮箱的用户或已启用邮件的联系人的电子邮件别名中包含无效字符,并且您运行 galgrammargenerator.exe /u 命令为用户创建 DTMF 映射,该命令将无法成功地完成,统一消息将报告错误。为了确保所有邮箱用户和已启用邮件的联系人的电子邮件地址中没有无效字符,请使用 Get-User cmdlet 查看所有用户。Get-User cmdlet 将对用户属性执行有效性检查。如果任何字段包含无效字符,将生成错误,标明包含该字符的收件人和字段。

-x

定义以 XML 格式使用的语音筛选器列表。

note注意:
在每个安装了统一消息服务器角色的服务器上的 %ExchangeRoot%\bin 文件夹中已安装默认的语音语法筛选器列表 (SpeechGrammarFilterList.xml)。每个统一消息服务器上的语音筛选器列表文件中的内容必须相同。语音语法筛选器列表包含的一些规则中指定了匹配显示名称的输入模式和定义匹配名称转换的输出模式。如果名称与模式相匹配,则在语音语法中将会替换为由关联输出模式生成的名称。如果名称没有匹配的模式,则会原样传到语音语法中。如果某些名称有两种或两种以上不同的发音,将会拒绝在语音语法中插入这些名称。建议不要手动修改 SpeechGrammarFilterList.xml 文件。

自定义语法文件

当前,ASR 仅有英文形式可供使用,其中包含适用于英文的预先录制的提示和语音合成支持。虽然英文语言包中包含 ASR,但是某些时候语音识别可能很难找到正确的启用 UM 的用户,原因是该用户的名称很难发音,或者呼叫者的语音按照错误的名称进行匹配,还可能是呼叫者所说出用户名称的形式与语音语法中存在的名称不同。但是,添加其他的 UM 语言包不会解决此问题。

统一消息使用两个 Active Directory 属性生成在 ASR 语法文件中使用的名称:显示名称 (displayName) 和拼音显示名称 (msDS-PhoneticName)。默认情况下,当呼叫者说出用户名时,统一消息使用 displayName 属性识别其名称。这在用户名发音简单时可以奏效。但是,有些情况下用户名发音很难。为了帮助统一消息查找名称发音很难的用户,建议通过配置统一消息系统为 ASR 难以识别其名称的用户提供拼音显示名称。但是,为了提供拼音显示名称,必须预测语音引擎如何识别名称的特定拼写方式,才能提供拼音名称的准确发音。

note注意:
默认情况下,统一消息服务器会尝试将语音显示名称(如果存在)和显示名称都插入语音语法文件中。

例如,可以将拼音显示名称“Quaykoo Akoo Oddjay”提供给显示名称“Kweku Ako-Adjei”,并且 UM 会将其插入语音语法文件。为用户创建拼音名称的缺点是很难大规模地进行。为每个用户(ASR 无法正确识别其名称)创建并测试拼音显示名称将花费大量时间,在大型企业环境尤其如此。

若要为启用 UM 的用户添加或更改拼音显示名称,必须使用 ADSI 编辑 (AdsiEdit.msc) 或 Set-User Exchange 命令行管理程序 cmdlet。不能使用 Active Directory 用户和计算机或 Exchange 管理控制台更改用户的拼音显示名称。有关如何通过使用 Set-User cmdlet 更改拼音显示名称的详细信息,请参阅 Set-User

PhoneticDisplayName 参数可以指定显示姓名的拼音发音。显示姓名将通过使用 DisplayName 参数进行指定。如果统一消息服务器难于对显示姓名进行发音或识别,则可以使用 PhoneticDisplayName 参数指定一个拼音版本。如果指定一个值,ASR 将使用该值识别用户的姓名并且语音文本 (TTS) 引擎将使用该值对用户的姓名进行发音。如果不指定任何值,则统一消息服务器将会使用 DisplayName 参数。此参数值的最大长度为 255 个字符。

有关 ADSI 编辑的详细信息,请参阅 Adsiedit 概述

详细信息

有关如何更新用于 ASR 的语音语法文件的详细信息,请参阅如何更新语音语法文件

有关统一消息拨号计划的详细信息,请参阅了解统一消息拨号计划

有关统一消息自动助理的详细信息,请参阅了解统一消息自动助理