前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解Amazon Alexa Skill(一)

深入理解Amazon Alexa Skill(一)

作者头像
ascii0x03
发布2019-03-19 11:02:17
2.4K0
发布2019-03-19 11:02:17
举报
文章被收录于专栏:ascii0x03的安全笔记

语音助手(Virtual Personal Assistants, VPA)是物联网智能家居中很火的一个领域,用户可以通过语言作为入口来控制家里各种各样的设备,而亚马逊的Alexa(echo,echo dot)是做的最早也是最优秀的一款产品,衍生出了很大的开发生态圈。本文基于亚马逊的官方文档试图记录作者对其Skill工作原理的理解。

这不是一个手把手Skill开发入门教程,仅仅讲解了概念与个人的一些理解

宏观概念

Alexa提供一系列内置的功能,比如回答问题,语音游戏,控制智能家居设备,这些功能都是由skill实现的。亚马逊为Alexa skill提供了一个开放的开发环境,类似于google的Android,任何开发者都可以自由的开发skill并上传到市场中供Alexa的用户使用。Skill调用的基本过程:识别用户调用请求——根据输入语音判断用户意图——执行功能。

Skill类型(Skill Models)

官方文档将skill分为了几个类别,如定制(custom)、智能家居、资讯等。 定制类型的skill需要开发者自己处理skill中涉及的几乎所有步骤:

  • intents: skill可以处理的请求,即提供的功能,例如点餐,叫出租车,查天气,等等。
  • interaction model: 定义出用户如何说才能调用intents,相当于图形化中点哪个按钮才能触发预设的功能。例如:“叫辆车”映射到“叫出租”的功能。
  • invocation name: 定义一个Alexa识别你这个skill的名字,类似于Android App的名字,如“抖音”。因为VPA需要知根据用户说的语音来判断到底用户想启用哪个skill,安卓中用户可以明确的用手点击屏幕的App图标,但是如何判断用户要确切的启用哪个skill对语音交互来说实现就很困难。Nan Zhang等发表在S&P 2019的工作就针对这点提出了voice squatting攻击,基本想法是利用口音方言、礼貌用语(“请”,“please”)的差别,让用户调用自己的恶意skill。此外还有个印度哥Deepak Kumar发现方言误发音甚至是可预测的。
  • 开发者可选引入一些除了声音以外的交互内容,比如有的高端VPA已经支持触摸屏了。

而其他类型的skill亚马逊给提供了预定义的模板,开发者不需要处理所有的步骤。比如智能家居类型(Smart Home pre-built model),就是预定义来控制门锁、灯等设备的,选择了这个模板就丧失了灵活的定制性,但是可以更方便快速的开发。使用这类的skill,由Smart Home Skill API 定义了:

  • device directives: skill可以处理的请求,比如开关、锁门、改变灯的亮度等等功能。其实就像intents。
  • 用户调用指令要说的话:其实就是interaction model。

开发者需要自己定义自己的skill如何响应某一个指令(directive),例如,需要写代码完成收到“turn on the light”指令时的功能,代码需要使用亚马逊的另一个服务AWS Lambda来完成。注意,使用Smart Home Skill API 就只能响应这些API里预设的特殊指令(device directives)。(这里有个疑问,alexa是如何判定调用哪个skill来管理自己家灯的?)

用户是如何与skill交互的

用户做出请求——Skill收集补充信息——用户提供需要的信息——skill完成请求功能 Custom skill的例子: User: Alexa, get high tide for Seattle from Tide Pooler. 其中Tide Pooler是skill的invocation name ,调用custom skill的用户必须明确说明这个skill的调用名称。“get high tide for Seattle ”就是需要映射到intent的语音了。

智能家居的例子: User: Alexa, turn on the living room lights. “turn on the...”会被Alexa识别成预设的interaction model,判断用户是要开灯。 “living room lights”是用户之前设置的具体设备的名称,而不是skill的名字,Alexa会将device directive发送给可以控制living room lights这个设备的智能家居skill,这个skill再通过与设备的云平台来交互,打开这个具体的设备,并返回结果给Alexa。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 宏观概念
    • Skill类型(Skill Models)
      • 用户是如何与skill交互的
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档