黃天天+劉波
摘 要:針對湖南農(nóng)業(yè)物聯(lián)網(wǎng)基礎(chǔ)平臺建設(shè)過程中農(nóng)戶需要與物聯(lián)網(wǎng)設(shè)備進(jìn)行信息交互的需求,設(shè)計開發(fā)了集日歷、日程提醒、記事、天氣預(yù)報、日期計算和語音識別功能于一體的手機(jī)秘書系統(tǒng)。并在研究Android系統(tǒng)提供的音頻、振動等開發(fā)接口和SQLite數(shù)據(jù)庫的基礎(chǔ)上,綜合集成了捷通華聲靈云提供的語法識別SDK和百度開放的天氣服務(wù)接口。該系統(tǒng)操作簡捷,能通過語音控制幫助用戶更好地完成各項日程任務(wù),使生活更加智能化與規(guī)范化。
關(guān)鍵詞:語音識別;天氣信息;事務(wù)提醒;農(nóng)業(yè)物聯(lián)網(wǎng)
中圖分類號:TP393 ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ?文章編號:2095-1302(2015)09-00-04
0 ?引 ?言
隨著我國政府對糧食安全的重視,農(nóng)村信息化建設(shè)在廣大農(nóng)村地區(qū)的逐步推廣和人們生活水平的提高,手機(jī)在農(nóng)村已成為日常生活必須品,智能手機(jī)在農(nóng)村的份額也逐步擴(kuò)大[1]。一方面,隨著科技部農(nóng)業(yè)物聯(lián)網(wǎng)項目在湖南落地生根,農(nóng)戶在使用物聯(lián)網(wǎng)設(shè)備進(jìn)行信息交互時,常需要查看相應(yīng)農(nóng)歷、節(jié)氣、天氣等信息,同時需要設(shè)置日程提醒謹(jǐn)防遺忘重要工作,同時,使用一種簡潔的軟件已經(jīng)必不可少;另一方面,現(xiàn)代生活節(jié)奏加快,人們之間的交流多種多樣,語音識別技術(shù)應(yīng)運(yùn)而生。隨著科學(xué)技術(shù)水平的不斷提高,語音識別技術(shù)也得到了巨大的發(fā)展且前景廣闊。本系統(tǒng)在農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備交互的基礎(chǔ)上,將日歷、日程提醒、查看天氣以及語音識別功能集于一體,并且附加記事和日期計算功能,能很好地滿足農(nóng)戶在農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備使用過程中的工作和生活需求,為廣大農(nóng)戶提供便利。
為了適應(yīng)農(nóng)村地區(qū)對信息化的渴求,促進(jìn)農(nóng)村經(jīng)濟(jì)的進(jìn)一步發(fā)展,2011年至2012年國家科技部開展了農(nóng)村農(nóng)業(yè)信息化關(guān)鍵技術(shù)集成與示范 (2011BAD21B00)與農(nóng)村物聯(lián)網(wǎng)綜合信息服務(wù)科技工程 (2012BAD35B00) 課題研究,湖南省科技廳組織部分高校與科研部門承擔(dān)了相應(yīng)科研任務(wù),并很好地進(jìn)行校企合作,成功搭建農(nóng)業(yè)物聯(lián)網(wǎng)基礎(chǔ)平臺,而且安卓產(chǎn)品能與平臺進(jìn)行信息交互與設(shè)備控制[2]。為了輔助廣大農(nóng)民更加便捷的管理農(nóng)業(yè)活動,了解農(nóng)歷節(jié)氣和天氣信息,記錄和提醒事務(wù),作者設(shè)計和開發(fā)了集日歷、日程提醒,記事,天氣預(yù)報和日期計算于一體的手機(jī)秘書系統(tǒng)。
另一方面,隨著人機(jī)交互的廣泛應(yīng)用,交流方法不再限于文本輸入與按鈕選擇,語音技術(shù)獲得了較快發(fā)展。作為語音技術(shù)中的關(guān)鍵技術(shù)之一,語音識別(Speech Recognition,SR)就是讓機(jī)器通過識別和理解過程把人類的語音信號轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令[3]。隨著語音識別技術(shù)的日益成熟,語音識別技術(shù)發(fā)展前景更加廣闊,手機(jī)秘書系統(tǒng)綜合運(yùn)用捷通華聲靈云提供的語法識別SDK,整合了語音識別功能,使用戶能通過語音操控軟件,提供更加簡捷的操作方式。
1 ?設(shè)計思路
本系統(tǒng)是以農(nóng)業(yè)物聯(lián)網(wǎng)基礎(chǔ)平臺建設(shè)為背景,采用Eclipse作為開發(fā)工具,利用SQLite數(shù)據(jù)庫作為存儲載體,應(yīng)用百度的LBS開放平臺的車聯(lián)網(wǎng)API所提供的免費(fèi)天氣查詢接口,以XML方式獲取指定城市天氣預(yù)報信息[4],利用捷通華聲靈云開發(fā)者社區(qū)提供的靈云語音識別能力[5]來完成本地語法識別以及云端自由說識別,同時利用Android中的MediaPlayer和AudioManager接口實現(xiàn)響鈴和提示,并利用 Vibrator接口實現(xiàn)振動功能。研究了Android平臺中Activity、Service、Broadcast Receiver、Content Provider這四大組件以及SQLite數(shù)據(jù)庫[6]和Android平臺的程序運(yùn)行機(jī)制[7],最后開發(fā)出包括日歷、日程提醒、記事、天氣、日期計算以及語音識別6個功能模塊的手機(jī)秘書系統(tǒng)。
2 ?系統(tǒng)實現(xiàn)
2.1 ?框架結(jié)構(gòu)
手機(jī)秘書系統(tǒng)的框架結(jié)構(gòu)如圖1所示。用戶可通過用戶界面發(fā)送請求到后臺服務(wù),后臺服務(wù)再將處理過的信息返回用戶界面,以供用戶查看。
從圖1可知,天氣模塊后臺需要通過訪問百度天氣信息平臺獲取天氣信息數(shù)據(jù),語音識別模塊后臺需要在靈云信息平臺上登陸靈云賬號,并獲取登陸信息后就能正常使用語音識別功能,云端語音識別功能則通過與靈云信息平臺進(jìn)行交互獲取識別結(jié)果,后臺進(jìn)行處理然后傳遞給用戶界面;日程提醒廣播接收器繼承的是Broadcast Receiver類,當(dāng)鬧鈴觸發(fā)時會接收到Alarm Manager Service服務(wù)程序發(fā)出的廣播,然后執(zhí)行定義的操作,傳遞參數(shù)并跳轉(zhuǎn)到日程提醒界面。
圖1 ?手機(jī)秘書系統(tǒng)框架結(jié)構(gòu)圖
用戶界面管理日程和記事信息都是通過日程和記事模塊的后臺服務(wù)傳遞信息和操作請求給數(shù)據(jù)庫適配器,通過適配器向SQLite數(shù)據(jù)庫中讀寫日程和記事數(shù)據(jù),讀取信息后則由數(shù)據(jù)庫適配器直接向用戶界面?zhèn)鬟f信息進(jìn)行顯示。
2.2 ?功能分析
通過對調(diào)研材料的分析,該手機(jī)秘書系統(tǒng)除能正常與農(nóng)業(yè)物聯(lián)網(wǎng)設(shè)備進(jìn)行交互外,還需提供日歷、日程、記事、天氣、計算和語音六大功能。
日歷部分主要是查看公歷、陰歷、節(jié)日、日程安排等日歷信息,包含翻月以及點擊日期查看當(dāng)前日期的操作;日程提醒和記事部分主要是查看、添加、修改、刪除日程和記事信息,添加日程提醒功能的UML時序圖如圖2所示。天氣部分可以聯(lián)網(wǎng)查看指定城市當(dāng)天和后三天的天氣預(yù)報,用戶可以根據(jù)需要修改城市以及刷新天氣,當(dāng)手機(jī)沒有聯(lián)網(wǎng)或獲取數(shù)據(jù)失敗時,系統(tǒng)給用戶適當(dāng)?shù)奶崾荆榭刺鞖獾腢ML時序圖如圖3所示。日期計算部分包括計算日期間隔,日期推算和日期轉(zhuǎn)換功能。
語音識別部分包括本地語法識別以及云端自由說識別兩個部分,本地識別應(yīng)用在整個軟件內(nèi)的大部分操作,不需要連接網(wǎng)絡(luò)仍然可以使用,云端識別需要連接網(wǎng)絡(luò)才能使用,應(yīng)用在添加日程和記事時輸入內(nèi)容的操作,方便用戶的輸入,另外用戶可以查看語音識別操作說明進(jìn)行語音操作,本地語音識別的UML時序圖如圖4所示。
2.3 ?系統(tǒng)實現(xiàn)
2.3.1 ?數(shù)據(jù)庫設(shè)計
本系統(tǒng)采用SQLite數(shù)據(jù)庫,并將其命名為Secretary.db。該數(shù)據(jù)庫用到了2個數(shù)據(jù)表,分別是Schedule和Note。
日程信息表Schedule主要記錄日程的時間、地點、事件內(nèi)容、是否提醒、提醒時是否振動、是否響鈴以及提醒提前時間。其定義如表1所列。
表1 ?Schedule數(shù)據(jù)庫表結(jié)構(gòu)屬性 數(shù)據(jù)類型 描述
sid integer 自動增加的主鍵
event text 日程的事件內(nèi)容
time varchar(30) 日程的時間
address varchar(20) 日程的地點
remind integer 是否提醒日程,1為提醒,0為不提醒
remindtime integer 提醒時間:10,20,30表示提前10分鐘,20分鐘,30分鐘
vibration integer 提醒時是否振動
ring integer 提醒時是否響鈴
記事信息表主要保存記事的時間,記事的標(biāo)題和記事的內(nèi)容。其結(jié)構(gòu)如表2所列。
圖4 ?本地語音識別的時序圖
表2 ?Note數(shù)據(jù)庫表結(jié)構(gòu)
屬性 數(shù)據(jù)類型 描述
nid integer 自動增加的主鍵
time varchar(30) 添加記事的時間
title varchar(20) 記事的標(biāo)題
content text 記事的內(nèi)容
2.3.2 ?程序模塊設(shè)計
可將整個應(yīng)用程序劃分為6個模塊,分別是日歷模塊、日程模塊、記事模塊、天氣模塊、日期計算模塊以及語音識別模塊,其模塊結(jié)構(gòu)圖如圖5所示。
圖5 ?手機(jī)秘書系統(tǒng)的模塊結(jié)構(gòu)圖
2.3.3 ?主要模塊實現(xiàn)
系統(tǒng)的關(guān)鍵代碼實現(xiàn)在天氣模塊和語音識別模塊,具體實現(xiàn)過程如下:
(1)天氣模塊主要通過解析本地XML格式的城市地區(qū)數(shù)據(jù)供用戶選擇,調(diào)用天氣服務(wù)類BaiduWeather.java獲取該城市天氣信息,最后顯示出來。核心代碼在百度天氣服務(wù)類BaiduWeather.java文件中,在與百度天氣平臺通信前首先通過checkNetworkAvailable()方法檢測網(wǎng)絡(luò)是否連接,然后調(diào)用GetWeather()來與百度天氣平臺進(jìn)行通信,獲取當(dāng)前天氣數(shù)據(jù)信息,調(diào)用readWeatherStringXml()方法解析返回的XML數(shù)據(jù),并存儲到List中,最后通過天氣界面顯示出來。
(2)語音識別模塊主要包括本地語法識別功能和云端自由說識別功能,該模塊是系統(tǒng)的核心模塊。本地語法識別功能的實現(xiàn)首先利用voiceInit()方法登陸靈云賬號和完成靈云語音識別系統(tǒng)初始化,initAsr()方法配置初始化參數(shù),如在靈云平臺上申請的應(yīng)用程序序號、能力密鑰、語法規(guī)則文件路徑等,jumpControl()和setJumpParam()方法實現(xiàn)語音識別后對不同的結(jié)果執(zhí)行不同操作的控制,并處理識別結(jié)果,從中獲取必要信息作為參數(shù)向各具體執(zhí)行界面?zhèn)鬟f,最后正確執(zhí)行。在添加日程和添加記事時的語音識別實現(xiàn)的是云端自由說識別功能,本地語法識別和云端自由說識別功能在代碼實現(xiàn)方面的區(qū)別在于識別的語法規(guī)則的設(shè)定不同,需要運(yùn)行的靈云能力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 ?功能測試
功能測試主要是對六個模塊中的各種功能是否能按照計劃成功實現(xiàn)進(jìn)行測試,日歷模塊主要測試顯示日歷和翻月功能,圖6所示是顯示日歷界面,日程和記事模塊測試顯示、添加、編輯、刪除日程和記事以及日程提醒功能,天氣模塊測試選擇城市功能,刷新天氣和顯示天氣信息功能,如圖7所示,計算模塊測試計算日期間隔,推算日期和轉(zhuǎn)換日期功能,語音模塊測試本地語法識別,云端語法識別,顯示語音操作說明功能,圖8所示是語音識別界面。
測試結(jié)果表明,本系統(tǒng)的各項功能均可正常運(yùn)行,并且使用起來簡潔方便。
圖6 顯示日歷界面 ?圖7 顯示天氣信息界面 ?圖8 ?語音識別界面
4 ?結(jié) ?語
本系統(tǒng)以農(nóng)業(yè)物聯(lián)網(wǎng)基礎(chǔ)平臺建設(shè)為背景,集日歷、日程提醒、查看天氣以及語音識別功能于一體,并且附加記事和日期計算功能,使用戶可以更加準(zhǔn)確地獲取農(nóng)歷、節(jié)氣、天氣等信息,方便農(nóng)事安排,通過農(nóng)業(yè)物聯(lián)網(wǎng)基礎(chǔ)平臺更好地管理和控制物聯(lián)網(wǎng)設(shè)備,同時通過日程提醒謹(jǐn)防遺忘重要工作,具有操作簡潔、功能豐富的特點,能很好地滿足農(nóng)戶在工作和生活中的需求。
本系統(tǒng)還實現(xiàn)了語音對系統(tǒng)的操控,并且自定義了語音識別語法規(guī)則,在識別時不需要連接網(wǎng)絡(luò)更加節(jié)省了流量和時間;同時在添加日程和記事內(nèi)容時增加了語音自由錄入文字的功能,雖需聯(lián)網(wǎng),但方便不會打字的用戶,避免繁瑣的文字錄入,為手機(jī)操作不熟練的農(nóng)戶提供了便利,提高了用戶體驗。
參考文獻(xiàn)
[1]譚奇棟,劉波,沈岳,等.基于 Android 平臺的新農(nóng)村手機(jī)號碼銀行安全服務(wù)策略[J].軟件,2014,35(3):1-3.
[2]劉波,沈岳,郭平,等.數(shù)字湖南農(nóng)業(yè)信息化建設(shè)關(guān)鍵策略探索[J].軟件,2013,34(10):1-6,14.
[3]于俊婷.國內(nèi)語音識別研究綜述[J].計算機(jī)光盤軟件與應(yīng)用,2014(10):76-78.
[4]百度.百度開放服務(wù)平臺[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數(shù)據(jù)采集器中的移植和應(yīng)用[J].自動化應(yīng)用,2015(4):5-7.
[7]陳美鎮(zhèn),王紀(jì)章,李萍萍,等.基于Android系統(tǒng)的溫室異構(gòu)網(wǎng)絡(luò)環(huán)境監(jiān)測智能網(wǎng)關(guān)開發(fā)[J].農(nóng)業(yè)工程學(xué)報,2015,31(5):218-225.