基于条码扫描器和ATmega16的五线谱识别发音设备

2012-11-24 02:17赵宇飞张远哲姚缨英樊伟敏
网络安全与数据管理 2012年6期
关键词:扫描器五线谱方波

赵宇飞,张远哲,姚缨英,樊伟敏

(浙江大学 电气工程学院,浙江 杭州310027)

本文所述基于条码扫描器和ATmega16的五线谱识别发音设备实现了纸质五线谱的扫描识别发音。经过实测,该方案的识别准确率很高,且发音准确。据了解,目前国内还没有类似成果出现,只有国外某所大学从事过类似研究,但其使用的方案与本成果不同。

该设备使用激光条形码扫描器作为采集设备,将五线谱的光学信号转换为脉冲宽度数字脉冲信号,利用ATmega16单片机接收方波信号并进行分析比对处理,实现音符的判别,并根据标准十二平均律确定每个音符对应的声音频率,最后用单片机定时器产生相应频率方波信号输出到耳机。系统结构清晰,各部分分工明确。限于条码扫描器每次只能扫描一行,目前每次只能扫描一个音符,并且不对音符的节奏做出判别,只判定音符名。

该设备操作简单,只需将条码扫描器的激光线对准要扫描的音符,就可以识别音符并发声。

值得一提的是,本成果在五线谱识别发音功能的基础上保留了条码扫描器自身的功能。只要连接数据线,仍然可以正常地完成条码扫描的功能。

1 系统组成

本系统最大限度地利用了条码扫描器自有的时钟信号和输出信号。由于输出信号为脉冲宽度与被扫描黑白线宽度一致的方波信号,因此系统的任务是首先测量扫描音符获取方波高低电平的宽度,然后分析被扫描乐谱的特征,经过比对后得出音符名,进而发声。系统的总体结构如图1所示。其中,单片机部分的工作流程分为预处理(归一化)、特征提取、音符识别、频率发声等环节。

图1 系统总体结构

2 工作原理

2.1 图像采集

2.1.1 条码扫描器工作原理

激光条码扫描器由激光发生器、接收器、信号整形部分、单片机处理模块等部分组成[1-2]。激光器发出的红激光经条码反射后被光电转换器接收,产生随条码黑白条纹变化的信号,再经过整形放大电路,产生标准逻辑电平的可变脉冲宽度方波。其结构如图2所示[1]。

脉冲宽度为了将条码扫描器改造成可以使用的采集模块,经过示波器的检测,找到了整形信号输出点、时钟信号输出点、按键控制信号输出点三个重要的信号点,并将扫描器的电源线和地线用排线一并引出。 扫描空五线时的信号波形如图3所示,结果清晰,高低电平分别代表白线和黑线,并且宽度与五线完全一致。

2.1.2 条码扫描器与AVR单片机接口

表1列出了激光条码扫描器与ATmega16的连接。

2.1.3 单片机数据采集

ATmega16单片机的定时器T1具有输入捕捉功能[3]:当输入捕捉引脚上的电位按照预设要求变化时,在中断使能条件下输入捕捉中断将被触发,并将该时刻定时器寄存器的值存储到输入捕捉寄存器中。利用这个特性可以方便地测量方波高电平和低电平的持续时间。需要注意的细节是,每次进入中断都必须将定时寄存器清零,以保证每次从零开始计时,使各数据有相同基准。

INT0连接了按键信号,每次按键信号到来之后数据输出由INT1接入的时钟信号同步,并在INT1中断服务子程序中打开T1的输入捕捉功能,开始采集数据。这相当于利用中断的先后顺序控制程序流程。相比于普通的主程序控制流,这种流程控制起来更为灵活,执行效率更高,避免了不必要的主程序等待时间。这三个中断相互控制的流程如图4所示。

表1 条码扫描器与单片机信号连接表

[3]提供了对AVR单片机C语言编程的指导。

2.2 预处理

在同一次扫描中,采集到的数字脉冲信号会发生小范围抖动,因此需要将其预处理变换为标准的定值序列,以克服因方波高低电平持续时间变化对识别造成的不利影响。

预处理的方法是,首先寻找有效数据区间内的最小非零值并将其作为当前采集数据的基准值;然后将所有值除以该基准值,实现归一化。虽然由于每次扫描高度、角度不同引起绝对数值偏差,但归一后的数值保持稳定。

2.3 特征提取

考虑到采集的数据对应于五线谱中一条纵向切线的信息,相当于一维图像,包含的信息量小,因此选择了针对一维图像识别的比较匹配算法。特征提取从一维信息入手。图5所示为音符扫描图。

通过对实际采集的数值进行分析发现,高低电平持续时间可以分为3档,若分别予以标记为0、1、2,即构成一组三进制序列。规定这组序列从左到右表示一个三进制数值,将其转换成相应的十进制数,就实现了音符的特征提取。得到的十进制数值就是该音符的特征值。

2.4 音符识别

完成特征提取后,即可建立一张音符与特征值的对应表,如表2所示。根据比较匹配即可识别出正确的音符。

表2 音符编码表

2.5 输出

音高由发声部件的频率决定,表3表示为音符频率参照表。根据音符名,通过在PA0口产生与指定音符所表示的声音频率相同的方波,就能实现对音符的发声。硬件上通过PA0口外接耳机得到相应声音,并在发声期间屏蔽其他进程。

表3 音符频率参照表

发声子程序被主程序调用时,音符码将以参数形式传入子程序。完成局部变量初始化后,首先通过预定义的音符频率表得到相应音符的频率,然后通过该频率值换算得到计数器计数值,利用比较匹配模式就可以产生所需方波。

进入中断服务程序后,当达到发声时限时清除使能,屏蔽计时器中断,解除对其他进程的屏蔽。

3 调试分析与改进方法

测试时使用标准乐谱,包含两个音阶的1/4音符。结果显示,所有音符都可以正常读出,但是识别率不够高。使用串口分析图像采集阶段的数据,发现是数据库中的音符信息出现了误差:分析同一个音符在不同扫描条件下的结果,发现某一位的数据与数据表不符。因此,还需要将同一个音符在不同扫描条件下得到的全部结果补充到数据库中。修改后,音符的识别率大大提升,经实测,识别率在75%以上。

该系统存在如下限制条件与不足:每次只能识别单个音符,无法实现整行读取连续发音,需要外接电源。如果改用摄像头采集数据,预期可以获得识别乐谱演奏乐曲的高级效果。

参考文献

[1]田海军,兰建军,刘彦臣.基于单片机的条形码数据采集系统[J].北华大学学报(自然科学版),2005,6(6):568-570.

[2]沈群群.单片机在条形码扫描仪中的应用[J].湖州职业技术学院学报,2005,3(2):89-91.

[3]巴雷特,古尔.嵌入式C编程与Atmel AVR[M].周俊杰,译.北京:清华大学出版社,2003.

猜你喜欢
扫描器五线谱方波
便携式多功能频率计的设计与实现
天然的五线谱
测绘技术在土地资源管理中的应用
一种基于555定时器的方波产生电路设计
孩子们的五线谱
一种防垢除垢的变频电磁场发生装置
SICK TIM351迷你型激光扫描器
戒指扫描器
在留守儿童的“五线谱”上谱入浓浓的关爱
利用彩色扫描器对有色污布测色及对洗净性进行评价