APP下载

基于Android的语音助理软件的分析与设计

2016-11-17青岛理工大学临沂

电子世界 2016年20期

青岛理工大学(临沂) 王 贵

基于Android的语音助理软件的分析与设计

青岛理工大学(临沂) 王 贵

在科学技术发展的推进下,语音识别技术也得到了飞速发展,最近几年被广泛应用于的智能化移动设备,如个人掌上电脑、智能手机等。本文在调研的基础上,首先分析了Android 平台技术,然后对系统功能进行确定,最后进行了整体框架设计,为系统实现和应用奠定了基础。

Android;计算机;语音助理;设计;分析

1 引言

人类在交流沟通过程中及时性最高、最便捷的方式为语音,语音在特殊群体或者场景中具有重要作用,如:残疾等自身问题以及黑暗环境等。语音在科学技术不断发展状态下,俨然成为了人类与机器之间交互的重要连接方式。人类的期望的目标是是实现人类与机器之间通信自然,语音识别技术在未来发展的历程中,以实现该目标为目的。

2 Android 平台技术

目前,Android 平台是市场占有率最高的智能手机操作系统平台。自从 2008年,Android 发行以来,其手机用户量和手机应用市场的应用数量不断增加,并走向更加成熟化的方向发展。Android 平台的特点为开放性、硬件资源量充足、不会受到电信网络的限制、开发环境不被限制。Android 系统的架构由四层构成,分别是:应用程序层、应用程序框架层、系统库运行层及Linux 核心层。

Android 平台上的多种数据处理方式为健康的数据管理提供了便利。 一些临时、轻量级的健康数据,在记录时,遇到中断情况,可以使用 haredPreferences 进行处理;而数据量比较大的健康数据,可以采用文件存储方式;手机 SQLite 数据库能够条理的存储简单数据,为趋势图绘制提供方便;不同应用程序需要共享数据时,只能通过 Content Provider 处理。

3 软件功能分析

本文的语音助理软件主要实现功能包括。

(1)打电话:在手机通讯录中根据用户发出的语音指令,动态化提取与查找所需联系人。用户很大程度上节约了在通讯录中查找联系人的时间,用户拨打电话的需求及时有效的处理。例如:用户发出指令“我要打电话给 X、打电话给 X、帮我给 X 打电话、呼叫 X”等含义相同,语言中包含“联系人姓名”的关键性,系统对该语音信息识别,并在联系人中搜索,最终提取联系人姓名。用户在通讯录中删除或者增加联系人信息时,槽语法自动对相应的槽更新。

(2)发短信:该模块功能实现方式与“打电话”类似,用户发出命令,系统根据该命令对发送信息联系人姓名提取,向编写操作界面跳转。由于该模块无法实现语音输入,因此用户口述的短信内容无法完成编写。系统当前智能将接收短信联系人的信息识别。用户通过语音表达“给 X 发短信、发短信给 X、我要给 X发短信”等,出现“联系人”关键词就可以操作。“发短信”与“打电话”功能实现过程基本相同。

(3)打开应用:智能手机应用已经普及化,用户面对手机说出需要打开的应用程序名称,系统对该指令执行,并打开用户所需的应用程序。

(4)上网导航:该功能完成用户所需网页与网站的打开,包括一些经常使用的搜索引起,分别为搜狗、百度、Google、新浪等,以及在语音中经常使用的综合性网站,共三十多个,必须都可以正常打开。系统会按照网址解析,通过互联网方式将用户网站打开。

(5)音乐搜索:用户说出歌曲名称后,手机本地音乐动态搜索并播放。例如用户说“播放 xx 音乐、我要听 xx 音乐、来一首 xx音乐”等,除此以外,系统在以后的发展中,不断完善,可以时间搜索歌手名播放音乐功能。

(6)信息搜索:基于搜索功能,在百度上搜索用户的各类语音信息,向用户显示当前搜索结果,同时准确性与可靠性较高。

(7)新闻获取。该模块与网页搜索功能基本一致,根据用户提出不同命令,包括“新闻资讯、要看最新新闻、获取新闻信息、阅读新闻”等,系统自动将新闻信息打开。

(8)天气查询:动态的方式将用户提出的某个城市天气情况获取。用户说出命令时根据自己语言习惯进行,语音中只要包含“城市名”、“天气查询”等关键词即可,系统自动对天气情况查询,并向用户反馈该城市最近三天实时天气情况。

4 软件框架设计

笔者梳理了整体设计的层次结构,封装了业务模型,隔离了协议和业务数据,分离了UI 功能和业务功能并使之模块化,将业务工作、业务流程和界面更新独立开来。软件框架结构如图1所示。

如图1所示,软件的界面设计有两层,业务设计有两层。外加一层外部模块。把业务内核独立出来的的目的是让其与UI 的交互逻辑完全隔离,这样能极大的减少耦合。业务层不包含UI,但是功能也是完整的,能够达成命令行也可以独立运行的程度,方便独立测试。另外,一些本来耦合比较大,同时与主要业务关联比较小的模块,如数据采集、模块协议等,分离到外部模块层,通过业务内核提供的一些接口来交换数据。

图1 软件框架设计图

据此可以对开发视图进行设计,开发视图的设计思路是,在逻辑视图的基础上,再将最复杂业务核心层进行了拆分。其中工作流层为UI 提供了业务功能的接口,同时进行业务的整合和调度;业务服务层负责业务的具体逻辑实现以及业务的数据管理;业务基础层包含了业务模型、协议封装、持久层封装、基础框架等工作。同时进行了数据分层,UI数据模型由UI直接使用,同时支持绑定通知;业务数据模型由业务工作使用;存储数据模型包括数据表结构和文件结构;通信协议数据则是由服务器定义的数据模型。

业务层服务的Command 命令是最核心的业务逻辑,每个Command都抽象了一个独立的业务处理。Command 命令基于命令框架实现。命令框架里包括Command 命令、CommandTask 任务以及ComponentTask组合任务。Command 命令表示业务的数据处理的工作,它是异步的命令模式,没有状态机。Command 命令的职责是协议的生成,以及协议完成后的业务处理。CommandTask 任务表示了业务的交换执行工作,它是是有状态的,包括开始、执行、完成、中断等状态。它里面的每个任务都可以接力执行。ComponentTask 组合任务属于部分--整体模式,它可以让多个任务并发工作,当然它本身也是一个任务,可以支持接力执行。通过这种组合可以实现一些复杂的业务流程。

[1]Zeppenfeld,T.,Waibel.A Hybrid Neural Network,Dynamic Programming Word Spotter[C].ICASSP,2015:77-80

[2]Christiansen,R.W.,Rushforth,C.K.Detecting and Locating Key Words in Continuous Speech Using Linear Predictive Coding[C].IEEE. 2014,25(5): 361-367

[3]王辉.语音声学特征分析及命令词识别系统实现[D].乌鲁木齐:新疆大学,2013:19-25

[4]丁玉忠.基于电话语音的语音关键词识别系统研究[D].乌鲁木齐:疆大学硕士论文,2011:11-15

[5]李兆哲.基于 Android 平台的智能语音记账系统的设计与实现[D].中国海洋大学, 2013:24-26.

王贵(1983—),男,山东泰安人,硕士,讲师,研究方向:现代教育技术。