如何从 Echo 中捕获已识别的文本?

物联网 亚历克斯
2021-06-25 23:48:32

我知道某些技能可以捕获语音文本,例如添加到待办事项和购物清单时,第三方技能也可以执行此操作,例如。与莫莉的短信

那么,他们是如何做到这一点的呢?是否有 API 调用可以捕获识别的文本并将其存储在某处?

1个回答

自定义技能可以捕获文本并将其发送到您的技能 API。

如果您不完全熟悉 Alexa Skills 的工作原理,这里有一个简短的总结:

  • 首先,您向 Amazon 注册您的技能,提供意图模式示例话语意图模式定义了可以执行的操作,以及用于发送到 API 的自定义数据示例话语提供了用户如何触发每个意图的示例。

  • 当用户激活您的技能时,Alexa 会尝试将他们所说的内容与您的技能示例话语之一进行匹配。如果匹配,它将发送一个HTTPS请求到服务器,要求响应。

  • 您的服务器提供响应(如果一切顺利),然后 Alexa 将向触发您的技能的用户提供反馈。

AMAZON.LITERAL插槽允许您接受几乎任何输入。请注意,目前仅在英语(美国)地区支持 - 英语(英国)和德语技能不能使用AMAZON.LITERAL.

您的意图架构可能如下所示:

{
  "intents": [
    {
      "intent": "SaveTodo",
      "slots": [
        {
          "name": "Todo",
          "type": "AMAZON.LITERAL"
        }
      ]
    }
  ]
}

你的样本话语可能是这样的:

SaveTodo remind me to {fetch the shopping|Todo}
SaveTodo remind me to {write my English essay|Todo}
SaveTodo remind me to {buy some dog food tomorrow|Todo}

使用 时AMAZON.LITERAL,您需要提供大量的样本话语——对于每种可能的输入长度至少有一个样本,但理想情况下更多。亚马逊文档建议您应该针对可以接受各种类型输入的插槽的数百个样本。

这看起来确实有点乏味,但如果你不这样做,你的技能就不太可能很好地识别文本。您或许可以从客户数据中生成样本话语(只要事先删除个人信息!),以便最常见的话语出现在您的样本中——我怀疑 Alexa 会稍微偏向于识别与样本相似的话语。

亚马逊不鼓励AMAZON.LITERAL插槽,并希望您使用自定义插槽类型,这要求您列出可能的输入。重要的是要记住:

自定义槽类型不等同于枚举。如果口语理解系统识别出列表之外的值,则仍可能返回。尽管自定义槽类型的输入会针对列表中的值进行加权,但它并不仅限于列表中的项目。在使用槽值时,您的代码仍然需要包括验证和错误检查。