美文网首页Android知识Android开发手机移动程序开发
Actions on Google 以及 google 语音应用

Actions on Google 以及 google 语音应用

作者: 王岩_shang | 来源:发表于2017-02-06 14:26 被阅读1276次

    设计对话,收集用户语料,机器学习到人工智能的转化

    Actions on Google

    Google发布了Actions on Google项目,使开发者能够构建基于Google Assistant的语音交互应用,并与Google Home设备进行集成。

    Google的高级开发工程师Wayne Piekarsk将Actions on Google平台描述为一种集成方式:
    开发者可以通过它将自己的服务与Google Assistant集成到一起。

    该集成的实现方式是:
    会话行为(Conversation Action)允许开发者通过一个双向窗口满足用户的请求。当用户请求一个Action的时候,Google Assistant就会处理该请求,决定由哪个Action处理该请求最好,并调用相关的会话行为。调用之后,开发者开发的会话行为就能掌控剩下的所有事情,包括如何欢迎用户,如何满足用户的请求,以及如何结束会话。

    为了阐述Actions on Google的功能,Google使用了一个私人厨师的示例应用,该应用允许最终用户通过Google Home设备与食谱查找服务交互。首先,最终用户需要告诉该应用自己现在的情绪以及所拥有的佐料,然后会话应用会解析用户的情绪,理解可用的佐料有哪些,之后会根据用户的情绪和食欲为其提供食谱。

    编写这种类型的应用是非常具有挑战性的,因为很难准确地提取Action的意义。
    现在即使利用AI技术,将“告诉我附近便宜的Indian餐馆在哪里”这样的命令/指令转换成一组可执行的命令集也不是一件容易的任务。我们首先需要理解用户想要寻找“Indian”风味的餐馆,然后需要知道用户心中的“便宜”到底指什么价位。
    Google开发会话行为的目的就是为了应对这些上下文敏感的挑战,以帮助开发者构建会话App。

    会话行为由三个主要的组件组成,包括: 
    1. 调用触发器(Invocation Triggers)定义了用户如何调用和发现Action。一旦被触发,Action就会展开一个由对话框定义的会话与用户交互。 
    2. 对话框(Dialogs )定义了用户如何与Action进行交谈,同时它也是Action的用户界面。它们依靠实现代码推动会话的前行。 
    3. 实现(Fulfillment)是处理用户输入并返回响应的代码,它是一个REST服务。实现通常还包含一些执行具体行为的逻辑,例如检索菜谱或者新闻并大声朗读。 
    
    调用会话行为的方式有三种: 
    1. 会话API,它提供了与Google Assistant通信所必须使用的请求和响应的格式。 
    2. Actions SDK,包含一个NodeJS客户端类库,行为包(Action Package)定义,CLI和Web模拟器。 
    3. 包含API.AI在内的其他工具。 (API.AI是Google最近收购的一家公司,开发者可以通过它来构建会话接口。)
    
    关联的公司

    Google负责工程的副总裁Scott Huffman在2016年9月曾宣称: 超过60,000名开发者正在使用API.AI在Slack、Facebook Messenger和Kik等环境中构建会话式体验。在Actions on Google平台上,开发者可以将API.AI接入自己的会话界面上以减少会话API通常所需要的文字转录量。
    在Actions on Google平台上使用API.AI的一些好处: API.AI为会话接口的创建提供了一个直观的图形用户界面,同时它还会处理会话状态的管理和表单的填充等繁重的任务。
    为了处理一个会话,开发者可以使用控制台来定义Intents。在Google私人厨师食谱的示例中,Intents包括定义需要从用户那里获取的信息,例如材料、温度、菜式和烹饪时间。
    接下来,开发者需要提供一些例句。API.AI会使用这些例句训练机器学习算法,以便于处理其他来自于用户的句子。开发者不需要为API.AI编写正则表达式来解析其他的句子。

    开发者可以人工地为每个信息指定可接受的值。一旦提供了这些内容,API.AI就能使用这些信息从用户所说的句子中提取语义。例如,开发者可以定义一组映射到某种蛋白质的实体。如果私人厨师App想要在食谱中包含蛋白质,那么可以从开发者定义的一组同义词(例如牛肉、羊肉、豆腐和鸡肉等)中选取。
    当用户与应用通信的时候,用户可以提供自然信息,包括一些无序的、只言片语的信息,如果应用没有接收到完整的信息,或者接受到的信息不明确,那么它会通过一些跟进的问题来获取信息。
    开发者还可以将Intents连接到后端的webhook,这样就可以通过连接到IFTTT、Zapier或者Azure Logic Apps等第三方平台上实现扩展。当一个webhook被调用的时候,所有适合的数据都会以JSON字符串的方式传送。
    开发者在控制台上配置好了自己的Intents和实体之后,他们就可以在API.AI的Web模拟器上启动一个测试,在将其提供给所有的Google Home用户之前首先通过私人的Google Home进行预览。

    Api.ai一个非常强大的功能是可以定义用户对话,支持模式识别,发布新的服务时,只需要在api.ai上创建相应的服务,然后将其部署到Google Actions API 上,然后变可以在google ssistant上体验自定义的语义服务。

    在使用api.ai 自定义对话应用时,有几个概念需要解释下:
    用户需要定义agents (举例购物 shopping代理),在这个agent下定义entity实物(举例书包,衣服之类的实物),对应于实物需要有intent 意图。
    
    Agent:描述为用于应用的NLU(自然语言理解)模块。 它们的目的是将自然用户语言转换为可操作的数据
    Intent:意图表示用户说什么和软件应该采取什么操作之间的映射
    Entity : 表示概念,并且作为从自然语言输入中提取参数值的强大工具。在特定代理中使用的实体将取决于作为代理功能的结果而预期返回的参数值。  
    Context : 上下文语境
    
    和 Google Facts 交互流程示意图

    Actions on Google 现状及策略

    Actions on Google 依托于Google assistant , 提供了会话服务,通过语音服务有时候我们不只是需要回答,也需要“动作”,现阶段google自家的官方应用提供了相应 的 “动作”,但是在对外的开发文档或者指南中并未提及。

    另外,对于开发者开发的各种各样的action,google介绍说并不会提供类似于 actions 的商店,而是由google作为平台搭建者介入审核,但是现在的审核制度还没有公布。我们是通过在google assistant 使用关键字去调起我们提供的action的,所以对于关键字如何被审核,这个问题还要等google 的答复。

    Google Search 提供的语音交互方式

    这是基于android的开发支持语音交互的app的谷歌的一次尝试,通过Google Search 直接语音控制我们开发的app,分为两部分。

    1.system voice action

    顾名思义,指的是语音操作系统命令,支持的命令类型包括:Alarm actions,Communication actions,Fitness actions,Local actions,Media actions等,具体链接如下:系统命令列表

    集成的话,大致三个步骤:

    1. 在 Minestfest 中的 actvity标签下 写 intent-filter(只能使用google 预先定义好的,才会被识别并响应)
    2. 处理获取到的intent
    3. 响应并更新应用状态
    

    2.Voice interaction
    这部分,区别于系统 action ,用户可以自定义对话并进行响应。

    主要的交互通过VoiceInteractor (api 23后加入)和VoiceInteractionService (api 21 后加入)来实现。

    Google 提供的会话接口包,需要完成三部分工作:
    1.给用户的提示语
    2.期望获取到的答案 
    3.对于回答的回调处理事务
    
    交互相关的工作全部交由google处理
    

    具体示例代码,以语音拍照为例子:

    private void startVoiceTrigger() {
        Log.d(TAG, "startVoiceTrigger: ");
        Option option = new Option("cheese", 1);
        option.addSynonym("ready");
        option.addSynonym("go");
        option.addSynonym("take it");
        option.addSynonym("ok");
    
        VoiceInteractor.Prompt prompt = new VoiceInteractor.Prompt("Say Cheese");
        getActivity().getVoiceInteractor()
            .submitRequest(new PickOptionRequest(prompt, new Option[]{option}, null) {
                @Override
                public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) {
                    if (finished && selections.length == 1) {
                        Message message = Message.obtain();
                        message.obj = result;
                        takePicture();
                    } else {
                        getActivity().finish();
                        tearDown();
                    }
                }
                @Override
                public void onCancel() {
                    getActivity().finish();
                    tearDown();
                }
            });
    }
    

    结语

    Actions on Google 是 google 16年底发布的语音会话集成方式,可以提供给各类平台使用,现在还处于建设阶段,现阶段还无法实现语音购物等这些实际的功能,这些都是已广泛的深入的合作为基础的,未来的目标则是为各种硬件做服务,让硬件能够“听懂”人话,这是google的目标之一。

    Google Search 提供的语音交互方式,是在 15年提出的,满足了android平台一些语音交互的需求,但总的来说,不够智能,需要预设答案 。但是相信未来会和actions on google 结合起来,变的更加好用。

    网址链接

    api.ai 构建自己的会话式应用

    如何在google assistant 上 发布自定义的action

    Google Search via Voice Actions

    App Index Api 介绍及集成

    如何开发一款语音交互应用

    相关文章

      网友评论

        本文标题:Actions on Google 以及 google 语音应用

        本文链接:https://www.haomeiwen.com/subject/ckajittx.html