面向移动终端的语音签到系统
贾庆瑞+金钟+宋丽红
摘要:该项目以声纹识别、语音识别及嵌入式数据库技术为基础,设计和开发了基于Android系统的语音签到系统。利用声纹唯一性的特点,结合动态认证码机制,识别学生语音输入是否正确,有效杜绝了代签作弊行为。在此基础上,系统综合分析学生的缺勤情况,自动向学生发送预警邮件,有效地提高了高校考勤管理的效率。
关键词:声纹识别;语音识别;嵌入式数据库;Android系统
中图分类号:TP391 文献标识码: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 背景
目前,国内高校对学生考勤管理有着迫切的需求,普遍需要一种方便快捷、真实可靠的签到方法。传统的签到方法存在各种缺陷,不能很好地满足现实需求。本项目以声纹识别、语音识别及嵌入式数据库技术为基础,设计和开发了基于Android系统的应用软件。利用声纹唯一性的特点,结合动态认证码机制,学生签到需要实时语音录入,经过语音识别,识别验证码是否正确,通告声纹识别,鉴定是否本人录音,有效杜绝了代签作弊行为,严肃了考勤管理,保证教学质量。在此基础上,系统综合分析学生的缺勤情况,自动向缺勤次数超限的学生发送邮件。
2 系统设计
2.1 MVP
MVP(Model-View-Presenter) 作为MVC的演化版本,它主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用。Model与View不存在直接关系,这两者之间是Presenter层,其负责调控 View与Model之间的交互,MVP的结构如图1所示。在 Android中对用户界面的操作基本上都是异步进行,即在主线程中才能操作UI。Presenter与View、Model的交互使用接口定义交互操作可以进一步达到松耦合也可以通过接口更加方便地进行单元测试。
模型层的工作是具体业务逻辑处理。项目中Model层实现的是学生信息和签到记录等数据的加载及存储。
视图层负责显示数据、提供友好的交互。MVP下Activity和Fragment体现在这一层,Activity负责加载UI视图、设置事件监听,事件触发时由Presenter处理。通过Activity继承View的接口,使Activity成为View的子类,实现接口中定义的方法,并将this传递给Presenter,所以Presenter需要持有相应Activity的引用。
在本系统中Activity加载数据、存储数据时显示进度条,数据加载完成后进度条消失。
Presenter处理着程序各种逻辑的分发,Activity中实例化Presenter实现类,并调用其方法,在Presenter实现类中,包含了Model及View的实例化对象,当加载数据时,调用Model中相应的方法,数据加载成功调用View.onSuccess(),失败后调用View.onError(String errorMsg),接着调用
View.hidenProgressBar()使进度条消失。
2.2 模块设计
2.2.1 名单导入
考虑到文件的通用性,系统采用了EXCEL格式。教师下载得到学生名单,Android端程序读入时按照约定格式,读取相应信息,写入Android 中内置的 SQLite数据库。SQLite是开源嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。为保证学生信息的有效性和完整性,学生整班名单导入采用事务处理。
2.2.2 注册声纹与语音签到
声纹是指能唯一识别某人或某物的声音特征。声纹识别首先需要对说话人的声纹进行建模,然后进行匹配,处理,反馈识别结果。经过对比研究,科大讯飞提供的语音识别库国内领先,调用其API可以为每个用户建立精确的声纹模型,识别率超过95%。因此系统引用了科大讯飞的语音库。
声纹注册分为两个步骤,一是获取密码,二是注册即进行数据训练。密码是由5组随机的8位数字组成,训练过程中,会按顺序将五组数字显示出来,每录入一次都会对验证所读数字是否与显示数字相同,如若不同会有“您所读的文本不一致”的提示。在注册即训练过程中会对说话音量及训练环境进行监测,判断音量大小和周围环境的嘈杂度。注册成功后,系统将学号和姓名拼音首字母作为该学生的唯一标识与此声纹信息发送至云服务器。
签到流程是系统随机显示出一串数字,学生读出此串数字,系统会将该学生读出内容与显示内容进行匹配,匹配成功后,进行声纹验证,通过该学生的唯一标识找到声纹信息进行匹配,验证成功即签到成功。
2.2.3 缺勤学生预警
根据教师设定的阈值,系统定期统计出学生缺勤的次数,向缺勤若干次的学生发出邮件提醒。
3 系统实现
3.1 名单导入
Excel文件需要存在SD卡上,需要程序具有读写SD卡的权限。
1)设置权限
2)导入数据
在libs文件夹下导入poi.jar包,选中要导入的excel文件。
导入数据时开启了事务处理,一旦插入过程有错误,则回滚到最初状态,确保数据的一致性和完整性。为获得反馈信息,设置了一个整行标识flag,flag=1导入成功,flag=2已存在该名称的班级,flag=0导入失败。主要用到POI包中的HSSFWorkbook,HSSFSheet,HSSFRow ,HSSFCell 类读取excel文件。
3.2 注册声纹与语音签到
系统调用科大讯飞的库,首先要设置权限。
3.2.1 设置权限
1)允许程序打开网络套接字
2)允许程序访问有关GSM网络信息。
3)允许程序录制音频
4)写入SD卡
5)允许读取手机状态
6)允许程序读取或写入系统设置
7)允许程序访问Wi-Fi网络状态信息
3.2.2 调用科大讯飞开发开发库
引入Msc.jar包和libmsc.so文件。在应用中调用科大讯飞的API,需要用到预先在平台上注册的APPID。Android程序中,在Application的onCreate()方法中添加如下语句传入ID。
3.2.3 获取密码
开始注册mVerifier.startListening(mRegisterListener);
在监听函数中获取平台返回注册是否成功的消息。
根据学生是否已注册声纹,判断是否可以进行签到操作,签到的实现和注册类似,签到界面如图4所示。
3.4 缺勤预警
系统根据教师的设置,选择缺勤次数达到阈值的学生,发送邮件预警。
系统应用JavaMail完成邮件提醒。JavaMail是Sun公司提供给开发人员实现邮件发送一系列操作的API接口,其核心类是Transport,Message和Address。在项目中导入activation.jar和mail.jar两个jar文件,实例化对象后,设定邮件服务器的发送服务器SMTP的端口。
系统封装了MailSenderInfo类,记录了发送邮件所需要的各种参数和信息,包括发送邮件的服务器的IP和端口、邮件接收及发送方的地址、邮件主题和文本等信息,然后用各自的get和set方法对所需要的参数进行取值和赋值。封装MyAuthenticator类,记录邮箱用户名和密码认证器。
4 结束语
项目实现一个低成本、便捷、可靠的智能考勤管理系统。系统将提供方便快捷的签到方法,可以解决高校合班上课快速签到问题。系统将大大提高教师和学校对学生出勤情况的监控,有利于提高教学质量。
项目研究成果可扩展应用到企业内部员工会议、上班签到等需现场鉴别身份信息的业务中,系统不受硬件设备、空间以及预算的限制,通过智能移动终端为管理工作提供了便利。
参考文献:
[1] 冶明福. 语音识别在现代电子信息产业中的应用[J]. 才智, 2011(11):33-35.
[2] 王艳梅. 基于电话网的远程监测系统[D]. 哈尔滨: 哈尔滨工程大学, 2011.
[3] 张兴财, 杨玥, 苏煜砷. 基于Android的个人理财助手的设计与实现[J]. 民营科技, 2015(5):1-3.
[4] 黄河清, 陈文. 声纹识别技术在社保生存验证中的应用[J]. 中国科技博览, 2011(36):632-633.
[5] 李蔚, 陈亚峰. 嵌入式数据库SQLite及其应用研究[J]. 沿海企业与科技, 2010(10):45-47.
[6] 赵云启. 基于指纹识别技术的学生考勤管理系统设计与实现[D]. 北京: 华北电力大学, 2013.
[7] 张睿. 基于Android平台的声纹识别系统的研究与实现[D]. 长沙: 湖南大学, 2014.
[8] 黄贤明. SQLite在嵌入式人机界面系统开发中的应用[J]. 潍坊学院学报, 2014(6):58-60.
[9] 任玉刚. Android开发艺术探索[M]. 北京: 电子工业出版社, 2015:372-410.
[10] 蔡耿平, 黄顺珍, 徐志鸿, 等. 声纹识别系统[J]. 深圳大学学报: 理工版, 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).