黃天天+劉波



摘 要:針對湖南農業物聯網基礎平臺建設過程中農戶需要與物聯網設備進行信息交互的需求,設計開發了集日歷、日程提醒、記事、天氣預報、日期計算和語音識別功能于一體的手機秘書系統。并在研究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.