賈慶瑞+金鐘+宋麗紅
摘要:該項(xiàng)目以聲紋識別、語音識別及嵌入式數(shù)據(jù)庫技術(shù)為基礎(chǔ),設(shè)計(jì)和開發(fā)了基于Android系統(tǒng)的語音簽到系統(tǒng)。利用聲紋唯一性的特點(diǎn),結(jié)合動(dòng)態(tài)認(rèn)證碼機(jī)制,識別學(xué)生語音輸入是否正確,有效杜絕了代簽作弊行為。在此基礎(chǔ)上,系統(tǒng)綜合分析學(xué)生的缺勤情況,自動(dòng)向?qū)W生發(fā)送預(yù)警郵件,有效地提高了高校考勤管理的效率。
關(guān)鍵詞:聲紋識別;語音識別;嵌入式數(shù)據(jù)庫;Android系統(tǒng)
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)12-0109-03
Abstract :This program is designed to help students to sign-in in large class of university. We realize the application based on Voice-print Recognize, Speech Recognize and Embedded database technology. With the uniqueness of voice-print and dynamic authentication code mechanism,the application check the students' speech input ,preventing from cheating.The application also summarizes of the absent times and send the email to the students who are absent from class .It can improve the efficiency of sign-in management.
Key words: voice-print recognize;speech recognize; embedded database; Android system
1 背景
目前,國內(nèi)高校對學(xué)生考勤管理有著迫切的需求,普遍需要一種方便快捷、真實(shí)可靠的簽到方法。傳統(tǒng)的簽到方法存在各種缺陷,不能很好地滿足現(xiàn)實(shí)需求。本項(xiàng)目以聲紋識別、語音識別及嵌入式數(shù)據(jù)庫技術(shù)為基礎(chǔ),設(shè)計(jì)和開發(fā)了基于Android系統(tǒng)的應(yīng)用軟件。利用聲紋唯一性的特點(diǎn),結(jié)合動(dòng)態(tài)認(rèn)證碼機(jī)制,學(xué)生簽到需要實(shí)時(shí)語音錄入,經(jīng)過語音識別,識別驗(yàn)證碼是否正確,通告聲紋識別,鑒定是否本人錄音,有效杜絕了代簽作弊行為,嚴(yán)肅了考勤管理,保證教學(xué)質(zhì)量。在此基礎(chǔ)上,系統(tǒng)綜合分析學(xué)生的缺勤情況,自動(dòng)向缺勤次數(shù)超限的學(xué)生發(fā)送郵件。
2 系統(tǒng)設(shè)計(jì)
2.1 MVP
MVP(Model-View-Presenter) 作為MVC的演化版本,它主要目的都是劃分模塊職責(zé),降低模塊耦合,易測試,提高代碼復(fù)用。Model與View不存在直接關(guān)系,這兩者之間是Presenter層,其負(fù)責(zé)調(diào)控 View與Model之間的交互,MVP的結(jié)構(gòu)如圖1所示。在 Android中對用戶界面的操作基本上都是異步進(jìn)行,即在主線程中才能操作UI。Presenter與View、Model的交互使用接口定義交互操作可以進(jìn)一步達(dá)到松耦合也可以通過接口更加方便地進(jìn)行單元測試。
模型層的工作是具體業(yè)務(wù)邏輯處理。項(xiàng)目中Model層實(shí)現(xiàn)的是學(xué)生信息和簽到記錄等數(shù)據(jù)的加載及存儲(chǔ)。
視圖層負(fù)責(zé)顯示數(shù)據(jù)、提供友好的交互。MVP下Activity和Fragment體現(xiàn)在這一層,Activity負(fù)責(zé)加載UI視圖、設(shè)置事件監(jiān)聽,事件觸發(fā)時(shí)由Presenter處理。通過Activity繼承View的接口,使Activity成為View的子類,實(shí)現(xiàn)接口中定義的方法,并將this傳遞給Presenter,所以Presenter需要持有相應(yīng)Activity的引用。
在本系統(tǒng)中Activity加載數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)時(shí)顯示進(jìn)度條,數(shù)據(jù)加載完成后進(jìn)度條消失。
Presenter處理著程序各種邏輯的分發(fā),Activity中實(shí)例化Presenter實(shí)現(xiàn)類,并調(diào)用其方法,在Presenter實(shí)現(xiàn)類中,包含了Model及View的實(shí)例化對象,當(dāng)加載數(shù)據(jù)時(shí),調(diào)用Model中相應(yīng)的方法,數(shù)據(jù)加載成功調(diào)用View.onSuccess(),失敗后調(diào)用View.onError(String errorMsg),接著調(diào)用
View.hidenProgressBar()使進(jìn)度條消失。
2.2 模塊設(shè)計(jì)
2.2.1 名單導(dǎo)入
考慮到文件的通用性,系統(tǒng)采用了EXCEL格式。教師下載得到學(xué)生名單,Android端程序讀入時(shí)按照約定格式,讀取相應(yīng)信息,寫入Android 中內(nèi)置的 SQLite數(shù)據(jù)庫。SQLite是開源嵌入式關(guān)系數(shù)據(jù)庫,實(shí)現(xiàn)自包容、零配置、支持事務(wù)的SQL數(shù)據(jù)庫引擎。為保證學(xué)生信息的有效性和完整性,學(xué)生整班名單導(dǎo)入采用事務(wù)處理。
2.2.2 注冊聲紋與語音簽到
聲紋是指能唯一識別某人或某物的聲音特征。聲紋識別首先需要對說話人的聲紋進(jìn)行建模,然后進(jìn)行匹配,處理,反饋?zhàn)R別結(jié)果。經(jīng)過對比研究,科大訊飛提供的語音識別庫國內(nèi)領(lǐng)先,調(diào)用其API可以為每個(gè)用戶建立精確的聲紋模型,識別率超過95%。因此系統(tǒng)引用了科大訊飛的語音庫。
聲紋注冊分為兩個(gè)步驟,一是獲取密碼,二是注冊即進(jìn)行數(shù)據(jù)訓(xùn)練。密碼是由5組隨機(jī)的8位數(shù)字組成,訓(xùn)練過程中,會(huì)按順序?qū)⑽褰M數(shù)字顯示出來,每錄入一次都會(huì)對驗(yàn)證所讀數(shù)字是否與顯示數(shù)字相同,如若不同會(huì)有“您所讀的文本不一致”的提示。在注冊即訓(xùn)練過程中會(huì)對說話音量及訓(xùn)練環(huán)境進(jìn)行監(jiān)測,判斷音量大小和周圍環(huán)境的嘈雜度。注冊成功后,系統(tǒng)將學(xué)號和姓名拼音首字母作為該學(xué)生的唯一標(biāo)識與此聲紋信息發(fā)送至云服務(wù)器。
簽到流程是系統(tǒng)隨機(jī)顯示出一串?dāng)?shù)字,學(xué)生讀出此串?dāng)?shù)字,系統(tǒng)會(huì)將該學(xué)生讀出內(nèi)容與顯示內(nèi)容進(jìn)行匹配,匹配成功后,進(jìn)行聲紋驗(yàn)證,通過該學(xué)生的唯一標(biāo)識找到聲紋信息進(jìn)行匹配,驗(yàn)證成功即簽到成功。
2.2.3 缺勤學(xué)生預(yù)警
根據(jù)教師設(shè)定的閾值,系統(tǒng)定期統(tǒng)計(jì)出學(xué)生缺勤的次數(shù),向缺勤若干次的學(xué)生發(fā)出郵件提醒。
3 系統(tǒng)實(shí)現(xiàn)
3.1 名單導(dǎo)入
Excel文件需要存在SD卡上,需要程序具有讀寫SD卡的權(quán)限。
1)設(shè)置權(quán)限
2)導(dǎo)入數(shù)據(jù)
在libs文件夾下導(dǎo)入poi.jar包,選中要導(dǎo)入的excel文件。
導(dǎo)入數(shù)據(jù)時(shí)開啟了事務(wù)處理,一旦插入過程有錯(cuò)誤,則回滾到最初狀態(tài),確保數(shù)據(jù)的一致性和完整性。為獲得反饋信息,設(shè)置了一個(gè)整行標(biāo)識flag,flag=1導(dǎo)入成功,flag=2已存在該名稱的班級,flag=0導(dǎo)入失敗。主要用到POI包中的HSSFWorkbook,HSSFSheet,HSSFRow ,HSSFCell 類讀取excel文件。
3.2 注冊聲紋與語音簽到
系統(tǒng)調(diào)用科大訊飛的庫,首先要設(shè)置權(quán)限。
3.2.1 設(shè)置權(quán)限
1)允許程序打開網(wǎng)絡(luò)套接字
2)允許程序訪問有關(guān)GSM網(wǎng)絡(luò)信息。
3)允許程序錄制音頻
4)寫入SD卡
5)允許讀取手機(jī)狀態(tài)
6)允許程序讀取或?qū)懭胂到y(tǒng)設(shè)置
7)允許程序訪問Wi-Fi網(wǎng)絡(luò)狀態(tài)信息
3.2.2 調(diào)用科大訊飛開發(fā)開發(fā)庫
引入Msc.jar包和libmsc.so文件。在應(yīng)用中調(diào)用科大訊飛的API,需要用到預(yù)先在平臺(tái)上注冊的APPID。Android程序中,在Application的onCreate()方法中添加如下語句傳入ID。
3.2.3 獲取密碼
開始注冊mVerifier.startListening(mRegisterListener);
在監(jiān)聽函數(shù)中獲取平臺(tái)返回注冊是否成功的消息。
根據(jù)學(xué)生是否已注冊聲紋,判斷是否可以進(jìn)行簽到操作,簽到的實(shí)現(xiàn)和注冊類似,簽到界面如圖4所示。
3.4 缺勤預(yù)警
系統(tǒng)根據(jù)教師的設(shè)置,選擇缺勤次數(shù)達(dá)到閾值的學(xué)生,發(fā)送郵件預(yù)警。
系統(tǒng)應(yīng)用JavaMail完成郵件提醒。JavaMail是Sun公司提供給開發(fā)人員實(shí)現(xiàn)郵件發(fā)送一系列操作的API接口,其核心類是Transport,Message和Address。在項(xiàng)目中導(dǎo)入activation.jar和mail.jar兩個(gè)jar文件,實(shí)例化對象后,設(shè)定郵件服務(wù)器的發(fā)送服務(wù)器SMTP的端口。
系統(tǒng)封裝了MailSenderInfo類,記錄了發(fā)送郵件所需要的各種參數(shù)和信息,包括發(fā)送郵件的服務(wù)器的IP和端口、郵件接收及發(fā)送方的地址、郵件主題和文本等信息,然后用各自的get和set方法對所需要的參數(shù)進(jìn)行取值和賦值。封裝MyAuthenticator類,記錄郵箱用戶名和密碼認(rèn)證器。
4 結(jié)束語
項(xiàng)目實(shí)現(xiàn)一個(gè)低成本、便捷、可靠的智能考勤管理系統(tǒng)。系統(tǒng)將提供方便快捷的簽到方法,可以解決高校合班上課快速簽到問題。系統(tǒng)將大大提高教師和學(xué)校對學(xué)生出勤情況的監(jiān)控,有利于提高教學(xué)質(zhì)量。
項(xiàng)目研究成果可擴(kuò)展應(yīng)用到企業(yè)內(nèi)部員工會(huì)議、上班簽到等需現(xiàn)場鑒別身份信息的業(yè)務(wù)中,系統(tǒng)不受硬件設(shè)備、空間以及預(yù)算的限制,通過智能移動(dòng)終端為管理工作提供了便利。
參考文獻(xiàn):
[1] 冶明福. 語音識別在現(xiàn)代電子信息產(chǎn)業(yè)中的應(yīng)用[J]. 才智, 2011(11):33-35.
[2] 王艷梅. 基于電話網(wǎng)的遠(yuǎn)程監(jiān)測系統(tǒng)[D]. 哈爾濱: 哈爾濱工程大學(xué), 2011.
[3] 張興財(cái), 楊玥, 蘇煜砷. 基于Android的個(gè)人理財(cái)助手的設(shè)計(jì)與實(shí)現(xiàn)[J]. 民營科技, 2015(5):1-3.
[4] 黃河清, 陳文. 聲紋識別技術(shù)在社保生存驗(yàn)證中的應(yīng)用[J]. 中國科技博覽, 2011(36):632-633.
[5] 李蔚, 陳亞峰. 嵌入式數(shù)據(jù)庫SQLite及其應(yīng)用研究[J]. 沿海企業(yè)與科技, 2010(10):45-47.
[6] 趙云啟. 基于指紋識別技術(shù)的學(xué)生考勤管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京: 華北電力大學(xué), 2013.
[7] 張睿. 基于Android平臺(tái)的聲紋識別系統(tǒng)的研究與實(shí)現(xiàn)[D]. 長沙: 湖南大學(xué), 2014.
[8] 黃賢明. SQLite在嵌入式人機(jī)界面系統(tǒng)開發(fā)中的應(yīng)用[J]. 濰坊學(xué)院學(xué)報(bào), 2014(6):58-60.
[9] 任玉剛. Android開發(fā)藝術(shù)探索[M]. 北京: 電子工業(yè)出版社, 2015:372-410.
[10] 蔡耿平, 黃順珍, 徐志鴻, 等. 聲紋識別系統(tǒng)[J]. 深圳大學(xué)學(xué)報(bào): 理工版, 2002, 19(2):78-80.
[11] Reynolds D A, Rose R C. Robust Text-Independent Speaker Identification Using Gaussian Mixture Speaker Models[C]. IEEE Transactions on Speech and Audio Processing, 1993, 3(1).