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

已完成

在本模块中,你将了解 Azure 语音服务的意向识别。 意向识别允许你为应用程序提供 AI 支持的语音命令,用户可以在其中说出非特定语音命令,并且仍然让系统了解其意图。

准备场景

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

    添加 Lunarcom 意向识别器(脚本)组件的屏幕截图。

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

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

    添加RocketLauncher_Complete prefab 的屏幕截图。

  3. 在“层次结构”窗口中,再次选择 Lunarcom 对象,然后展开 RocketLauncher_Complete>Buttons 对象,并将每个 Buttons 对象的子对象分配给相应的 Lunar Launcher Buttons 字段。

    分配每个按钮的屏幕截图。

创建 Azure 语言服务资源

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

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

    Azure 语言服务资源的屏幕截图。

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

    创建此服务的实例的屏幕截图。

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

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

    “创建语言”屏幕的屏幕截图。

    小窍门

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

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

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

    配置的“创建语言”窗体的屏幕截图。

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

    “查看 + 创建”屏幕的屏幕截图。

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

    “概述”屏幕的屏幕截图。

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

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

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

例如,如果用户说继续并发射火箭,应用预测继续意味着应该执行某些动作,并且PressableButton.OnClicked()针对目标的事件是在发射按钮上。

实现此目的的主要步骤包括:

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

1.创建 CLU 应用

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

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

    显示“选择 Azure 资源”弹出窗口的屏幕截图。

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

    • 对于 Name,请输入合适的名称,例如 :MRTK-Tutorials-AzureSpeechServices。 记下所选的名称,稍后在本教程中需要用到它。
    • 对于 言语主要语言,请选择一种语言。
    • 对于 “说明”,可以选择输入合适的说明。

    “创建项目”弹出窗口的屏幕截图。

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

    “查看和完成”界面的截图。

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

    应用的仪表板页面的屏幕截图。

2. 创建意图

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

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

    “添加意向”屏幕的屏幕截图。

    谨慎

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

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

    意向列表的屏幕截图。

3. 创建示例话语

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

    “数据标记”页的屏幕截图。

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

    • 激活启动序列
    • 为我显示放置提示
    • 启动发射程序
    • 按下放置提示按钮
    • 给我一个提示
    • 按启动按钮
    • 我需要提示
    • 按重置按钮
    • 是时候重置体验了
    • 继续发射火箭
  3. 添加所有示例话语后,数据标记页应如下所示:

    更新的数据标记页的屏幕截图。

    谨慎

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

4. 创建实体

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

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

    添加新实体的屏幕截图。

  3. 重复上一步以创建名为 Target 的另一个实体,因此有两个名为 ActionTarget 的实体。

    创建目标实体的屏幕截图。

    谨慎

    在本教程中,Unity 项目将按其名称引用这些实体, Action 以及 Target。 使实体命名完全相同,这一点非常重要。

5.将实体分配给示例语句

  1. 选择单词go,然后选择单词ahead,然后从上下文弹出菜单中选择动作(简单),将go ahead标记为动作实体值。

    将“go ahead”标记为动作实体值的屏幕截图。

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

    添加的动作实体值的屏幕截图。

    注释

    在图像中的标签下看到的红线指示实体值尚未预测;在下一部分中训练模型时,将解决此问题。

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

    选择“发射”一词的屏幕截图。

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

    “发射”一词下添加的“目标”实体值的屏幕截图。

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

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

    • 提示(针对 Unity 项目中的 HintsButton)
    • 提示(针对 Unity 项目中的 HintsButton)
    • 重置(面向 Unity 项目中的 ResetButton)
    • launch (目标是 Unity 项目中的 LaunchButton 按钮)
  7. 选择“保存更改”。 标记所有示例话语后,PressButton 意向页应如下所示:

    PressButton 意图页的屏幕截图,其中所有示例语句均带标签。

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

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

    “训练作业”屏幕的屏幕截图。

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

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

    “已完成训练”通知的屏幕截图。

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

    模型性能屏幕的屏幕截图。

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

    部署模型页的屏幕截图。

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

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

    “已完成部署”通知的屏幕截图。

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

    “获取预测 URL”页的屏幕截图。

将 unity 项目连接到 CLU 应用

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

    “获取预测 URL”弹出窗口的屏幕截图。

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

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

    传递复制的示例查询的屏幕截图。

测试意向识别

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

    测试意向识别的屏幕截图。

  2. 如果进入游戏模式,可以先按火箭按钮来测试意向识别。 然后,当你说第一个示例话语, 继续发射火箭时,你将看到月球模块发射到太空。

    进入游戏模式的屏幕截图。

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