APP下载

维吾尔语口试阅卷系统开发中若干问题的研究

2015-05-30贾志先

智能计算机与应用 2015年4期
关键词:口试

摘 要: 维吾尔语水平测试是为维吾尔语非第一语言的学习者设计的一项标准化考试。利用PHP开发了维吾尔语口试网上阅卷系统。在软件开发过程中,存在着网页字符集的选择,维吾尔语文字的显示,口试试题的存储和访问,口试音频的播放以及口试音频波形的显示等问题。针对维吾尔语口试阅卷的特点和需求,给出了解决问题的技术和方法。

关键词: 阅卷系统; 口试; 音频波形; PHP

中图分类号:TP391 文献标识码:A 文章编号:2095-2163(2015)04-

Several Issues in the Online Marking System of Oral in Uyghur Proficiency Test

JIA Zhixian

(Network and Experimental Teaching Center, Xinjiang University of Finance and Economics)

Abstract: The Uyghur proficiency test is a standardized test to design for the learners who first language is something other than Uyghur. By using PHP, the paper develops an online marking system of oral in Uyghur proficiency test. In the software development process, there are some problems, such as how to select a charset in web page, storage and display the questions and answers in Uighur, play oral audio, as well as display oral audio waveform and so on. According to the characteristics and needs of the online marking of oral examination, the paper has given the technology and methods to solve these problems.

Key Words: Online Marking System; Oral Test; Audio Waveform; PHP

0 引 言

在新疆,母语非维吾尔语的各民族(主要是汉族)中学习维吾尔语的人数正在迅速地增加,每年都有数以万计的母语非维吾尔语的人员通过国民教育系列和非国民教育系列的各种方式(包括各种类型的培训班)在学习维吾尔语。维吾尔语水平测试是为维吾尔语非第一语言的学习者设计的一项标准化考试,重点考查考生在生活、学习和工作中运用维吾尔语进行交际的能力。为了使维吾尔语水平测试公平、公正和高效,应用PHP开发了一个维吾尔语口试网上阅卷系统。运用先进的计算机网络技术,实现了考试评分手段的现代化[1-2]。在软件开发过程中,存在着网页字符集的选择,维吾尔语文字的显示,口试试题的存储和访问,口试音频的播放以及口试音频波形的显示等问题[3]。经过研究和探讨,有效地解决了这些问题。

1 维吾尔语口试阅卷

维吾尔语水平测试设立了四个等级,其中,一、二级为初级,三级为中级,四级为高级。在维吾尔语水平测试各个级别中,均包括有笔试和口试两部分。开设维吾尔语水平测试口试项目,其主要目的是从语音、语调、断句的正确流利程度上考查考生的语言能力以及语言的流利度。例如,一级口试的题型主要有看图认读和看图回答问题,三级口试的题型主要有朗读题和简答题。在网上评卷过程中,每个小题需经两位评卷老师评卷,如果两位评卷老师评卷结果误差超过规定的范围,则由第三位评卷老师评卷,以保证评卷的质量[4]。维吾尔语水平测试口试网上阅卷的主要依据是考生的口试音频文件。通过播放考生的口试音频文件,评卷人员从考生的语音语调语速等方面进行判断,给出一个恰当的分数。

2 维吾尔语文字的显示问题

在计算机字符编码中,有多种不同的字符编码方案。选择在网页中能够正常显示维吾尔语文字的字符编码是维吾尔语口试网上阅卷的一个重要的问题。Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符。在Unicode中,维文字符被分配到阿拉伯字符基本区,扩展区A和扩展区B[5]。UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码。在电子邮件、网页及其他存储或发送文字的应用中,UTF-8逐渐成为优先采用的编码。在维吾尔语口试网上阅卷系统网页设计中,选择UTF-8作为网页的字符集,可以很好地解决维吾尔文的显示问题。

3 数据库设计与访问方式

在维吾尔语口试阅卷系统中,数据库表主要有:考生口试信息表,口试试题和标准答案,评卷人员表和评卷结果等。在一些数据库系统(例如,Visual FoxPro等)和访问方式(例如,RDO方式)中,存在着不支持UTF-8编码的问题。在维吾尔语口试考试和评卷系统开发过程中,找到了一些支持UTF-8编码的数据库和访问方式,以及不支持UTF-8编码情况下的解决方案。在维吾尔语口试试题编辑过程中,数据库采用Access数据库。试题编辑系统采用Visual Studio 2010开发,访问数据库技术则采用ADODB方式。在维吾尔语口试考试和评卷系统中,数据库采用SQL Server 2008。在考试和评卷前,将以Access数据库存储的试题库导入到SQL Server 2008中。在Access中,存储维吾尔语口试试题和答案的字段,选择“备注”型和“文本”型;在SQL Server 2008中,存储维吾尔语口试试题和答案的字段,选择nvarchar型。

在PHP中,常用的访问SQL Server方式有mssql、odbc和adodb等。这些访问SQL Server方式都存在着不支持UTF-8字符集的问题。口试试题和答案的文字不多,可以采用图像文件方式存储维吾尔语口试试题和答案。可以应用Visual Studio 2010,编写一个建立试题图像的程序,将试题库中的口试试题和答案读出并保存为.JPG格式图像。在口试试题和答案数据库表中,增加一个字段来存储试题和答案的图像文件名。在评卷前,将建立的试题和答案的图像,存储在评卷系统的images文件夹下,在PHP网页中,利用文件名字段读取所建的答案图像,以图像方式显示试题和答案。

在访问SQL Server的mssql、odbc和adodb等方式中,应用mssql方式访问SQL Server,需要利用微软发布的驱动程序SQL Server Driver for PHP。应用adodb方式访问SQL Server,需要从http://sourceforge.net/projects/adodb网站上下载和安装adodb包。odbc方式访问SQL Server则相对比较简单。在口试阅卷系统中,选择应用odbc方式访问SQL Server数据库。

PHP中应用odbc方式访问SQL Server数据库的常用函数[6]主要有:

odbc_connect()--建立一个数据库连接。

odbc_exec()--执行SQL语句,并返回一个结果集。

odbc_fetch_row()--从结果集中取一条记录。如果取出一条记录,则函数返回true,否则函数返回false。

odbc_result()--从记录中读取字段。该函数有两个参数:odbc结果标识符和字段编号或名称。

odbc_close()--关闭 odbc 连接。

在网页中,访问SQL Server遇到非ASCII字符时,需要应用iconv()函数在UTF-8编码和GB2312编码之间进行转换。例如:

$sqlstr = "select * from 评卷人员表 where 用户名='".$username."' and 密码='".$pwd."'";

$result=odbc_exec($conn,iconv("utf-8","gb2312",$sqlstr));

$_SESSION['username']=odbc_result($result, iconv("utf-8","gb2312",'用户名'));

4 口试音频的播放

在PHP网页中,可通过调用Windows Media Player进行音频的播放。在口试阅卷系统中,调用Windows Media Player播放音频的代码为:

… … …

playcount="0" loop="0" showstatusbar="1" align="middle">

其中,classid:6BF52A52-394A-11D3-B153-00C04F79FAA6是Windows Media Player 7及更高版本的class ID,$play_file 是音频文件的URL,pluginspage是插件地址。

Windows Media Player播放器效果如图1所示。

图1 Windows Media Player播放器

Fig.1 Windows Media Player in PHP

5 口试音频波形的显示

在口试评卷系统中,绘制口试音频的波形,将有助于评卷人员评卷工作。在PHP中,可以实现口试音频的波形的绘制和显示[7-8]。其方法为:

(1) 将口试音频文件存储在评卷系统指定的文件夹下。其中,口试音频文件为WAV格式。音频格式为单声道、采样频率8 000Hz、量化位长16位。

(2) 在评卷网页中,插入一个图像对象,用来显示口试音频的波形[8]。其代码为:

其中,draw_wave.php是绘制口试音频的波形模块,显示音频的波形图像的宽度和高度分别设置为720和52像素。

(3) 在draw_wave.php模块中,实现绘制口试音频的波形[9],其代码为:

<?php

session_start();

$width = 720;

$height = 26;

$file = $_SESSION['$FileName'];

if ($_SESSION['$FileName'] == "")

{ $im = imagecreate($width, $height*2);

imagecolorallocate($im, 250,250,250);

}

else

{ $fp = fopen($file, 'r');

$RIFF_HEADER = fread($fp, 36);

$PCMWAVEFORMAT = unpack('A4RIFF/VDataSize/A4WAVE/A4fmt_/VSize_of_WAVEFORMAT/vFormatTag/vChannels/VSamplesPerSec/VBytesPerSec/vBlockAlign/vBitsPerSample', $RIFF_HEADER);

fseek($fp, 36);

$DATA_BLOCK = fread($fp, 8);

$DataChunk = unpack('A4data/VDataSize', $DATA_BLOCK);

$BitsPerSample = $PCMWAVEFORMAT['BitsPerSample'];

$Channels = $PCMWAVEFORMAT['Channels'];

$BytesPerSample = $BitsPerSample * $Channels / 8;

$number_of_samples = $DataChunk['DataSize'] / $BytesPerSample;

$SamplesPerSec = $PCMWAVEFORMAT['SamplesPerSec'];

$im = imagecreate($width, $height*2);

$Amplitude = pow(2, $BitsPerSample - 1) / $height;

imagecolorallocate($im, 250,250,250);

$blue = imagecolorallocate($im, 0, 0, 255);

$data = fread($fp, $number_of_samples * $BytesPerSample);

$samples = unpack("s*", $data);

$x = 0;

$y1 = $height;

$maxValue = 0;

$step = $number_of_samples/$width;

foreach($samples as $key=>$value)

{ $i = ($key-1) % $step;

if (abs($value) > abs($maxValue)) $maxValue = $value;

if ($i > 0) continue;

$y2 = $height- $maxValue / $Amplitude;

imageline($im, $x, $y1, $x+1, $y2, $blue);

$y1 = $y2;

$maxValue = 0;

$x++;

}

}

header("Content-type: image/png");

imagepng($im);

imagedestroy($im);

?>

绘制的口试音频波形效果如图2所示。

图2 口试音频波形图

Fig.2 Audio waveform in online marking of oral

在draw_wave.php模块中,变量$RIFF_HEADER存储WAV音频文件的文件头信息,变量$PCMWAVEFORMAT存储WAV音频文件的音频格式,变量$DATA_BLOCK存储WAV音频文件的数据段信息,$samples数组存储WAV音频文件中的样本。

header("Content-Type:image/png")表示输出的内容是图像(png格式)。应用imagecreate()函数创建图像区域并返回一个标识给变量$im;应用imagecolorallocate($im, 250,250,250)函数设置图像背景;应用imageline()函数绘制直线,由所绘的直线组成波形图;应用imagepng($im)函数,将图像$im以png格式输出到浏览器;应用imagedestroy($im)函数,收回图像$im所占用的内存[10]。

在绘图过程中,样本个数选取量与图像的宽度像素个数相同,样本选取间隔为样本总数除以图像的宽度像素个数。在每个样本选取间隔中,取其间音量最大的样本作为绘制图像的样本。

6 结束语

在维吾尔语口试评卷系统中,主要针对单声道、量化位长为16位的音频格式,绘制口试音频的波形。对于其它音频格式,需要对代码进行适当的调整。2015年,在新疆举办的维吾尔语水平测试口语考试中,应用维吾尔语口语评卷系统评卷,取得了令人满意的结果。

参考文献:

[1] 刘叔才,刘博雷,葛利荣,等.基于J2EE的医学外语考试网上阅卷系统的研究[J].中国社会医学杂志,2011,28(6):380-382.

[2] 钱建良.教育考试新一代网上评卷系统架构的实践及探索[J].中国考试,2014,11(7):49-54.

[3] 贾志先.维吾尔语口语考试系统的开发与应用[J].计算机技术与发展,2015,25(5):205-208,213.

[4] 俞韫烨,谢小庆.基于多面Rasch模型的作文网上评卷“趋中评分”判定研究[J].中国考试,2012,9(1):6-13.

[5] 维尼拉·木沙江,艾尔肯·伊米尔.维文Unicode在线处理技术与实现[J].新疆大学学报(自然科学版), 2004,21(3):332-334.

[6] Daniel J Lewis.开始通过PHP使用ODBC[EB/OL].http://www.ibm.com/developerworks/cn/opensource/os-php-odbc/.2011-09-05.

[7] 陈营辉.PHP网络编程从入门到精通[M].北京:清华大学出版社,2007.

[8] 陈军红,王瑞敬.PHP编程从基础到应用[M].北京:清华大学出版社,2014.

[9] Jerryfleming.PHP分析.wav文件并绘制png格式的波形图[EB/OL].http://bbs.phpchina.com/thread-29461-1-1.html.2007-07-03.

[10] 潘凯华,刘中华等,编著.PHP从入门到精通(第2版)[M].北京:清华大学出版社,2010.

猜你喜欢

口试
我省将于7月25日前公布高考成绩及录取分数线
开展数学口试,提升学生数学核心素养
PETS口试评分培训效果的多面Rasch分析
BEC加试:口试成了成败关键
什么是口试
笔试与口试