练习 - 设置意向和自然语言理解
在本模块中,你将了解 Azure 语音服务的意向识别。 意向识别允许你为应用程序提供 AI 支持的语音命令,用户可以在其中说出非特定语音命令,并且仍然让系统了解其意图。
准备场景
在“层次结构”窗口中,选择 农历通信 对象,然后在检查器窗口中,使用 “添加组件 ”按钮将 农历通信意向识别器(脚本) 组件添加到农历通信对象。
在“项目”窗口中,导航到 资产>MRTK。Tutorials.GettingStarted>Prefabs>RocketLauncher 文件夹,将 RocketLauncher_Complete prefab 拖到层次结构窗口中,并将其放置在相机前的合适位置。 例如:
- 转换 位置 X = 0,Y = 1,Z = 1.5
- 变换旋转 X = 0、Y = 90、Z = 0
在“层次结构”窗口中,再次选择 Lunarcom 对象,然后展开 RocketLauncher_Complete>Buttons 对象,并将每个 Buttons 对象的子对象分配给相应的 Lunar Launcher Buttons 字段。
创建 Azure 语言服务资源
在本部分中,你将为将在下一部分中创建的对话语言理解(CLU)应用创建一个 Azure 语言服务资源。
登录到 Azure 门户 并选择“ 创建资源”,然后搜索并选择 “语言服务:
选择“ 创建 ”按钮以创建此服务的实例:
在“创建语言”页上,输入以下值:
- 对于 “订阅”,请选择“ 免费试用 ”(如果有试用版订阅)。 如果没有试用订阅,请选择其他订阅之一。
- 对于 资源组,选择 “创建新 ”链接,然后输入合适的名称;例如 MRTK-Tutorials。 选择“ 确定”。
小窍门
如果 Azure 帐户中已有另一个合适的资源组,则可以使用此资源组,而不是创建新的资源组。
仍然在“创建”页上,输入以下值:
- 对于 “名称”,请输入适合服务的名称;例如 ,MRTK-Tutorials-AzureSpeechServices
- 对于 区域,请选择靠近应用用户物理位置的位置;例如, 美国东部
- 对于 定价层,在本教程中选择 F0(每 30 天 5000 笔交易)
接下来,选择“ 查看 + 创建”,查看详细信息,然后选择页面底部的“ 创建 ”按钮以创建资源(如果配置了要创建的资源组):
资源创建过程完成后,你将看到 “部署完成”消息:
创建对话语言理解应用 (CLU)
在本部分中,你将创建一个 CLU 应用,配置和训练其预测模型,并将其连接到在上一步中创建的 Azure 语言资源。
具体来说,你将创建一个意向,即如果用户说应执行某个作,应用会在场景中的三个蓝色按钮之一上触发 PressableButton.OnClicked()
事件,具体取决于用户引用的按钮。
例如,如果用户说继续并发射火箭,应用预测继续意味着应该执行某些动作,并且PressableButton.OnClicked()
针对目标的事件是在发射按钮上。
实现此目的的主要步骤包括:
- 创建 CLU 应用
- 创建意向
- 创建示例话语
- 创建实体
- 将实体分配给示例语句
- 训练、测试和发布应用
1.创建 CLU 应用
使用在上一部分中创建 Azure 资源时使用的相同用户帐户,登录到 Language Studio。
登录后,系统会提示你选择一个 Azure 资源。 选择创建 Azure 语言服务资源时使用的值,然后选择“ 完成”。
连接 Azure 资源后,选择“ 创建新的 > 对话语言理解 ”,并在 “创建项目 ”弹出窗口中输入以下值:
- 对于 Name,请输入合适的名称,例如 :MRTK-Tutorials-AzureSpeechServices。 记下所选的名称,稍后在本教程中需要用到它。
- 对于 言语主要语言,请选择一种语言。
- 对于 “说明”,可以选择输入合适的说明。
选择 “下一步 ”以查看项目配置。 选择“ 创建 ”以创建项目。
创建新应用后,将导航到该应用的 “架构定义 ”页。
2. 创建意图
在“架构定义”页中,选择“ 添加” 并在 “添加意向 ”弹出窗口中输入以下值:
- 对于“意向名称”,请输入“PressButton”
选择 “添加意向 ”以创建新意向:
谨慎
在本教程中,Unity 项目将按其名称引用此意向(
PressButton
)。 使意向命名完全相同,这一点非常重要。创建新意向后,将返回到“架构定义”页。 PressButton 意向将显示在意向列表中。
3. 创建示例话语
在左侧边栏上,选择 “数据标记 ”按钮。 在“数据标签”屏幕上,从“选择意向”下拉列表中选择“PressButton”。
将以下示例语句添加到 PressButton 意向的“语句”列表中:
- 激活启动序列
- 为我显示放置提示
- 启动发射程序
- 按下放置提示按钮
- 给我一个提示
- 按启动按钮
- 我需要提示
- 按重置按钮
- 是时候重置体验了
- 继续发射火箭
添加所有示例话语后,数据标记页应如下所示:
谨慎
在本教程中,Unity 项目将引用词语“提示”、“重置”和“发射”。在所有实例中以完全相同的方式拼写这些字词,这一点非常重要。
4. 创建实体
在“数据标记”页上,在右侧“活动”窗格中选择“添加实体”,并在“添加实体”弹出窗口中输入以下值:
- 对于 实体名称,请输入 操作
选择 “添加实体 ”以创建新实体。
重复上一步以创建名为 Target 的另一个实体,因此有两个名为 Action 和 Target 的实体。
谨慎
在本教程中,Unity 项目将按其名称引用这些实体,
Action
以及Target
。 使实体命名完全相同,这一点非常重要。
5.将实体分配给示例语句
选择单词go,然后选择单词ahead,然后从上下文弹出菜单中选择动作(简单),将go ahead标记为动作实体值。
前进短语现在定义为 Action 实体值。 现在,“继续”一词下有一个“操作”实体值。
注释
在图像中的标签下看到的红线指示实体值尚未预测;在下一部分中训练模型时,将解决此问题。
接下来,选择单词 启动,然后从上下文弹出菜单中选择 “目标” ,将 启动 标记为 “目标” 实体值。
启动词现在定义为目标实体值。 现在,“发射”一词下有一个“目标”实体值。
PressButton 意向示例语句
go ahead and launch the rocket
现在配置为预测如下:- 意向:PressButton
- “操作”实体:继续
- “目标”实体:发射
重复前面的过程,将动作和目标实体标签分配给每个示例话语,请记住,应将以下字词标记为目标实体:
- 提示(针对 Unity 项目中的 HintsButton)
- 提示(针对 Unity 项目中的 HintsButton)
- 重置(面向 Unity 项目中的 ResetButton)
- launch (目标是 Unity 项目中的 LaunchButton 按钮)
选择“保存更改”。 标记所有示例话语后,PressButton 意向页应如下所示:
6.训练、测试和发布应用
若要训练应用,请从左侧边栏中选择 “训练 ”按钮。 应该会看到“训练作业”页。
选择 “启动训练作业 ”,然后选择以下值:
- 选择 “训练新模型 ”并输入合适的名称;例如 ,MRTK-Tutorials-AzureSpeechServices。
- 选择 “标准训练”。
- 选择 “自动从训练数据拆分测试集”。
选择“ 训练 ”以启动训练过程。 训练完成处理后,你将看到 “已完成训练 ”通知。
若要查看训练的结果,请在“训练作业”屏幕上选择 “输出模型 ”,然后选择“ 模型性能 ”选项卡。
若要部署应用,请选择左侧边栏中的“ 部署模型 ”按钮。 您应该会看到“部署模型”页。
选择 “添加部署 ”并在 “添加部署 ”弹出窗口中输入以下值:
- 选择“ 创建新部署名称 ”并输入合适的名称。 记下所选的名称,稍后将在本教程中用到它。
- 从 “选择已训练的模型 ”下拉列表中选择之前创建的模型。
选择 “部署 ”并等待发布过程完成。
选择新部署,然后选择“ 获取预测 URL ”按钮。
将 unity 项目连接到 CLU 应用
在“ 获取预测 URL ”弹出窗口中,选择 “复制” 图标以复制 预测 URL。
返回 Unity 项目,在“层次结构”窗口中,选择 农历通信 对象,然后在检查器窗口中找到 农历通信意向识别器(脚本) 组件,并按如下所示对其进行配置。
- 在 “CLU 终结点”字段中,填写在上一步中复制的 预测 URL。
- 在 “CLU 项目名称 ”字段中,传递创建 CLU 应用时记录的项目 名称 。
- 在 CLU 部署 字段中,传递创建新部署时记录的 部署名称 。
- 在 语言服务 API 密钥 字段中,为 语言服务传递 API 密钥(Key1 或 Key2)。 可以通过选择语言服务,然后在左侧菜单中选择 “密钥”和“终结点 ”,在 Azure 门户中找到此项。