12月15日,由腾讯云主办的首届“腾讯腾讯云开发者社区开发者大会”在北京举行。本届大会以“新趋势•新技术•新应用”为主题,汇聚了超40位技术专家,共同探索人工智能、大数据、物联网、小程序、运维开发等热门技术的最新发展成果,吸引超过1000名开发者的参与。以下是小程序分会场的演讲内容,稍作整理,分享给大家。
插件的诞生为微信小程序注入新的活力,补充了小程序生态中重要的一环。本次演讲,将通过分享微信同声传译插件案例,细数插件为服务商、开发者、商家解决了哪些问题,带来了什么便利。
我今天跟大家分享一下我们插件的功能。第一个场景是口语跟读,在一般小程序中可能会遇到这种情况,要识别用户读的中英文与正确的文本比对达到英文口语程度并且加以提升;第二个场景是新闻播报,正常来说一般的新闻都以文本的形式展示,但是如果在小程序以文本、语音的形式播报给用户听那么就可以出现这种场景;第三个是中英翻译,这个在对外交流以及教育中经常用到。
我们开发实现这三种场景的小程序的时候,会遇到三个功能,语音识别将用户音频转成文字,语音合成将已有的文本转成播放的音频,文本翻译这个是比较常见的两种语言之间文本进行转换的过程。在我们碰到这种情况的时候,如果要开发这个能力会涉及到什么问题?我们先来看一下。
开发能力限制,对于一些中小型商家或者个人开发者而言需要完整的开发一套比较复杂的一些功能的话,其实对他们来说比较困难,我们以开发一套会员卡的服务来说,会员卡服务至少需要支持开卡、对话、核销以及配合相关商家进行一个节日活动的这么一个功能。那么这些功能经常会限制技术能力,很多商家可能就因为这个问题会比较难去开发出这么一套东西出来,这是我们碰到第一个问题。
第二个问题,开发周期限制。这也是令开发者非常头疼的问题,当我们需要快速去搭建一个demo,或者应对节日需要,对小程序已有的功能进行快速开发迭代,我们现有的能力、资源可能没有办法自己从头到尾完成这个过程。
第三个问题,许可资质限制,如果大家有接触过相关业务小程序开发的话,应该知道小程序平台为自身业务合规以及合法,会要求小程序开发提供相应的许可资质。例如电商小程序中我希望能够用视频的形式来播放商品的使用教程,小程序希望你提供视频许可证。如果我们没有这个许可证是不是没有办法实现呢?其实不是,我们后面可以再说这个问题。
当小程序开发者遇到了这些问题的时候,到底有什么解决方案呢?小程序平台它提供了一个可行的解决方案插件。简单来说插件是可以直接是用在小程序中,直接使用在功能模块,这是一个简介,我们来看一下小程序插件可以是什么。
第一类,前端UI组件。
这是一个程序选择的组件,在很多表单程序中表单填写会遇到这个问题,可能需要填写一个程序,我们自己开发是不是有这个必要的呢?如果我们赶时间有一个成熟的插件提供给我们使用的话,为了减少开发量可以直接使用,这是第一类前端UI组件。
第二类,功能服务模块。
这里举两个例子,面对面翻译实际上是微信同声传译插件的一个使用例子,使用提供的识别功能达到翻译识别的功能,这是一个独立的功能服务模块。还有腾讯围棋中,大家看到底部是有一个聊天工具,腾讯围棋是带有社交属性的,一些观看围棋的用户可以在里面进行及时交流,这也是微信推出的聊天室插件,这是属于功能服务模块。
第三类,线上线下完整服务。
举个例子,如果一个经典希望支持下单、服务以及验票入场的情况,它已经存在现有的插件,这个程序只需要提供相应的文本信息,就可以实现我们购买的服务。
除了三大类以外,我下面还可以介绍一些比较常见的一个插件。比如说第一个日期选择框,类似于城市选择,这都是比较常规的前端的UI组件;餐饮服务,现在很多商家都会说想在小程序里面做一个餐饮类的,希望在里面进行购买以及支付、评价所有的整个功能,使用现有餐饮服务类的插件也可以帮助大家实现或者只是单独的支付。对于商家来说的话,理解支付流程是比较麻烦的,下单支付如果使用现有的插件的话不需要关心这个问题;地图,使用地图插件的话也可以进行导航的一个功能。
通过我们刚才对这些插件的介绍,我们可以知道插件的优势是什么,UI组件并不需要重复开发,对于一般开发者接触不到或者没有必要理解的细节可以使用现有的功能服务模块降低技术门槛,最终实现服务共享。
刚才只是介绍了插件的具体的介绍,我们看看微信同声传译是怎么做到的。
微信同声传译是由微信智聆语音团队、微信翻译和公众平台联合推出的同传开放接口,在插件提出以前,微信已经思考如何将自身研究出来的语音识别、文本翻译、语音合成等能力开放给更多的用户,而不仅仅局限在微信APP自身。刚开始我们尝试把它做成一个翻译的小程序,后面发现效果不好,原因在哪?因为对于我们而言翻译类小程序的使用场景很少,只有在国外旅游或者其他一些比较小众的地方出现用户使用,所以导致使用这些服务的用户会很少。
插件概念提出之后,给我们提供了一个新的思路,就是我们只做功能的提供者,将这些能力赋予给开发者,让它决定到底是用在哪上面,我们只需要专注做自身的服务,这些能力就是我分享之初提到的分享需求场景。
语音识别在刚才所说的口语跟读中实际上可以实时识别用户所读出的一个中英文,将其转化成我们可以看见的文本文字。语音合成将新闻播报中新闻的文本可以转换成音频播放给用户。文本翻译,也就是中英文翻译中出现的对外教育以及英文学习过程中是需要中英文翻译的功能。
我们提供了这些功能,是不是只能做上面三个例子呢?其实还有,我可以再详细介绍一下。对于一些记录类,比如说日记、游记,我们通常是以文本以及图片的形式来进行记录,如果采用语音识别的话,我们可以直接让用户通过说话的方式就将其转换成文本保存起来,降低用户操作的难度,或者说能够优化它的体验。
同样属于记录类的,还有可能是学习笔记类的小程序,我们将英文论文或者短句粘贴到小程序上并且保存下来的时候,我们是否可以用插件提供的文本翻译的功能来转化成中文帮助理解呢?
第二个是快递,这个我单独拿出来说的原因是因为我们使用小程序插件比较有趣的一个点的时候,在寄快递的小程序里面使用我们的功能帮助用户输入地址、电话号码这些信息,这是在做插件之前是没有想到的。
还有AI类,比如说因为我之前有接触过很多聊天类的小程序,有聊天机器人,他们通常以文本的形式,比如说今天星期几,然后小程序机器人就告诉你今天星期六。如果使用我们插件语音识别的话可以让机器人理解你说的音频,转化成他理解的文本。同样当他需要回复你今天星期六的时候,同样可以使用微信插件里面提供的语音合成,来转化成音频,来实现你和机器人对话的这么一个过程。
资讯类,比如说一些新闻或者论文、小说,我希望能够将其转换成中文或者英文的一个信息,或者对于这个文本信息有一个播放需求,同样可以通过语音将其转换成音频信息。
我们介绍它的使用场景以后我们来看一看这个插件的优点和亮点有哪些。对于挑选,我们第一考虑的是功能,刚才说提到三种功能,如果从英文语音开始的话,英文语音到英文文本是语音识别的过程,英文文本到中文文本是两种语言翻译的过程,中文文本到中文语音是语音合成的功能。微信插件提供三个功能是有一个承接的关系的,通过三种功能小程序开发者可以在任意两者之间都能达到功能互达。
我们再举一个例子,当我们用小程序中识别语音指令来达到控制智能家电的过程中,我们通过语音识别能力将用户所说的比如说“开机”,或者“把空调调多少度”,就可以单纯使用一个语音识别功能再嵌入原本的指令系统中就可以实现通过语音来进行一个控制。
如果这个还不够,单纯只是把音频转成文本还不够酷,我想把它再翻译一下。在刚才我们提到的基础上英文文本转换成中文再使用一个翻译就行了,这是功能。
当我们考核一个小程序插件是否适用于我们的时候,第二点我们考虑的是服务的稳定性。因为只有你的服务稳定下来,能够持续在小程序里面正常的工作,这才是满足功能前提条件之后我们最关注的一个点。
微信同声传译插件所提供的是内部能力的一次对外开放尝试,他提供的语音识别以及文本翻译功能是微信APP聊天窗口自身的功能,语音输入就是将你说的一个话能够将它转化成直接发送的文本信息。也正是因为这是微信内部对外开放的尝试,所以这些我们真正使用到的一个后台服务实际上是由微信智聆团队和微信翻译团队长期升级维护的的。
刚才说我们的服务是经过很多考验是可以被使用的,在功能跟服务稳定性都OK的情况下,开发者直接面对的是如何使用这个插件,也就是如何使用我们提供的功能。
相比于文本翻译和语音合成,语音识别其实它的过程会相对复杂一些,因为语音识别是希望用户在说话的同时我们已经把它实时说话的音频信息传到识别服务,并且返回到当前的音频信息。我们参考了小程序原升级中的一个接口,简单看一下代码,这样小程序开发者不需要再额外理解一套专属于微信同声传译插件语音识别的一个接口,这样可以帮助小程序的开发者来快速的接入使用微信同声传译插件。
第二为了进一步帮助小程序开发者使用插件,我们将自己做的一个小程序也使用了微信同声传译插件的面对面翻译小程序,将它开源出来,然后让小程序开发者直接阅读它的使用代码来参考,帮助在自己的小程序中实现这么一个插件接入的过程。
当这些是我们提到的功能多样性、服务稳定性、接口应用型这是同声传译插件所展现出来的特性,当我们需要寻找符合我们自身需求的插件的时候我们如何找呢?
实际上在微信开放者社区中有专门一栏插件,小程序开发者可以在这里输入相应的功能,比如说城市选择、日历、日期这些信息可以搜索出相应的插件。
在插件详情中我们可以看到这个小程序插件所提供的能力,都会在跟我们说明,如果希望能够进一步看这个插件是不是每个接口都符合我的预期呢?这里也同样提供了一个插件的使用文档,在使用文档大家可以通过阅读文档来看这个插件是不是我要找的。
这是一个插件搜索的过程,真正接入使用是需要在公众平台中进行相应的设置,在设置第三方服务中搜索添加插件,将同声传译插件搜索出来进行添加绑定,在这一步过程中实际上已经实现了我们自己开发的小程序跟某个插件的关联。
最后在小程序开发者工具中引入插件的代码包,pages,可以引入多个插件,这就是完整的一套搜索和使用插件的过程。
因为在插件出现之前,实际上我们小程序开发者有一个比较痛苦的过程是类似在黑暗的房间里面找路,因为所有的路都需要自己做,甚至通过各种方式接入找到自己的功能。插件的提出是让更多的小程序开发者参与小程序的建设,使得服务商能够在小程序插件中提供自己的功能服务达到变现的目的,小程序开发者使用插件的功能快速搭建自己的小程序,所以使得服务商能够在专注他们的功能服务提供,而小程序开发者能够专注他们的核心业务,进而使得越来越多的小程序插件能够不断地沉淀下来,让更多的一些更好玩,更好用的小程序出现在大家的眼前。
Q:您好,如果插件也能够像小程序这样授权下去,给开发者不同的插件会不会更好一点?
A:实际上不仅是我们自己插件的开发,而且小程序的开发者都可以来开发插件,你可以将自身有意思的服务开放出来,然后开放给所有的使用者,不仅仅某个公司来做一个插件,是所有的小程序开发者都可以开发插件,这样会使得小程序碰撞出更多的可能。
Q:老师你好,我在用同声传译小程序的时候,我去上英语外交课,有时候是现场,有时候在线,老师说一段语音我想把它录下来,当时时间比较紧张,我录一段音频导入进去,能发进去吗?
A:你刚提到在小程序有这样一个对话的过程吗?
Q:我先把我的手机放在笔记本的旁边,我用笔记本外放,外交老师说英语的时候我正好声音可以录进手机,这时候马上打出来翻译的内容。有时候我不能分心我得听老师说,我用录音笔录下来之后,这段音频可能是MP3文件。我事后能不能导入分享给我朋友。
A:你这种场景实际上是这一个音频数据不是在微信产生的。
Q:我希望在微信产生但是不知道怎么做。
A:刚刚常青老师说到对于微信通话是不会保存音频信息以及语音信息的,所以没有办法说在过程中没有办法保存下来。您刚才说的场景,实际上你通过录音产生的音频文件没有必要非要通过微信小程序帮助你转化。你本身已经有mp3文件了,可能腾讯云也有将其转化的过程。小程序插件目的是在小程序中使用,你刚才提到的场景实际上是录音产生的而不是小程序产生的,而是其他场景产生的。