练习 - 设置意向和自然语言理解

已完成

在此模块中,你将探索 Azure 语音服务的意向识别。 借助意向识别功能,可以使用 AI 支持的语音命令为应用程序提供支持,用户可以在其中说出非特定的语音命令,同时仍可让系统理解其意向。

准备场景

  1. 在“层次结构”窗口中选择“Lunarcom”对象,然后在“检查器”窗口中,使用“添加组件”按钮将“Lunarcom 意向识别器(脚本)”组件添加到 Lunarcom 对象

    Screenshot of adding the Lunarcom Intent Recognizer (Script) component.

  2. 在“项目”窗口中,导航到“资产”>“MRTK.Tutorials.GettingStarted”>“预制件”>“RocketLauncher”文件夹,将“RocketLauncher_Complete”预制件拖到“层次结构”窗口中,并将其放置在相机前面的适当位置。 例如:

    • 变换位置 X = 0、Y = 1、Z = 1.5
    • 变换位置 X = 0,Y = 90,Z = 0

    Screenshot of adding the RocketLauncher_Complete prefab.

  3. 在“层次结构”窗口中,再次选择“Lunarcom”对象,展开“RocketLauncher_Complete”>“Buttons”对象,并将 Buttons 对象的每个子对象分配到相应的“月球发射器按钮”字段。

    Screenshot of assigning each of the buttons.

创建 Azure 语言服务资源

在本部分,你将为要在下一部分中创建的对话语言理解 (LUIS) 应用创建 Azure 语言服务资源。

  1. 登录到Azure 门户并选择“创建资源”,然后搜索并选择“语言服务”

    Screenshot of the Azure language service resource.

  2. 选择“创建”按钮以创建此服务的实例:

    Screenshot of creating an instance of this service.

  3. 在“创建语言”页上,输入以下值:

    • 对于“订阅”,如果你有试用版订阅,请选择“免费试用版”。 如果没有试用版订阅,请选择任何一个其他订阅。
    • 对于“资源组”,请选择“新建”链接,然后输入合适的名称,例如 MRTK-Tutorials。 选择“确定”

    Screenshot of the Create Language screen.

    提示

    如果 Azure 帐户中已有另一个合适的资源组,则可以使用此资源组,而不是创建一个新的资源组。

  4. 仍在“创建”页上,输入以下值:

    • 对于“名称”,请为服务输入合适的名称,例如 MRTK-Tutorials-AzureSpeechServices
    • 对于“区域”,请选择靠近应用用户物理位置的位置,例如“美国东部”
    • 对于“定价层”,在本教程中,请选择“F0 (每 30 天 5,000 个事务)”

    Screenshot of the configured Create Language form.

  5. 接下来,选择“查看 + 创建”,查看详细信息,然后选择页面底部的“创建”按钮以创建资源(如果配置了一个要创建的资源组,则同时创建一个新资源组):

    Screenshot of the Review + Create screen.

  6. 资源创建过程完成后,可看到消息“部署完成”:

    Screenshot of the Overview screen.

创建对话语言理解 (CLU) 应用

在本部分,创建一个 CLU 应用,配置和训练其预测模型,并将其连接到在上一步中创建的 Azure 语言资源。

具体来说,你将创建一个意向,如果用户说应该采取操作,则应用在场景中的三个蓝色按钮之一上触发 PressableButton.OnClicked() 事件,具体取决于用户引用的按钮。

例如,如果用户说“继续并发射火箭”,则应用预测“继续”意味着应该采取某项操作,并且目标的 PressableButton.OnClicked() 事件在“发射”按钮上。

若要实现此目的,请执行以下主要步骤:

  1. 创建 CLU 应用
  2. 创建意向
  3. 创建示例言语
  4. 创建实体
  5. 将实体分配到示例言语
  6. 训练、测试并发布应用

1. 创建 CLU 应用

使用在上一部分创建 Azure 资源时所用的同一用户帐户登录到 Language Studio

  1. 登录后,系统会提示你选择 Azure 资源。 选择创建 Azure 语言服务资源时使用的值,然后选择“完成”。

    Screenshot showing the Select an Azure resource popup.

  2. 连接 Azure 资源后,选择“新建”>“对话语言理解”,然后在“创建项目”弹出窗口中输入以下值:

    • 对于“名称”,请输入合适的名称,例如 MRTK-Tutorials-AzureSpeechServices。 请记下所选的名称,因为本教程稍后需要用到它。
    • 对于“语句主要语言”,请选择一种语言
    • 对于“描述”,可选择性地输入合适的描述

    Screenshot of the Create a project popup.

  3. 选择“下一步”以查看项目配置。 选择“创建”来创建项目。

    Screenshot of the Review and finish screen.

  4. 创建新应用后,你将转到该应用的“架构定义”页。

    Screenshot of the App's dashboard page.

2.创建意向

  1. 在“架构定义”页中,选择“添加”,然后在“添加意向”弹出窗口中输入以下值:

    • 对于“意向名称”,请输入 PressButton
  2. 选择“添加意向”以创建新意向:

    Screenshot of the Add an intent screen.

    注意

    在本教程中,Unity 项目将通过其名称 (PressButton) 引用此意向。 使意向命名完全相同,这一点非常重要。

  3. 创建新意向后,你将返回到“架构定义”页。 PressButton 意向将显示在意向列表中。

    Screenshot of the list of Intents.

3.创建示例言语

  1. 在左侧边栏上,选择“数据标签”按钮。 在“数据标签”屏幕上,从“选择意向”下拉列表中选择“PressButton”

    Screenshot of the Data labeling page.

  2. 将以下示例语句添加到 PressButton 意向的“语句”列表中:

    • 激活发射顺序
    • 显示位置提示
    • 启动发射顺序
    • 按下位置提示按钮
    • 给予提示
    • 按下发射按钮
    • 我需要提示
    • 按下重置按钮
    • 重置体验的时间
    • 继续发射火箭
  3. 添加所有示例语句后,“数据标签”页应如下所示:

    Screenshot of the updated Data labeling page.

    注意

    在本教程中,Unity 项目将引用词语“提示”、“重置”和“发射”。在所有实例中以完全相同的方式拼写这些字词,这一点非常重要。

4.创建实体

  1. 在“数据标签”页上,选择右侧“活动”窗格中的“添加实体”,然后在“添加实体”弹出窗口中输入以下值:

    • 对于“实体名称”,请输入 Action
  2. 选择“添加实体”以创建新实体。

    Screenshot of adding a new entity.

  3. 重复上述步骤,创建名为“目标” 的另一个实体,因此现在有名为“操作”和“目标” 的两个实体。

    Screenshot of creating a target entity.

    注意

    在本教程中,Unity 项目将通过其名称(ActionTarget)引用这些实体。 使实体命名完全相同,这一点非常重要。

5.将实体分配到示例言语

  1. 选择单词 go,然后选择单词 ahead,接着从上下文弹出菜单中选择“操作(简单)”,将“go ahead”(“继续”)标记为“操作”实体值。

    Screenshot of labeling go ahead as an action entity value.

  2. 短语“继续”现在定义为 Action 实体值。 现在,“继续”一词下有一个“操作”实体值。

    Screenshot of the added action entity value.

    注意

    图像中标签下显示的红线指示尚未预测实体值;这将在下一节中训练模型时得到解决。

  3. 接下来,选择“发射”一词,然后从上下文弹出菜单中选择“目标”,将“发射”标记为“目标”实体值

    Screenshot of selecting the word launch.

  4. 词语“发射”现在定义为 Target 实体值。 现在,“发射”一词下有一个“目标”实体值。

    Screenshot of the added Target entity value under the word launch.

  5. PressButton 意向示例语句 go ahead and launch the rocket 现在配置为预测如下:

    • 意向:PressButton
    • Action 实体:继续
    • Target 实体:发射
  6. 重复前面的过程,为每个示例语句分配一个“操作”和一个“目标”实体标签,请记住,以下字词应标记为“目标”实体:

    • 提示(针对 Unity 项目中的 HintsButton)
    • 提示(针对 Unity 项目中的 HintsButton)
    • 重置(针对 Unity 项目中的 ResetButton)
    • 发射(针对 Unity 项目中的 LaunchButton)
  7. 选择保存更改。 标记了所有示例语句后,PressButton 意向页应如下所示:

    Screenshot of the PressButton intent page with all example utterances labeled.

6. 训练、测试和发布应用

  1. 若要训练应用,请从左侧边栏中选择“训练”按钮。 应该会看到“训练作业”页。

    Screenshot of the Training jobs screen.

  2. 选择“启动训练作业”并选择以下值:

    • 选择“训练新模型”,然后输入合适的名称,例如 MRTK-Tutorials-AzureSpeechServices
    • 选择“标准训练”
    • 选择“从训练数据中自动拆分测试集”
  3. 选择“训练”,开始训练过程。 完成训练处理后,你将看到“已完成训练”通知

    Screenshot of Finished training notification.

  4. 若要查看训练结果,请在“训练作业”屏幕上选择“输出模型”,然后选择“模型性能”选项卡

    Screenshot of the Model performance screen.

  5. 要部署应用,请选择左侧边栏中的“部署模型”按钮。 应该会看到“部署模型”页。

    Screenshot of the Deploying a model page.

  6. 选择“添加部署”,并在“添加部署”弹出窗口中输入以下值:

    • 选择“创建新部署名称”并输入合适的名称。 请记下所选的名称,因为本教程稍后需要用到它。
    • 从“选择已训练的模型”下拉列表中选择之前创建的模型
  7. 选择“部署”,等待发布过程完成。

    Screenshot of the Deployment completed notification.

  8. 选择新部署,然后选择“获取预测 URL”按钮。

    Screenshot of the Get Prediction URL page.

将 unity 项目连接到 CLU 应用

  1. 在“获取预测 URL”弹出窗口中,选择“复制”图标以复制预测 URL。

    Screenshot of Get Prediction URL popup.

  2. 返回 Unity 项目,在“层次结构”窗口中选择“Lunarcom”对象,然后在“检查器”窗口中,查找“Lunarcom 意向识别器(脚本)”组件,并按如下所示对其进行配置

    • 在“CLU 终结点”字段中,传递在上一步中复制的预测 URL。
    • 在“CLU 项目名称”字段中,传递创建 CLU 应用时记录的项目名称。
    • 在“CLU 部署”字段中,传递创建新部署时记录的部署名称。
    • 在“语言服务 API 密钥”字段中,为语言服务传递 API 密钥(Key1 或 Key2)。 可以在 Azure 门户中找到此项,方法是选择语言服务,然后在左侧菜单中选择“密钥”和“终结点”

    Screenshot of passing the example query you copied.

测试意向识别

  1. 若要在 Unity 编辑器中直接使用意向识别,必须允许开发计算机使用听写。 若要验证此设置,请打开 Windows 的“设置”,然后选择“隐私”>“语音”,并确保启用“在线语音识别”

    Screenshot of Testing the intent recognition.

  2. 如果进入游戏模式,可以先按火箭按钮来测试意向识别。 然后,当你讲出第一个示例语句“继续并发射火箭”时,可看到 LunarModule 发射到了太空。

    Screenshot of Enter the game mode.

  3. 尝试所有示例语句,然后尝试示例语句的一些变体,以及一些随机语句。