战玉娟 苑芳兵
摘 要:为了解决背诵作业检查占用课堂时间较多的问题,文章在科大讯飞开放平台的语音识别技术基础上,将背诵识别结果进行分词、标点过滤、拼音转换等一系列处理,然后运用LD文本比较算法计算文本相似度以及其他评价指标,准确地反映了学生背诵的完成情况,对智能自动检查学生背诵作业提供了一种有效的解决方案。
关键词:语音识别;文本比较;背诵检查;语音评测;科大讯飞
中图分类号:G434 文献标志码:A 文章编号:1673-8454(2019)06-0033-03
在语文教学过程中,有大量的课文内容需要学生背诵,任课教师为了检查学习效果,需要经常检查学生的背诵完成情况,这往往需要占用大量的课堂教学时间,并且通常情况下教师只能抽查一小部分学生,要想实现全面覆盖的背诵检查,只能依靠各种形式的学生自查,而这样往往效果又不太理想。其他需要大量记忆的课目,比如史、地、生等同样也存在这一矛盾。针对这一情况,笔者尝试利用国内比较成熟的科大讯飞开放平台的智能语音技术,实现语音的连续识别和评测,使教师能够对全体学生背诵情况进行智能自动检查。
一、现状及目标分析
经过对相关文献的查阅整理,发现将语音识别技术应用于背诵检查领域方面的研究还很少,基本处于空白状态。目前在文本相关(text-dependent)的语音识别领域,研究还主要集中在普通话或者外语口语测试等语音评测方面,技术也已经比较成熟[1]。经过对比研究,虽然都是文本相关的语音识别应用,但相对于语音评测方面的应用,背诵检查还是有不小的区别。
首先,背诵检查和语音评测虽然都是文本相关的,但从概念上说背诵检查是语音评测的外延,它不仅需要检查学生发音的准确性,还要求背诵的文本跟课文完全一致;其次,不同于语音评测主要题型是严格按照文本顺序的朗读,在语音识别时只要做简单的“类似切分”进行强制文本对齐,而背诵很可能出现漏背、重复、乱序、停顿、无效语气词等情况,所以相对较难实现文本对齐;最后,在结果的呈现上,语音评测可以根据评分标准给出一个量化分数,而背诵虽然也可以给出某些特征评分,但還需要详细地告诉学生哪些地方有背诵错误。所以语音识别在背诵检查方面的应用研究是很有必要的。
因为项目最终使用者是技术基础比较薄弱的一线教师或者学生,所以必须满足易用性特征,尽量智能化、自动化,无需或尽量少的环境配置,无需培训或者只需稍加引导即可使用,每次使用除了需要维护原始背诵文本,尽量减少附加维护工作。由于实际使用环境一般处于噪音较大的教室或者办公室,所以还应尽量提高噪音环境中的鲁棒性、容错性,提高噪音环境中的识别正确率。要便于背诵结果查询对比,方便教师发现学生背诵过程中存在的各种问题,以便针对性地加以引导。
二、系统模型
实现背诵智能检查这一目标的难点主要有两个方面:
1.在一定噪音背景下的语音准确识别
针对这一难点,为了降低噪音影响,首先对语音进行预处理,选择了卡尔曼滤波算法将原始语音进行去噪增强[2]。对于语音识别,目前国内该领域的技术已经比较成熟,识别正确率大部分已经可以做到97%以上,所以本文无意在语音识别技术方面做深入研究,而是直接利用现有的开放数据接口。通过分析对比,我们选择了国内最早研究语音技术也是技术最成熟的科大讯飞语音开放平台[3]作为语音识别的技术基础,同时科大讯飞还有一个语音评测的开放接口,在检查背诵的同时,还能够指导学生普通话发音,通过智能语音技术自动对发音水平进行评价,对发音错误、缺陷进行定位和问题分析,可谓是锦上添花。由于讯飞语音听写接口要求上传的每段语音不超过60秒,所以需要在上传之前将语音进行适当分割,然后分段上传识别。
2.识别完成后对识别结果与原始文本的准确合理的对比评价
对于该难点,本文采取了四个措施以保证评价结果能够准确反映出学生的实际背诵情况。
(1)尝试建立一个多维度的综合评价指标体系(见表1),从多个维度对学生的背诵给出评分,然后给出一个综合加权评分,教师可以根据自己的喜好选择自己偏重的维度,比如有的教师要求一字不错才算背过,那就需要文本相似度、完成度和正确率三个指标都达到100%。有的教师还要求不能重复,那就必须插入错误率为0。
(2)定义了一个简单的文本相似度函数。由于背诵文本一般不长,并且检查时一般不考虑语义相似性,只要字符不一致即判断为背诵不正确,所以采用相对比较简单的LD(Levenshtein Distance)文本比较算法[4]计算两段文本的编辑距离(Edit Distance),进而根据表1中的文本相似度公式求出两个文本的文本相似度,然后根据该算法的LD矩阵计算回溯路径,得到原始文本和识别文本的匹配字符串,以不同的颜色标注出一致、漏背、多余、错误的字符。经过比较,虽然LD算法在文本比较算法中并不是最优的,尤其其空间复杂度为O(MN)[5],当文本较长时性能较差,但好在一般中学阶段的文本背诵作业文本长度都不算很长,所以对本项目影响可以忽略。
(3)考虑到中文文本的特点,一段文本是由一系列的词组构成,如果词组中的单字背错,可以认为该词组也是错误的,所以可以以词组为单位进行文本比较,这样不但减少LD算法计算过程中的文本的长度,同时也可以降低误判概率,本文采用中国科学院计算技术研究所的NLPIR分词系统[6],首先对原始文本和识别文本进行分词,再以词组为单位对两文本进行编辑距离的计算。
(4)经过分词系统切分词组后,还采取了两个手段进一步减少对文本相似度计算的干扰,一是将原始文本和识别结果全部转成拼音形式对比,以应对中文文本中多音字较多、语音识别结果与原始文本可能音同字不同的情况;二是将原始文本和识别文本的标点全部过滤掉,因为自动识别的文本一般标点不够规范,如果比对标点,会造成文本相似度比实际值偏低。当然在结果呈现中,为了直观还是要转换到原来的中文文本的,这可以通过在过滤前向文本序列添加索引并保存在临时变量中实现。
经过上面的分析,我们设计了如图1所示的系统模型。在学生界面中包含身份认证、作业入口、语音录制、语音回放、语音上传、成绩查询、评测申诉等模块,教师界面中除了包含学生界面的全部功能,还包含学生维护、作业维护、作业下发、手工检查、成绩查询、历史成绩对比等模块。
三、系统实现
考虑到背诵检查的环境一般为教室、办公室或者由父母监督的家中,对可移动性要求较高,所以本项目选择了在普及度比较高的Android平台实现。编程环境选择了官方的Android Studio集成开发环境。因为项目的核心使用了科大讯飞的开放平台接口,所以还需要导入科大讯飞的语音识别和语音评测Android版SDK。音频录制、分割部分使用了Android自带的AudioRecorder、AudioManager类来处理。文本分词系统采用了中国科学院计算技术研究所的NLPIR分词系统,同样需要导入到项目中。
系统核心部分的流程是首先将录制的背诵音频文件暂存到临时目录,录制完成使用卡尔曼滤波算法对音频文件进行降噪、增强处理,然后以1分钟为单位将音频切割成若干段,分别调用科大讯飞开放平台的在线语音识别(SpeechRecognizer)和语音评测(SpeechEvaluator)接口进行语音识别和评测,将语音评测结果合并后经过格式化(对不同的错误发音标以不同的颜色)后直接输出,对语音识别结果合并后复制为两份,一份暂存,另一份先调用NLPIR分词系统进行分词,然后转换为拼音格式并进行标点过滤,对原始文本同样进行分词、拼音转换、标点过滤处理,将得到的两份文本作为输入,依次计算文本相似度、完成度、正确率等表1中列出的指标,其中计算插入错误率统计语气词时不但要参考维护好的语气词列表,还要参考原始文本,防止将原始文本中本来就有的语气词统计进去。最后将计算结果输出,并根据相似度计算矩阵回溯结果,将暂存的那份语音识别结果根据回溯结果以不同的颜色标注出一致、漏背、多余、错误的字符并输出。
四、效益及性能分析
系统实现后在学校中进行了小范围的测试和试用,受到了试用教师和学生的一致好评。对教师来说,该系统让学生在教室或办公室使用教师的Android设备或者在家使用家长的Android手机完成背诵作业,免除了教师在课堂上检查背诵占用过多时间的困扰,节约了大量宝贵的教学时间,显著提高了教学效率。同时,系统可以测算学生背诵作业的各种指标,明确显示出背诵错误,还能顺带准确地指出发音错误,相对于教师人工检查能够提供更准确、更清晰的学习指导,方便因材施教、因势利导。如果教师对某个学生的背诵不放心,可以在教师界面回放检查该学生的背诵录音,非常方便。对学生来说,检查时不用面对教师和全体学生的注视,背诵时能够更加放松,往往发挥得更好,更容易完成教師布置的背诵作业,如果学生质疑系统的评测,可以在学生界面对评测发起申诉,教师可以人工检查学生的背诵录音。
对系统的性能我们也进行了基本的测试,主要对不同环境噪音背景下的语音识别正确率进行了量化测试。经过测试,在办公室和家中基本安静的条件下,语音识别的正确率还是很高的,基本能够达到科大讯飞声称的97%左右。在教室其余学生都在背诵的嘈杂环境中,识别率较低,学生必须将手机的麦克风离自己的嘴足够近,并且前后左右同学没有特别大声的干扰,才能有较好的识别率。
五、小结与展望
本文以科大讯飞的语音识别技术为基础,将识别结果进行一系列处理后,采用LD算法将识别结果和原始文本进行比较,实现了学生背诵作业的智能自动检查,经过试用,取得了一定的经济和社会效益。
在系统使用过程中,我们也发现还有不少改进的空间,比如少部分学生在背诵过程中可能会偷懒照读课本,还有部分学生让别人顶替完成作业,所以计划下一步在系统中加入不定时拍照、面部识别以及声纹识别功能以应对这两种情况。还有系统为了提高识别率采用了在线语音识别,需要上传音频文件,如果教室中没有WiFi用流量上传,需要消耗较高的流量,效费比较低,下一步考虑自动检测网络环境,在非WiFi环境中使用离线语音识别。
参考文献:
[1]严可.英文朗读题及复述题自动评测技术研究[D].合肥:中国科学技术大学, 2009.
[2]沈亚强,程仲文.建立在卡尔曼滤波基础上的语音增强方法[J].声学学报,1994(3).
[3]科大讯飞科技有限公司.科大讯飞MSC Android版SDK的用户指南[DB/OL]. https://doc.xfyun.cn/msc_android/index.html.
[4]姜华,韩安琪,王美佳等.基于改进编辑距离的字符串相似度求解算法[J].计算机工程,2014,40(1):222-227.
[5]Eugene W. Myers. An O(ND) difference algorithm and its variations[J]. Algorithmica,1986(1).
[6]刘群,张华平,俞鸿魁,程学旗.基于层叠隐马模型的汉语词法分析[J].计算机研究与发展,2004(8):1421-1429.
(编辑:鲁利瑞)