ArchSummit全球架构师峰会全新主题——「智能进阶·架构重塑」>>> 了解详情
写点什么

面向智能设备的语音交互编程语言:VSL 的架构与应用场景

  • 2019-05-24
  • 本文字数:1601 字

    阅读完需:约 5 分钟

面向智能设备的语音交互编程语言:VSL的架构与应用场景

随着智能科技的快速发展,各种各样的智能设备把越来越多的便利与创新功能融入到我们的生活中。大家对于智能设备的交互行为也不再仅仅满足于鼠标和触控操作,“解放双手”的语音交互逐渐成为了大家期望的新交互形式。


如何才能低成本的让语音传达到业务场景中,并实现视图内的交互呢?百度搜索前端团队探索开发出了一套语音交互编程语言——VSL。到底什么是 VSL?它是如何架构设计的?哪些应用场景更适合使用 VSL?我们在 InfoQ 主办的QCon 2019 全球软件开发大会现场采访到了百度前端工程师陈奇。

面向智能设备的编程语言 VSL 到底是什么?

VSL 全称为 Voice Specific Language,是一种为了解决语音交互视图问题而诞生的领域特定语言,通过提供一套接入规范和基础框架,封装语音交互核心功能,使得各场景能快速低成本接入语音交互功能。


目前语音交互主要有两种形式,一种是对话式交互,另一种是视图操作式交互。前文我们介绍到,VSL 是一种领域特定编程语言,这里的“领域”指的就是视图操作式语音交互。


视图操作式语音交互最常见的应用场景就是手机,虽然大多数人使用手机时习惯于触控操作,但是面对一些比较复杂的场景,例如复杂表单的输入和操作,语音可以发挥快速输入、快速选择和多控件组合输入的优势,达到快速操作的目的。除了手机,车载和智能家用设备可能是视图操作式语音交互更契合的场景,这两个场景能够最大幅度发挥语音的优势——解放双手。在车载场景下,由于双手需要放在方向盘上,所以使用语音与智能设备交互是一种更安全的方式;而在家用场景下,语音具有天然优势,在家里用户不仅无需克服语言表达的胆怯心理,同时也不用担心隐私泄露。另外,语音交互还有很多其它使用场景,例如无障碍场景,有些残障人士可能无法使用双手或者外设顺利的进行视图交互,而语音恰好可以解决这样的问题。



VSL 是如何架构设计的呢?陈奇表示,“我们把 VSL 设计成了两个模块,一个是核心模块,一个是扩展模块。核心模块主要是用来实现视图内语音交互的场景,包括 DSL Parser、Actions、Action Manager 等。而扩展模块主要体现了 VSL 的进化过程,包括 App 端能力、DuerOS 端能力等。扩展模块的出现使得 VSL 成为了一个在交互场景中适配性相对较强的产品框架。”

VSL 的具体应用场景

2017 年 5 月,陈奇所在的团队接到了一个用视图控制音频的需求。刚开始他们采用了 JavaScript 的方式去实现,结果发现这种实现方式不仅开发和维护成本高、可复用性差,而且多场景下交互效果不一致,没有形成规范。2018 年 1 月,经过长时间的踩坑,陈奇及团队成员开始考虑一个全新的解决方案。2018 年 4 月,VSL 作为一种解决方案开始应用于手机上的某些场景,例如快递查询、飞机票查询等。


据陈奇介绍,目前 VSL 主要是在百度内部应用,应用场景主要有三大类,第一是百度搜索结果,例如快递查询、机票查询、房贷计算器等;第二是百度产品,例如百度作业模式等;第三是搭载 DuerOS 的智能设备,例如在小度智能音箱中语音视图交互场景,覆盖率达 90%。


接下来,我们以机票查询为例详细讲讲 VSL 是如何应用的?



从上图中我们可以看到,整个机票查询的界面有 5 个控件,分别是单程 Or 往返、出发城市、到达城市、出发日期和立即查询。如果使用最原始的方式给这些控件来编写程序的话,那么代码量得有数百行。而采用 VSL 之后,我们只需要对控件进行数据声明,代码量出现了明显减少,大概只有十几行。


在机票查询场景下,我们主要要做的工作就是对用户话术进行管理。用户在话术表达之后发送到后端服务器,在意图服务返回需求信息之前,需要主动对视图中的控件进行填充,例如该控件是 Input 还是 Click。


在谈到 VSL 未来发展时,陈奇表示,“VSL 现在的主战场还是在百度,但是未来我们有计划将 VSL 开放出去,为更多场景提供语音交互支持。”

采访嘉宾介绍:

陈奇,毕业于西安电子科技大学,现任百度前端高级工程师,主要负责百度搜索输出 DuerOS 智能设备以及语音交互编程语言 VSL。


2019-05-24 14:526204
用户头像

发布了 497 篇内容, 共 305.3 次阅读, 收获喜欢 1905 次。

关注

评论

发布
暂无评论
发现更多内容

为什么很多事情说起来容易做起来难

Justin

学习 心理学 成长 心态 28天写作

区块链数字货币交易所系统开发|区块链数字货币交易所软件APP开发

系统开发

动听百年:音乐播放器发展沉浮史

艾小仙

互联网

理解领域驱动设计

编程 领域驱动设计

大数据知识专栏 - Hadoop的资源管理 Yarn介绍

小马哥

大数据 hadoop YARN 七日更

Soul 源码阅读 03|WebSocket 同步数据分析

哼干嘛

Java 源码分析 Soul网关

数字资产钱包系统软件开发|数字资产钱包APP开发

系统开发

交易所软件系统开发|交易所APP开发

系统开发

无代码、Excel与Airtable

lidaobing

低代码 Excel 无代码开发 28天写作 Airtable

区块链量化交易怎么做?

v16629866266

读任正非“星光不问赶路人”有感

JiangX

华为 战略 28天写作 任正非

GoF23 中的对象关系模式!

鲁米

方法论 设计模式 构建模型

使用 Docker 部署 RabbitMQ 没有日志?添加这两条配置,轻松搞定

AlwaysBeta

Docker RabbitMQ 消息队列 消息中间件

迁移到 Go Modules

Rayjun

Module Go 语言

悟透前端 | 参悟Javascript中的call和apply

devpoint

JavaScript 大前端 call apply

如何管理过程质量?新手管理者的陷阱

一笑

管理 管理者 28天写作 质量保证

什么是上瘾?

石云升

28天写作 上瘾

开放式API安全防护的七大原则

架构精进之路

API 七日更 28天写作

设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

秦怀杂货店

设计模式 工厂模式 23种设计模式

十个手指头弹钢琴、高水准欣赏探讨优雅益智的古典音乐技术 数学不好很难进行

一个系统小BUG修复投产居然花了3个小时来处理(下)

罗小龙

28天写作 投产事故 解决思路

币币交易系统APP开发|币币交易软件开发

系统开发

我是如何学习编程的?

熊斌

学习方法 个人成长 编程之路 28天写作

提问也是一门学问

xcbeyond

程序人生 方法论 技巧 28天写作

Mybatis【14】-- Mybatis如何实现一对多查询?

秦怀杂货店

数据库 mybatis

[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异

Changing Lin

android JetPack

你有多久没去看海了呢「幻想短篇 15/28」

道伟

28天写作

阿里,字节,腾讯,面试题都涵盖了,这一份Java面试文档也太强了

数据库 程序员 面试

项目管理系列(8)-从0到1搭建PMO(一)

Ian哥

28天写作

【CSS】红砖背景

德育处主任

css3 大前端 html/css CSS小技巧 28天写作

一篇让你彻底了解http请求报文和响应报文的结构

Java架构师迁哥

面向智能设备的语音交互编程语言:VSL的架构与应用场景_编程语言_田晓旭_InfoQ精选文章