黄天天+刘波
摘 要:针对湖南农业物联网基础平台建设过程中农户需要与物联网设备进行信息交互的需求,设计开发了集日历、日程提醒、记事、天气预报、日期计算和语音识别功能于一体的手机秘书系统。并在研究Android系统提供的音频、振动等开发接口和SQLite数据库的基础上,综合集成了捷通华声灵云提供的语法识别SDK和百度开放的天气服务接口。该系统操作简捷,能通过语音控制帮助用户更好地完成各项日程任务,使生活更加智能化与规范化。
关键词:语音识别;天气信息;事务提醒;农业物联网
中图分类号:TP393 文献标识码:A 文章编号:2095-1302(2015)09-00-04
0 引 言
随着我国政府对粮食安全的重视,农村信息化建设在广大农村地区的逐步推广和人们生活水平的提高,手机在农村已成为日常生活必须品,智能手机在农村的份额也逐步扩大[1]。一方面,随着科技部农业物联网项目在湖南落地生根,农户在使用物联网设备进行信息交互时,常需要查看相应农历、节气、天气等信息,同时需要设置日程提醒谨防遗忘重要工作,同时,使用一种简洁的软件已经必不可少;另一方面,现代生活节奏加快,人们之间的交流多种多样,语音识别技术应运而生。随着科学技术水平的不断提高,语音识别技术也得到了巨大的发展且前景广阔。本系统在农业物联网设备交互的基础上,将日历、日程提醒、查看天气以及语音识别功能集于一体,并且附加记事和日期计算功能,能很好地满足农户在农业物联网设备使用过程中的工作和生活需求,为广大农户提供便利。
为了适应农村地区对信息化的渴求,促进农村经济的进一步发展,2011年至2012年国家科技部开展了农村农业信息化关键技术集成与示范 (2011BAD21B00)与农村物联网综合信息服务科技工程 (2012BAD35B00) 课题研究,湖南省科技厅组织部分高校与科研部门承担了相应科研任务,并很好地进行校企合作,成功搭建农业物联网基础平台,而且安卓产品能与平台进行信息交互与设备控制[2]。为了辅助广大农民更加便捷的管理农业活动,了解农历节气和天气信息,记录和提醒事务,作者设计和开发了集日历、日程提醒,记事,天气预报和日期计算于一体的手机秘书系统。
另一方面,随着人机交互的广泛应用,交流方法不再限于文本输入与按钮选择,语音技术获得了较快发展。作为语音技术中的关键技术之一,语音识别(Speech Recognition,SR)就是让机器通过识别和理解过程把人类的语音信号转变为相应的文本或命令[3]。随着语音识别技术的日益成熟,语音识别技术发展前景更加广阔,手机秘书系统综合运用捷通华声灵云提供的语法识别SDK,整合了语音识别功能,使用户能通过语音操控软件,提供更加简捷的操作方式。
1 设计思路
本系统是以农业物联网基础平台建设为背景,采用Eclipse作为开发工具,利用SQLite数据库作为存储载体,应用百度的LBS开放平台的车联网API所提供的免费天气查询接口,以XML方式获取指定城市天气预报信息[4],利用捷通华声灵云开发者社区提供的灵云语音识别能力[5]来完成本地语法识别以及云端自由说识别,同时利用Android中的MediaPlayer和AudioManager接口实现响铃和提示,并利用 Vibrator接口实现振动功能。研究了Android平台中Activity、Service、Broadcast Receiver、Content Provider这四大组件以及SQLite数据库[6]和Android平台的程序运行机制[7],最后开发出包括日历、日程提醒、记事、天气、日期计算以及语音识别6个功能模块的手机秘书系统。
2 系统实现
2.1 框架结构
手机秘书系统的框架结构如图1所示。用户可通过用户界面发送请求到后台服务,后台服务再将处理过的信息返回用户界面,以供用户查看。
从图1可知,天气模块后台需要通过访问百度天气信息平台获取天气信息数据,语音识别模块后台需要在灵云信息平台上登陆灵云账号,并获取登陆信息后就能正常使用语音识别功能,云端语音识别功能则通过与灵云信息平台进行交互获取识别结果,后台进行处理然后传递给用户界面;日程提醒广播接收器继承的是Broadcast Receiver类,当闹铃触发时会接收到Alarm Manager Service服务程序发出的广播,然后执行定义的操作,传递参数并跳转到日程提醒界面。
图1 手机秘书系统框架结构图
用户界面管理日程和记事信息都是通过日程和记事模块的后台服务传递信息和操作请求给数据库适配器,通过适配器向SQLite数据库中读写日程和记事数据,读取信息后则由数据库适配器直接向用户界面传递信息进行显示。
2.2 功能分析
通过对调研材料的分析,该手机秘书系统除能正常与农业物联网设备进行交互外,还需提供日历、日程、记事、天气、计算和语音六大功能。
日历部分主要是查看公历、阴历、节日、日程安排等日历信息,包含翻月以及点击日期查看当前日期的操作;日程提醒和记事部分主要是查看、添加、修改、删除日程和记事信息,添加日程提醒功能的UML时序图如图2所示。天气部分可以联网查看指定城市当天和后三天的天气预报,用户可以根据需要修改城市以及刷新天气,当手机没有联网或获取数据失败时,系统给用户适当的提示,查看天气的UML时序图如图3所示。日期计算部分包括计算日期间隔,日期推算和日期转换功能。
语音识别部分包括本地语法识别以及云端自由说识别两个部分,本地识别应用在整个软件内的大部分操作,不需要连接网络仍然可以使用,云端识别需要连接网络才能使用,应用在添加日程和记事时输入内容的操作,方便用户的输入,另外用户可以查看语音识别操作说明进行语音操作,本地语音识别的UML时序图如图4所示。
2.3 系统实现
2.3.1 数据库设计
本系统采用SQLite数据库,并将其命名为Secretary.db。该数据库用到了2个数据表,分别是Schedule和Note。
日程信息表Schedule主要记录日程的时间、地点、事件内容、是否提醒、提醒时是否振动、是否响铃以及提醒提前时间。其定义如表1所列。
表1 Schedule数据库表结构属性 数据类型 描述
sid integer 自动增加的主键
event text 日程的事件内容
time varchar(30) 日程的时间
address varchar(20) 日程的地点
remind integer 是否提醒日程,1为提醒,0为不提醒
remindtime integer 提醒时间:10,20,30表示提前10分钟,20分钟,30分钟
vibration integer 提醒时是否振动
ring integer 提醒时是否响铃
记事信息表主要保存记事的时间,记事的标题和记事的内容。其结构如表2所列。
图4 本地语音识别的时序图
表2 Note数据库表结构
属性 数据类型 描述
nid integer 自动增加的主键
time varchar(30) 添加记事的时间
title varchar(20) 记事的标题
content text 记事的内容
2.3.2 程序模块设计
可将整个应用程序划分为6个模块,分别是日历模块、日程模块、记事模块、天气模块、日期计算模块以及语音识别模块,其模块结构图如图5所示。
图5 手机秘书系统的模块结构图
2.3.3 主要模块实现
系统的关键代码实现在天气模块和语音识别模块,具体实现过程如下:
(1)天气模块主要通过解析本地XML格式的城市地区数据供用户选择,调用天气服务类BaiduWeather.java获取该城市天气信息,最后显示出来。核心代码在百度天气服务类BaiduWeather.java文件中,在与百度天气平台通信前首先通过checkNetworkAvailable()方法检测网络是否连接,然后调用GetWeather()来与百度天气平台进行通信,获取当前天气数据信息,调用readWeatherStringXml()方法解析返回的XML数据,并存储到List中,最后通过天气界面显示出来。
(2)语音识别模块主要包括本地语法识别功能和云端自由说识别功能,该模块是系统的核心模块。本地语法识别功能的实现首先利用voiceInit()方法登陆灵云账号和完成灵云语音识别系统初始化,initAsr()方法配置初始化参数,如在灵云平台上申请的应用程序序号、能力密钥、语法规则文件路径等,jumpControl()和setJumpParam()方法实现语音识别后对不同的结果执行不同操作的控制,并处理识别结果,从中获取必要信息作为参数向各具体执行界面传递,最后正确执行。在添加日程和添加记事时的语音识别实现的是云端自由说识别功能,本地语法识别和云端自由说识别功能在代码实现方面的区别在于识别的语法规则的设定不同,需要运行的灵云能力capKey变量等的不同,其代码如下:
// 云端自由说,实时识别
recogConfig.addParam(AsrConfig.PARAM_KEY_REALTIME, “yes”);
// 本地语法识别,语法类型为jsgf,实时识别
byte[] grammarData = getAssetFileData(“stock_10001.gram”);
String strGrammarData = new String(grammarData, “utf-8”);
recogConfig.addParam(AsrConfig.PARAM_KEY_GRAMMAR_TYPE, “jsgf”);
recogConfig.addParam(AsrConfig.PARAM_KEY_REALTIME, “yes”);
3 功能测试
功能测试主要是对六个模块中的各种功能是否能按照计划成功实现进行测试,日历模块主要测试显示日历和翻月功能,图6所示是显示日历界面,日程和记事模块测试显示、添加、编辑、删除日程和记事以及日程提醒功能,天气模块测试选择城市功能,刷新天气和显示天气信息功能,如图7所示,计算模块测试计算日期间隔,推算日期和转换日期功能,语音模块测试本地语法识别,云端语法识别,显示语音操作说明功能,图8所示是语音识别界面。
测试结果表明,本系统的各项功能均可正常运行,并且使用起来简洁方便。
图6 显示日历界面 图7 显示天气信息界面 图8 语音识别界面
4 结 语
本系统以农业物联网基础平台建设为背景,集日历、日程提醒、查看天气以及语音识别功能于一体,并且附加记事和日期计算功能,使用户可以更加准确地获取农历、节气、天气等信息,方便农事安排,通过农业物联网基础平台更好地管理和控制物联网设备,同时通过日程提醒谨防遗忘重要工作,具有操作简洁、功能丰富的特点,能很好地满足农户在工作和生活中的需求。
本系统还实现了语音对系统的操控,并且自定义了语音识别语法规则,在识别时不需要连接网络更加节省了流量和时间;同时在添加日程和记事内容时增加了语音自由录入文字的功能,虽需联网,但方便不会打字的用户,避免繁琐的文字录入,为手机操作不熟练的农户提供了便利,提高了用户体验。
参考文献
[1]谭奇栋,刘波,沈岳,等.基于 Android 平台的新农村手机号码银行安全服务策略[J].软件,2014,35(3):1-3.
[2]刘波,沈岳,郭平,等.数字湖南农业信息化建设关键策略探索[J].软件,2013,34(10):1-6,14.
[3]于俊婷.国内语音识别研究综述[J].计算机光盘软件与应用,2014(10):76-78.
[4]百度.百度开放服务平台[EB/OL].[2015-4-9].http://developer.baidu.com/map/index.php?title=car/api/weather.
[5]捷通华声灵云.全方位人工智能开放平台[EB/OL].[2015-4-9].http://www.hcicloud.com/dev/application/viewapplist/act/dev.html.
[6]王建腾,李栋,孟铁,等.SQLite在嵌入式ARM数据采集器中的移植和应用[J].自动化应用,2015(4):5-7.
[7]陈美镇,王纪章,李萍萍,等.基于Android系统的温室异构网络环境监测智能网关开发[J].农业工程学报,2015,31(5):218-225.