Tag: Amazon Lex


将 Amazon Lex 自动程序架构导出至 Alexa Skills Kit

您现在可以将 Amazon Lex 聊天自动程序架构导出到 Alexa Skills Kit 来简化创建 Alexa 技能的流程。

利用 Amazon Lex,您现在能够以 JSON 文件形式导出 Amazon Lex 聊天自动程序定义,以便能够将其添加到 Alexa Skills Kit (ASK)。在将该自动程序架构文件添加到 ASK 中后,您可以使用它构建 Alexa 技能,以便在 Amazon Echo、Amazon Dot、Amazon Look、Amazon Tap、Amazon Echo Show 和支持 Alexa 的第三方设备上使用。JSON 配置文件包含您的 Amazon Lex 聊天自动程序的结构,包括带表达、槽、提示和槽类型的目的架构。导出功能简化了通过 Amazon Lex 聊天自动程序创建 Alexa 技能的过程。

要创建 Alexa 技能,您可以从 ASK 门户中使用 Amazon Lex 自动程序定义文件,并执行以下步骤。

在 Amazon Lex 控制台中

  1. 在创建、构建并发布您的自动程序后,导航回包含您目前已开发的自动程序的列表的页面。
  2. 使用单选按钮选择要导出的自动程序。选择自动程序后,页面顶部的 Actions 选项卡将变为有效的。
  3. Actions 选项卡中,从下拉菜单项中选择 Export,然后在模态对话框中,选择 Alexa Skills Kit 作为您的平台,然后选择版本。
  4. 单击 Create。这将生成一个 zip 文件,其中包含您的自动程序架构的 JSON 文件。

您的 Amazon Lex 自动程序架构现已能够在 Amazon Alexa 技能中使用!

(more…)

新增 – Amazon Connect 和 Amazon Lex 集成

Amazon ConnectAmazon Lex 这两项我最喜欢的服务最近推出了一些增强功能,我非常高兴有机会与大家分享这些功能。Amazon Connect 是一项基于云的自助式联络中心服务,可使任何企业能够轻松地以更低成本提供更优质的客户服务。Amazon Lex 是一项使用语音和文本构建对话界面的服务。通过将这两项服务相集成,您可以利用 Lex 的自动语音识别 (ASR) 和自然语言处理 (NLU) 功能为客户打造自助式体验。为了做到这一点,Amazon Lex 团队创建了新的深度学习模型,专门用来识别 8kHz 音频样本中的呼叫中心对话,稍后我将对此进行详细介绍。如果自动程序可以处理 90% 的客户请求,则客户等待时间将会减少,从而有更多时间来使用您的产品。

如需 Amazon ConnectAmazon Lex 的更多背景信息,我强烈建议您阅读 Jeff 之前发布的有关这两项服务的帖子 [1][2] (尤其是在您喜欢 LEGO 的情况下)。


接下来,我将向您展示如何使用这项新集成。大家也许知道,我喜欢在自己的 Twitch 频道上试用这些服务。我会选择一款我们针对 Twitch 频道构建的应用程序,然后针对博客进行修改。在这款应用程序的核心,用户拨打 Amazon Connect 号码后,随即会出现一系列“连锁反应”:将用户连接到 Amazon Lex 自动程序,自动程序调用 AWS Lambda 函数,而函数随后执行一组操作。

我们的应用程序有什么作用呢?我想最终解决哪个代码编辑器最为出色这个问题:我钟爱 Vim,这是一款超赞的编辑器,它的代码编辑功能非常棒 (堪称最好的编辑器)。我的同事 Jeff 偏爱 Emacs,它是一款强大的 操作系统编辑器…如果您的手指头足够灵活的话。另一名同事 Tara 习惯用 Visual Studio 和 Sublime。究竟哪个才是最佳编辑器?无需为此纠结,我想还是让诸位亲爱的读者来投票吧,不要担心您甚至可以为 butterflies投票。

对投票感兴趣?请拨打 +1 614-569-4019,告诉我们您要为哪款编辑器投票!我们不会存储您的号码,也不记录您的语音,尽管放心投票吧,您可为 Vim 多次投票。想看投票的直播吗? http://best-editor-ever.s3-website-us-east-1.amazonaws.com

现在,我们该如何进行巧妙设计呢?

Amazon Lex

我们先看看 Lex 方面的相关设计吧。创建一个名为 VoteEditor 的自动程序,它具有单个目的 VoteEditor、名为 editorConnectToAgent的单个槽。我们会将编辑器槽填满不同的代码编辑器名称 (或许不会考虑 Emacs)。

AWS Lambda

我们的 Lambda 函数也非常简单。先创建一个Amazon DynamoDB 表来存储投票信息,然后创建帮助程序方法来响应 Lex (build_response),随后再确定逻辑。我们将使用 Python 这种最优秀的语言在最佳编辑器中进行编写。

def lambda_handler(event, context):
    if 'VoteEditor' == event['currentIntent']['name']:
        editor = event['currentIntent']['slots']['editor']
        resp = ddb.update_item(
            Key={"name": editor.lower()},
            UpdateExpression="SET votes = :incr + if_not_exists(votes, :default)",
            ExpressionAttributeValues={":incr": 1, ":default": 0},
            ReturnValues="ALL_NEW"
        )
        msg = "Awesome, now {} has {} votes!".format(
            resp['Attributes']['name'],
            resp['Attributes']['votes'])
        return build_response(msg)
    else:
        return build_response("That intent is not supported yet.")

基本上,如果我们收到某个编辑器的投票,而该编辑器并不存在,那么我们会添加该编辑器并附上 1 次投票。否则会增加该编辑器的得票数 (每次增加 1 票)。非常简单。

我们会告诉 Lex 自动程序使用 Lambda 函数来实现我们的目的。在执行下一步之前,我们可以测试一切是否能在 Lex 控制台中正常运行。

Amazon Connect

接下来就到了有趣的部分了。将 Lex 自动程序连接到 Connect 联系流,然后开始存储这些结果。

在联系流中使用自动程序之前,必须确保 Amazon Connect 实例拥有对它的访问权限。为此,我们需要转到 Amazon Connect 服务控制台,选择实例,然后导航至联系流。其中应该有一个名为“Amazon Lex”的部分,在那里,您可以添加自己的自动程序!

现在 Connect 实例已经知道 Lex 自动程序可供调用,接下来我们就可以创建包含 Lex 自动程序的新联系流。通过熟悉的“获取客户输入”小部件将自动程序添加到流中,但在单击该小部件时,其中会出现一个新的“Amazon Lex”选项卡。

里面提供有诸多选项,但简单来说,我们要添加使用自动程序的目的、要使用的自动程序版本,以及介绍自动程序的简短提示 (可能会提示客户输入信息)。

我们的最终联系流如下所示:

在真实示例中,系统可能会允许客户通过 Lex 自动程序执行许多事务,然后,根据“Error”或“ConnectToAgent”目的,将客户放入他们可与真人对话的队列中。

在此,我想特别指出教 Lex 理解 8kHz 音频的巨大优势及其如此重要的原因。Lex 最初接受训练时使用的语音模型与电话相比占用较大的带宽信道。当您与 Alexa 或 Lex 自动程序对话时,系统通常会以 16kHz 的最低速率对您发送的文本进行采样。通过这种保真度较高的记录,可更加轻松地识别声音差异,如“ess”(/s/) 和“eff”(/f/),音频专家如是告诉我。如果使用 Alexa,则音频流还会来自我们控制的有限的一些设备,因此,我们确切地知道麦克风发出的声音应是什么样子。但是,电话及其记录的音频依赖由人类植入的一些“卑鄙技巧”。人类及其耳朵非常擅长根据情景来辨识质量较差的录音的内容 (要获取此方面的证据,请参阅 NASA 阿波罗录音)。因此,大多数数字电话系统默认设置为使用 8kHz 采样率 (而非更高采样率),从而使带宽和保真度之间达到了一种较好平衡。这种基本采样率的首要问题是,您还必须应对以下事实:大量电话数据已失真 (您现在能听到我说话吗?)。目前市面上有数百家不同制造商提供的数千种不同设备,以及大量不同的软件实施方案和编解码器。那么,您该如何解决这一识别问题呢?

Lex 团队找出了解决此问题的最佳方法,即,扩展他们用来解析语音输入的模型集,以纳入专为 Connect 集成设计的 8kHz 模型。他们在 8kHz 数据集的真实客户服务呼叫中保留了自己的模型和网络,而且与其传统模型相比,单词识别率提高了 60% 以上。检测各个单词的准确率越高,识别目的的准确率也就越高。团队为此付出了巨大努力,这可让众多客户通过 Connect 执行更多操作。

最后再说明一下,Connect 使用完全相同的 PostContent 终端节点,因此,如果您是外部开发人员,也可使用该节点,而无需通过 Connect 来利用 Lex 中的这项 8kHz 功能。

希望大家都能喜欢这项功能,与往常一样,要了解真实细节,请参阅这些文档API 参考指南

Randall

Amazon Lex – 构建对话语音与文本界面

尽管能够“说话”的计算机确实令人振奋,但学会了倾听与回应的计算机无疑更加出色!如果大家曾经使用过Amazon Echo,一定体会过在Alexa服务支持下的交互模式是多么简单、实用和强大。

今天,我们利用与Amazon Alexa相同的深度学习技术(ASR,即自动语音识别;NLU,自然语言理解),为大家带来能够在您的对话应用程序内生效的新服务。大家可以利用Amazon Lex服务构建聊天机器人及其它类型的Web与移动应用程序,其将带来逼真的对话交互能力。您的聊天机器人能够提供信息、支持应用程序、简化工作行为,或者为其它机器人、无人机乃至玩具提供控制机制。

Amazon Lex的设计目标在于帮助大家快速实现上述目标。大家首先可在Lex Console中设计您的对话,即为Lex提供某些示例性短语以构建自然语言模型。在此之后,您即可公布自己的Amazon Lex机器人并利用其处理来自您用户的文本或者语音对话内容。Amazon Lex是一项全托管服务,因此大家无需为其配套基础设施的设置、管理或者规模伸缩而费心。

您的聊天机器人目前可接入Facebook Messenger; 面向Slack与Twilio的整合工作正在进行当中。在AWS方面,Amazon Lex可与AWS Lambda、AWS Mobile Hub以及Amazon CloudWatch进行协作。您也可在代码中使用Amazon DynamoDB、Amazon Cognito以及其它服务。

Amazon Lex允许大家利用AWS Lambda函数以实现聊天机器人的业务逻辑,其中包括接入您的企业应用及数据。配合刚刚公布的、适配于AWS Mobile Hub的SaaS集成能力,大家可以使用自己构建的企业生产力机器人为客户、联系人、领导层,以及存储于其它SaaS应用程序内的企业数据提供对话界面。

综合上述内容,大家现在能够利用全部相关组件来构建全面集成化解决方案。Amazon Lex可由移动应用为起点,并可逐步推进至逻辑实现层面。

Amazon Lex概念

下面我们将对Amazon Lex的各项基本概念加以阐述:

机器人 –  一个包含了所有对话组件的聊天机器人。

意图 –  意图代表使用这个机器人的用户所希望达成的目标(包括购买机票、安排预约或者获取天气预报信息等)。

话语 –  话语指的是以语音或者文本形式表达的短语。每个话语会调用一项意图。“我想预订酒店”或者“我想预订鲜花”就是两条简单的话语。

槽位 – 每个槽位代表着满足用户意图所对应的数据片段。槽位内容拥有具体类别; 差旅机器人一般使用的槽位包括城市、州或者机场。

提示 –  提示表现为问题,用于要求用户提供某些数据(以填充槽位)来表述其意图。

实现 –  实现代表的是能够达成用户意图的业务逻辑。Lex支持利用Lambda函数作为实现手段。

机器人、意图以及槽位具备版本控制机制,因此大家可以在多开发者环境当中,在诸如开发、测试、分段以及生产等流程间设定明确的边界。大家可以为机器人创建多种别称,并将其映射至各组件的特定版本当中。

构建一套机器人

大家可以通过Lex Console定义Lex机器人并为其设置全部组件。作为起步,大家可以首先使用我们提供的样例或者直接创建您理想中的定制化机器人:

您可在下一页面中定义您的话语及其配套槽位:

而后利用以下设置对机器人进行自定义:

您可以通过交互进行机器人测试并随时调整,直到其反应与预期相符:

此后,您可以生成一条回调URL以将其应用在Facebook(或者其它支持平台)当中:

在本届re: Invent大会结束后,我将拿出更多时间对这项服务的相关细节进行深入阐述。

价格与上线时间

Amazon Lex目前已经在美国东部(北弗吉尼亚州)服务区提供预览版本,大家可以马上开始利用其构建自己的对话应用!

在登录之后,您每月可以发出1万条文本请求与5千条语音请求,且首年之内无需支付任何费用。在此之后,每1千条语音请求收费4美元,而每1千条文本请求收费0.75美元。

-Jeff

原文链接:

https://aws.amazon.com/cn/blogs/aws/amazon-lex-build-conversational-voice-text-interfaces/