Alexa

Alexa语音识别

2018-12-29  本文已影响17人  xingzjx

一、简介

  Alexa指的是亚马逊在 2015 年推出的语音助手。在亚马逊推出 Echo 音箱之前,Alexa 其实还是一个查询网站流量的工具型网站,于 1999 年被亚马逊收购。

二、创建product

1、创建Amazon Developer Account:点击链接

2、创建product

3、配置product(Android)

点击Security Profile

然后生成一个Api key,上面的截图已经生成一个了,

需要填写你的包名,MD5签名,以及Sha256签名。

  Mac获取签名命令:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

三、体验Android Demo

https://blog.csdn.net/wangyongyao1989/article/details/80183020

四、 Alexa Voice Service

1、AVS概述

  Alexa的语音服务(AVS)是一种智能化和可扩展的云服务,是Amazon提供给联网终端设备的服务,需要集成在联网终端设备中;联网终端设备硬件上必须包含麦克风和扬声器。用户可以简单地与Alexa交谈,让它播放音乐、回答问题、获取新闻和本地信息、控制智能家居产品等。通过免费的Alexa应用程序,用户可以在任何地方方便地控制和管理他们的产品。如果你希望你的产品具有丰富和直观的用户体验,集成Alexa是一个正确的选择。 AVS将在2017年初登陆英国和德国;为Alexa引入显示卡后,有显示屏设备可通过图形界面显示来补充来自Alexa的语音回应。

  作为一个AVS开发者,你可以构建一个产品去访问Alexa不断增长的能力、更新、特性、以及成千上万的Skill。最重要的是AVS是免费使用的。

  AVS的特点包括:自然语音控制:Alexa有非常棒的自动会话识别和自然语言理解引擎,可以对语音请求及时识别和回应。更加智能:Alexa总是在变得更加智能,因为有不断增加的新能力和服务。通过机器学习、规则API更新、特性增加、用户skill增加来实现这一点。免费、容易集成:AVS API是一种编程语言无关的服务,容易集成到你的设备、服务和应用中,而且免费。

2、ASR

  ASR(Automatic Speech Recognition) Profile Selection:确定最好的自动语音识别模式。Alexa使用自动会话识别(ASR)和自然语言理解(NLU)的组合来理解用户的语音并精确反馈。ASR将语音转成文字,NLU将文字转换成指令。最后Alexa发送指令到对应的产品,执行某个具体的操作,比如播放音乐。

  对应于不同的产品、形状、声学环境和应用场景,AVS提供三种ASR模式。模式参数在每个“识别事件(Recognize event)”消息负载中发送给Alexa,并且也用于显示用户语音的结束是由客户端确定还是由云端来确定。(怎样确定语音结束被成为语音终点检测(speech endpointing))典型的ASR模式如下图所示:

3、AVS API

(1)授权

I、Authorize from a Companion App (通过配套APP授权)

  如果产品缺少图形用户界面(GUI)(通常也称为”headless”),可以配套的Android或IOS APP来实现授权。APP负责获得授权码并安全的传输到产品。产品负责使用授权码从LWA获得访问令牌并刷新令牌,然后用令牌去调用AVS服务。如下图所示:

II、Authorizing from a Companion Site(通过配套网站授权)

  具有Alexa功能的产品(Headless设备比如智能音箱)需要获得Login With Amazon(LWA)访问令牌,用此访问令牌去授权代表用户访问API接口。具有配套的产品注册网站的产品生产商可参考这部分内容。获得和使用访问令牌的工作流程如下:

1 用户访问产品注册网址,输入产品特定信息;

2 产品注册网址使用用户提供的注册信息创造LWA请求,并将用户转到LWA网址;

3 用户登录到LWA;

4 用户授权他的特定产品可用于Alexa;

5 LWA返回访问令牌给产品注册网址;

6 产品注册网址将访问令牌安全地传输给用户的特定产品;

7 用户的特定产品使用此令牌去执行AVS API接口调用。

III、Authorize from an AVS Product (基于产品授权)

  要访问Alexa语音服务,启用Alexa的Android或iOS应用程序需要获取Login with Amazon(LWA)访问令牌,该令牌将随每个请求一起发送到Alexa语音服务。授权页面如下:

vI、Code-Based Linking (CBL) for Other Devices and Platforms(基于数字字母代码授权)

  要访问Alexa语音服务(AVS),启用Alexa的产品需要获取随每个请求发送到AVS的随Amazon登录(LWA)访问令牌。本文档描述了基于代码的链接(CBL),这是一种最适合具有有限或无法访问字符输入的产品的授权方法,例如电视或智能手表。

  在产品注册期间,向用户提供短的字母数字代码和URL。在可访问浏览器的单独设备上,用户访问URL,使用其Amazon凭据登录,并输入短代码以将产品与其Amazon帐户相关联。链接后,产品会通过启动画面通知用户,并提供对AVS的访问权限。

(2)endpoints(站点)

AVS公开HTTP / 2服务,并期望为HTTP / 2编码的多部分消息。支持以下端点:

(3)传输协议

I、下行通道(Downchannel)

  下行通道是在HTTP/2连接中创建的流,用于将来自云的指令传递给客户端。下通道从设备保持半封闭状态,从AVS打开的连接的生命周期。下行通道主要用于向客户端发送云启动的指令和音频附件。

II、创建HTTP2连接

  产品开机时,它应该与AVS 建立单个 HTTP2连接。此连接用于处理所有指令和事件,包括在downchannel流上发送到客户端的任何内容。

维持与AVS的连接需要两件事:

* 建立下行信道流

* 与AVS(同步产品组件状态SpeechRecognizer,AudioPlayer,警报,喇叭,SpeechSynthesizer)

同步状态后,您的客户端应该能够使用此连接:

* 向AVS发送事件并从AVS接收指令 (注意:每个事件及其关联的响应都在单个事件流上发送。收到响应后,应关闭流)

* 在downchannel流上接收云启动的指令

III、维护HTTP/2连接

A.事件流生命周期

  每个新事件都在自己的流上发送。通常,在Alexa语音服务将指令和相应的音频附件返回给您的客户端后,这些流将关闭。

  请求按顺序处理。因此,在Alexa开始响应您之前的请求(一旦上一个请求返回标头)之后,应该发送新请求。

  您的产品打开一个流并发送一个多部分消息,其中包含一个JSON格式的事件和最多一个二进制音频附件(零或一个)。有关更多信息,请参阅构建HTTP / 2请求。

  AVS在流式传输完成之前,可能会在同一个流上返回由多个JSON格式的指令和相应的音频附件组成的多部分消息。下面的url属性cid:在一个Play或Speak指令也将出现在相关联的音频附件的报头。

  在AVS的响应之后,应该关闭事件流。

B.Downchannel生命周期

同时,指令可以在下行通道上发送给客户端。主要是,downchannel用于云发起的指令。

    GET请求创建具有AVS的连接的10秒内对指令作出路径。

    此流用于发送客户端云启动的指令和音频附件,例如来自Amazon Alexa应用程序的计时器,警报和指令。与事件流不同,下行信道不会立即关闭,并且设计为从客户端保持半开状态并从AVS长时间打开。

    当关闭下行通道流时,客户端必须立即建立新的下行通道,以确保您的客户端可以接收云启动的指令。

C.Ping和超时

您的客户端必须执行以下操作之一,否则将导致关闭连接:

* 当连接空闲时,PING每5分钟向AVS 发送一帧。

* 做一个GET对要求/ping每5分钟当连接处于空闲状态。

样品申请

:method = GET 

:scheme = https 

:path = / ping 

authorization = Bearer {{YOUR_ACCESS_TOKEN}}

在PING失败时,应关闭连接并立即创建新连接。

D.服务器启动的断开连接

当服务器启动断开连接时,您的客户端应该:

  打开一个新连接并通过它路由任何新请求。

  处理完所有打开的请求并正常关闭其相应的流后,关闭旧连接。

  保持与启动断开连接之前建立的任何流URL的连接(例如Amazon Music,Audible等)。只要字节可用,在服务器启动的断开连接之前播放的流应该继续播放。

  如果尝试创建新连接失败,则客户端应以指数退避重试。

(4)构造HTTP请求

I、HTTP请求格式图

建立与Alexa语音服务(AVS)的连接后,我们的客户端将使用HTTP / 2编码的多部分消息与Alexa进行通信。HTTP请求格式如下图

II、HTTP / 2消息头

每次调用AVS都需要以下标题:

:method = {{verb}}

:scheme = https

:path = / {{API version}} / {{events or directives}}

authorization = Bearer {{access_token}}

content-type = multipart / form-data; 边界= {{boundary_term}}

III、请求和响应实例

五、Alexa Skills Kit

参考:https://blog.csdn.net/facemax/article/details/80505796

六、Alexa管理后台

进入:https://alexa.amazon.com/spa/index.html页面

然后在这里可以添加和删除Skill

七、Alexa指令集

https://www.amazon.com/b?node=17934677011

上一篇下一篇

猜你喜欢

热点阅读