AI 语音交互开放平台的构建与演进
引言:12月19日,周六,老码农应邀参加了“2020中国软件技术大会”。这是本年度自己参加的第一次线下技术大会,也应该是本年度的最后一次公开分享。在“AI与大数据”论坛,分享了“AI语音交互开放平台的构建与演进”,从系统架构的视角解读AI,语音交互 和开放平台。同时,从研发的视角阐述DuerOS 的技能开放平台,成为“DuerOS的AI 实践”系列文字中的一篇,作为DuerOS Bot Platform 的研发实践的一个年终小结。
在不到一个小时的时间里,要对一个开放平台的构建与设计描述清楚并不是一件容易的事,这是从系统架构的视角来看一个平台。众所周知的是, “脱离业务场景来谈架构,往往都是XXX”,因此,老码农的本分享是从“什么是AI”作为切入点开始的。
讨论的基础是概念的澄清,对于AI 是什么的问题?自己在《老码农眼中的简明AI》和《老码农的AI漫谈》中都有描述,从实用和应用的视角来看,AI是跨领域的技术科学,是计算机科学的一个分支。既然是计算机科学的分支,就可以尝试从计算机的结构体系来解读AI 的应用场景。
AI 作为一种技术手段可以应用在冯诺伊曼体系结构中的所有子系统中,不论是数据流,指令流还是控制流,AI 作为一种能力可以存在与任一多个的节点上。
初步了解到AI 之后, 我们需要澄清一下 什么是智能语音交互——
回顾一下人机交互的历史,从读卡机到键盘,谁还记得在没有硬盘的时代,一张7寸软盘作为Dos系统的启动盘呢?GUI 的兴起,人们有了比键盘更便利的一种交互方式就是鼠标,对便携式设备而言,出现了类似于鼠标的触笔。iphone 手机的推出使得触控式交互成为主流,人机交互更加地便捷。
语音交互的兴起大约可以认为有两个标志性事件,一个是siri开始逐渐进入实用阶段,一个是Alexa 音箱的面市。于是,智能语音交互开始逐渐地来到了我们身边。那么,智能语音交互有哪些特点呢?
然而,语音交互也有自己的局限,例如串行性,声音传播的开放性等等。而且,在智能语音交互中涉及到大量的AI技术。
智能语音交互中的每个AI领域都是具有挑战性的,具体可以参见《揭秘“语音交互”背后的AI硬核黑科技!》。
作为智能语音交互的直观体验,我们可以看看自己身边的AI语音交互产品。
这里以小度系列音箱为例,主要包括了小度智能音箱和小度智能屏设备,图中的产品系列并不是最新,例如新上市的小度智能耳机就没有被包括在内。
既然我们已经拥有了AI的产品和系统,为什么还需要开放平台呢?
任何产品都要以满足用户需求,提升用户体验为第一要务。建议AI 的通用性,存在着个性化,定制化和服务互联互通的局限,而开放平台则是解决这些问题的立足点。
类比是一种常见的概念理解方式,我们PC上windows/linux/MacOS 是计算机分层结构的“蜂腰”, 也就是操作系统是核心的纽带。相应地,在面向人工智能的系统和应用中, 对应于AI的分布式操作系统。
同理,AI 开放平台相当于操作系统之上的SDK及应用框架。
如果举一个具体的例子来阐述AI操作系统和AI开放平台之间关系的话,可以参考一下DuerOS。
DuerOS 是对话式AI操作系统(可以参考《感知人工智能操作系统》),而DBP(DuerOS Bot Platform)则是构建在DuerOS 之上的开放平台, 为了澄清目标服务的差异性,我们把基于DBP 平台的各种智能语音交互应用称之为——技能(skill)。
相对于Android 平台而言 ,技能相当于 App。 从开发的角度看,传统的web应用接受的是来自于键盘/鼠标的输入, 而技能服务接受的是来自设备的语音输入。
从用户的角度来看,AI语音交互应用相当于技能,从开发者角度来看,AI语音交互应用相当于一个bot。
简单的说, 如果把AI产品划分为“理解”和“满足”两个功能的话, AI操作系统是为了更好的理解用户的需求,AI 开放平台则是为了更好地满足用户的需求。在相对充分地描述了北京信息之后, 终于来到了主题——AI开放平台的设计与构建。
回到智能语音交互开放平台与传统PC操作系统相对比,以DuerOS 的开放平台——DBP 为例,来具体地描述 AI语音交互开放平台是如何进行设计和构建的。
DBP 作为一个开放平台,可以分成两个时空维度,一个是基于DuerOS 的技能服务运行时空间,另一个是面向技能生命周期管理的技能构建空间。
具体地, DBP 对内与DuerOS 操作系统相连,对外与技能服务通信,起到了关键纽带的作用。
技能网关直接将DuerOS接收的设备端用户请求转发给开放者开发的技能服务(bot),Bot协议就是一组基于http/https的Restful API。
面向技能,DBP 的Bot 协议细节可以参考《面向接口/协议?看DuerOS的技能开发》。
DBP 中的服务网关包括两种:一是为Bot提供服务的技能服务网关,另一个是为DuerOS操作系统提供服务的内部服务网关。
DBP的技能服务网关支持包括PKI在内的多种安全机制,Bot 可以主动发送请求给技能服务网关调用DuerOS 和 DBP 提供的各种服务,例如技能内的消息推送。
DBP的内部服务网关为DuerOS 操作系统提供了各种技能相关的服务,由于DBP 维护了所有的技能配置信息,对于技能信息查询而言,DBP 提供的服务类似于Windows 里的注册表。
作为一个开放平台, DBP 提供了各种各样的服务来丰富技能的功能,提升用户使用技能时的用户体验。
开放平台的所有服务都可以从DBP的官网(dueros.baidu.com/dbp)获得。
DBP 的运行时空间保证了技能与DuerOS 操作系统的有机结合,可以充分利用DuerOS的理解能力,而DBP 的技能构建空间则实现了完整的技能生命周期管理。
DBP 的技能构建系统包括了创建一个技能所必备的全部工具,例如SDK,服务配置,面向技能的协议,交互模型的创建,技能调试与测试,技能发布,以及线上技能的数据统计等等。
技能的构建包括了技能开放整个流程,主要可以分为6个步骤:
开发者注册
技能的创建
语音交互模型的创建
编写代码并部署bot服务
技能的调试与验证
技能分发布上线
具体的技能创建方式是怎样的呢?为了使开发者快速上手,可以参考《DuerOS的零编程技能实现》。
创建语音交互模型是技能开发与一般web应用开发的主要区别,也是智能语音交互应用的独特性。通过《感知自然语言理解》,了解一些NLU的知识对于技能的开发大有裨益。关于如何创建技能的交互模型可以参考《语音交互设计的一点认知》、《再看语音交互设计》以及《从认知负荷理论看语音交互设计》。
作为一个开放平台,开发者可以使用任何编程语言来实现bot协议,实现了bot协议就可以通过DBP 平台与DuerOS 系统进行通信,进而完成与终端用户之间的语音交互。为了提高开发者的技能开发效率,DBP 平台提高了Bot SDK 以及不同类型的技能创建方式。
关于DBP SDK 的使用可以参考《从Java SDK看DuerOS的技能开发》以及《用JavaScript打造AI应用-从Nodejs SDK 看DuerOS的技能开发》,一般地,可以参考《AI开发者大会中的公开课摘要解读——DuerOS技能开发与CFC编程》,下面是DBP 开放能力的摘要——
调试是技能开发中不可或缺的一个环节,详情可以参考《调试DuerOS的智能语音技能》。DBP 的开发能力日新月异,例如《一个安卓App,如何成为DuerOS 上的技能应用呢?》,再如《智能语音应用开发之DPL2.0高级特性》。
那么,what is the next?DBP 开放平台是如何演进的呢?
DBP 开放平台的演进遵循所谓的“双轮驱动”:一是用户需求驱动的平台演进,一是技术驱动的平台演进。
用户的需求一般来自市场调研或者用户在使用智能语音交互产品过程中的反馈,这是技术产品常规的演进方式,而智能语音交互发展趋势可以看作以另一种需求的体现。
语音交互的演进可以做中长期需求,DBP 开放平台进而作出相应的演进。
我们难以把控的还有就是技术系统自身的演进趋势——
一般地,技术系统有如上九个内在的演进趋势,关于每个趋势的详细描述可以参考《面向全栈的技术管理》。
在这里,给出了DBP 满足技术系统内在趋势的两个例子——
一个是DBP 对系统完备性的支持,关于技能构建系统的API化以及在DBP 的产品路线图上了,具体的发布时间点请关注DBP的官网(dueros.baidu.com/dbp)。
另一个是DuerOS 向超系统化的演进,作为在我们身边的AI语音交互服务,会逐渐形成围绕DuerOS的生态系统。
作为总结, 回顾一下目前DuerOS 及DBP 的功能特性概况——
其中,全双工是一个功能强大的特性,已经登陆DBP 平台, 开放者可以在DBP为技能配置全双工特性了,具体可以参考《聊聊“全双工”》。
最后,如果大家对一个典型的AI开放平台的构建与演进方式有了清晰一点的认识,那就没有浪费大家的时间!
【关联阅读】
https://dueros.baidu.com/dbp
http://xiaodu.baidu.com/saiya/dpl/2.0/practices/featureApply.html