65.9K
CodeProject 正在变化。 阅读更多。
Home

设置和运行“Misty Reads”技能(带 Microsoft Azure)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2019年6月14日

CPOL
viewsIcon

4297

使用 Azure,教会 Misty 读取从图像中提取的文本,然后返回一个编码的 .wav 文件,她可以保存和播放。

本文介绍如何构建一个技能,让 Misty 能够利用云和外部库的力量从图像中提取和读取文本。

它涵盖了如何

  • 设置 Microsoft Azure 函数
  • 从 Misty 向这个新创建的无服务器终结点发送请求
  • 使用 Microsoft Cognitive Services 从 Misty 捕获的图像中提取文本,并且
  • 返回一个 Misty 可以保存和播放的编码 .wav 文件。

第一步是在这里设置一个 Azure 帐户: https://azure.microsoft.com/en-us/free/ 在撰写本文时,您可以使用此服务和其他服务获得 200 美元的免费积分。(您绝对应该查看 Microsoft 提供的所有 AI 平台服务。)在设置好帐户后,请按照以下步骤开始操作。

1. 使用您的新凭据登录 Azure Portal,然后点击右上角的“创建资源”链接。

 

2. 浏览资源以查找并创建一个新的函数应用。填写表单以设置应用程序。

 

3. 为函数应用命名。对于此技能,我们使用 TeachMistyToRead。

4. 选择您的订阅级别。如果您有新帐户,您的级别将称为“免费套餐”,但如果您订阅了 Azure,则应称为“即用即付”。

5. 将 OS 保留为 Windows,并将运行时堆栈选择为 JavaScript。您可以将所有其他选项保留为默认值。(函数需要一个关联的存储帐户 – 如果您愿意,可以重命名此帐户,但在此教程中我们不会使用它。)

6. 点击“创建”。(注意:创建新资源可能需要几分钟时间。如果未显示,请稍等片刻然后点击刷新。)

7. 现在我们有了一个新的函数应用,让我们通过点击“函数”列表旁边的“+”按钮来创建函数本身。

如果您想在本地调试函数,您需要使用 Visual Studio Code。请遵循这些关于如何在本地使用 Azure Functions 的说明

8. 让我们选择在门户内编辑我们的云函数。

9. 选择 Webhook + API。

好了!现在我们可以向函数添加一些代码了。在继续之前,重要的是要注意我们正在构建的内容将可以在任何地方访问。最好不要与任何人分享您的 URL。当您准备好创建生产就绪的技能时,您将需要实施身份验证流程(有关如何执行此操作的更多信息,请查阅 Microsoft 文档)。

我们将从基础开始。让我们创建并测试文本到语音组件,以确保我们的验证和令牌流程正常工作。

10. 复制 _AzureTextToSpeech.js_ 文件中的代码,该文件可以在 _Misty Reads Tutorial_ 存储库的“Azure Files”目录下找到。在您喜欢的文本编辑器中打开此代码。

11. 您会注意到代码顶部有一个占位符,用于您的订阅密钥:“<在此处放入订阅密钥>”。要获取这些密钥,我们需要创建一个 Cognitive Services 资源。为此,

  • 打开 Azure Portal。
  • 转到“创建资源”,搜索并选择“Speech”(不是 Speech API)。
  • 点击“创建”。

12. 我们将此资产命名为 MistySpeech。请务必选择我们之前创建的相同资源组。(请记住,创建新资源可能需要几分钟时间。如果您的资源未立即显示,请在此步骤中耐心等待。)

13. 创建资源后,通过导航到“资源管理”→“密钥”组来获取密钥。回到代码文件,将标记为“<在此处放入订阅密钥>”的区域替换为您的实际订阅密钥(密钥 1)。

14. 我们快准备好了!现在我们需要 Misty 上的一个技能来利用我们刚刚创建的终结点并验证一切是否正常工作。您可以下载 _AnnounceKnownPerson.js_ 和 _AnnounceKnownPerson.json_ 代码文件,安装到 Misty 上并测试您的函数。在将此示例技能加载到机器人之前,请编辑文件,将您的 Azure 终结点放入 “<在此处放入 Azure 终结点>” 区域的字符串中。

15. 接下来,使用 Misty 的 Skill Runner 将技能安装到您的机器人上。将您更新的 _AnnounceKnownPerson.js_ 和 _AnnounceKnownPerson.json_ 拖放到“安装”区域以将代码安装到 Misty 上(请确保先连接到您的机器人!)。

16. 现在,当我们运行“Announce Known Person”技能时,我们可以验证一切是否正常工作。当 Misty 看到一个已知的人时,她会向他们打招呼 – 在我的例子中,她说,“Hi There Chris!”。

注意:要使此技能正常工作,Misty 必须已经训练了一个可以识别的人。对于未知的人,该技能不会触发。要训练 Misty 识别一个人,或查看 Misty 已经训练了识别谁,您可以使用 Command Center

现在我们已经准备好了第一半功能,我们将继续完成教 Misty 阅读的其余部分!

17. 因此,为了让 Misty 能够阅读,我们将创建一个新的 Azure 服务,使我们能够使用 Cognitive Service 的 Vision API。为此,请返回 Microsoft Azure 门户并选择“创建资源”(与我们上面使用的过程相同)。

18. 选择“AI + 机器学习”,然后点击“计算机视觉”。

19. 您可以为资源命名,无论您喜欢什么。我将称我们的为 MistyRead。

20. 选择订阅类型,确认您的定价层,选择我们之前使用的资源组(TeachMistyToRead),然后点击创建!(请记住,部署新资源可能需要一些时间。)

21. 现在我们需要使用新服务所需的密钥。可以通过转到“所有资源”,选择您创建的资源,选择“密钥”并复制您想使用的密钥来找到它们。

重要提示:不要与任何人分享您的密钥!由于我们使用的是 HTTP 调用,任何拥有您的密钥的人都可以使用您的服务,这会花费您金钱。

现在我们准备好将所有内容链接在一起了。我们将使用 Cognitive Services Vision 2.0 API 中的“识别文本”终结点。这个终结点是异步的;我们将不得不使用一个函数调用,该调用可以接收图像并将其提交到适当的文本提取终结点。在我们最近编写的函数中,我们将轮询返回的 URL,直到收到从 Misty 提供的图像中提取的文本。

为了简单起见,我们将创建一个新的 Azure 函数来为我们处理所有事情。它将处理来自 Misty 的图像,调用并轮询 Vision API,解析结果,然后生成文本到语音声音文件并将其返回给 Misty。这将完成教 Misty 如何阅读的完整循环。

22. 返回 Azure Portal,转到“所有资源”并选择您之前创建的函数应用(TeachMistyToRead)。在下拉菜单中,点击“函数”旁边的“+”按钮并创建一个新终结点。

23. 我们将创建一个新的 HTTP 触发器。您可以随意命名;我将称我们的为 ReadMistyRead。

24. 将授权级别保留为“函数”。

25. 将我们 GitHub 存储库(ReadMistyRead)中的代码复制并粘贴到新函数中。

注意:您可以通过发送一个以 base64 字符串编码的图像的 POST 命令来测试您新创建的函数调用。

26. 现在您有了新的函数调用,让我们通过安装将在 Misty 上运行的技能来将所有内容整合在一起。打开 _MistyReads.js_ 和 _MistyReads.json_ 文件(请记住,您可以在 Misty Reads Tutorial Github Repo 中找到它们),并将 AzureEndpoint 值替换为您的新终结点(它应该看起来像这样:https://TeachMistyToRead.azurewebsites.net/api/ReadMistyRead

27. 最后,加载将所有内容整合在一起的 Misty 技能。使用 Misty 的 Skill Runner 安装 .js 和 .json 文件。

28. 现在进行端到端测试。将 Misty 指向一段文字 – 例如,白板上的一段文字。当您点击 Misty 的头部以激活她的电容触摸传感器时,“Misty Reads”技能将激活。Misty 将暂停 2 秒钟,然后拍照发送给 Cognitive Services 来读取和说出她能够提取的文本!

如果遇到任何错误,您可以使用 Command Center 查看 Misty 能看到什么(尝试拍照以确保文本可见)。

那么,我们下一步该做什么?实际上,可能性是无限的——这只是我们如何让 Misty 成为一个可以与我们的环境交互的云连接节点的一小部分。这里有一些挑战(您可以利用本教程中引用的代码来开始)

  • 创建一个考勤机器人,记录 Misty 识别某人的时间,将其存储在 Microsoft SQL DB 中,并使用 Sendgrid 等电子邮件服务导出每日报告到您的电子邮件。
  • 使用 Cognitive Services 定期拍照并宣布 Misty 所见内容的描述(未来博客文章待定!)。
  • 使用 Azure Translator 让 Misty 成为您的翻译。
  • 对 Misty 能够读取的任何文本运行情感分析,并让她根据她正在阅读的内容做出表情。

我们希望这能激发您作为起点,为您的家庭或办公室的机器人创造一个迷人的用例 – 在 社区论坛 上告诉我们您正在做什么。

© . All rights reserved.