APP下载

基于BP和ARM的发动机声音识别系统

2012-12-25

黑龙江科技大学学报 2012年5期
关键词:特征参数嵌入式神经网络

姜 愉

(钦州学院 数学与计算机科学学院,广西 钦州 535000)

基于BP和ARM的发动机声音识别系统

姜 愉

(钦州学院 数学与计算机科学学院,广西 钦州 535000)

为解决高速公路收费站及大型停车收费场自动收费问题,依据BP神经网络识别理论,设计了一个基于ARM9及嵌入式Linux系统的发动机声音识别系统。选用S3C2410微处理器和嵌入式Linux操作系统,把交叉编译后的发动机声音识别C语言程序移植到操作系统的文件中,实现了发动机声音实时识别功能,给出了系统整体软硬件结构框架以及实时输入发动机声音判别汽车类型的识别结果。现场实验证实了该系统的准确性、实时性和有效性。

BP;嵌入式系统;S3C2410处理器;发动机声音;识别

随着我国高速公路和汽车技术的迅猛发展,汽车流动量越来越大,大型收费停车场及公路收费站越来越多,人工收费对人力物力消耗巨大且速度较慢,亟需一种行之有效的智能管理系统。因此,笔者研究了发动机声音信号频谱特征,针对该特性选择BP作为识别机,同时通过离线仿真选取适合特征参数并确定BP网络参数,最后完成基于BP神经网络、ARM9及嵌入式Linux系统的发动机声音识别系统。以期通过检测发动机声音,有效识别驶过的汽车类型,在高速公路收费站及大规模停车收费场起到不停车自动准确收费的效果。

1 声音识别系统基本原理

系统采用误差反向传播BP(Back Propagation)模型作为发动机声音识别模型。声音识别主要包括训练及识别两部分。训练阶段主要通过对数据库样本声音进行训练,形成神经网络模型。识别阶段则是把发动机声音输入到训练形成的神经网络中输出识别结果。发动机识别的系统框图如图1所示。

图1 声音识别系统Fig.1 Sound recognition system

1.1 声音信号的预处理

声音信号的预处理包括:声音采样、模/数(A/D)转换、分帧、加窗、端点检测[1]。

A/D设定的采样频率是16 kHz,量化精度是16位。

帧长取1 024点,帧移取400点。

加窗:采用哈明窗进行发动机声音加窗。

系统采用双门限的端点检测方法,即通过声音信号的短时能量和过零率来进行端点检测。

1.2 声音特征参数的提取

选取特征参数主要考虑识别效果及系统硬件存储量限制两方面。文中选用Mel频率倒谱系数MFCC(Mel Frequency Cepstrum Coefficient)[2]作为特征参数。信号的MFCC主要反映声音静态特征,具备较好的被识别能力和抗噪能力。由于发动机声音为规则噪音,其静态特征具备足够的被识别能力,系统中特征矢量为12阶倒谱系数。

1.3 BP神经网络算法的实现

系统采用BP(Back Propagation)神经网络作为训练识别网络。BP神经网又称误差反向传播算法[3],是一种多层前馈型的神经网络。图2为3层神经网络结构图,其算法的基本步骤为:

步骤1初始化各层网络的权值为较小的随机数,依次输入P个学习样本。设当前输入的为第P个样本。依次计算出各层的输出。

步骤2求各层的反传误差δ,期望输出d,实际输出值y,及输出层(第3层)节点数m,中间隐层节点数n1,输入层(第1层)节点数n2:

步骤3记录已经学习过的样本数P。如果p<P,转到步骤1继续计算,如果p=P按权值修正公式修正各层的权值ω。η为学习速率。引入动量项α来加快收敛,公式为

系统中通过Matlab模拟仿真,选择适合的特征参数。采用期望最小均方误差为0.001,输入采用12节点,为12维MFCC特征参数,隐层为70个,动量因子为0.8,学习速率为0.1(学习速率只要在可允许速度的情况下,一般越小越好)。输出4个节点:分别为小机车(1,0,0,0),面包车(0,1,0,0),公交车(0,0,1,0)和重型汽车(0,0,0,1)。

图2 3层BP神经网络结构Fig.2 Three layer BP block diagram

1.4 发动机声谱分析

声谱图本身反应语音信号的动态频谱特性,同时反映了时域的变化,在声音分析中有重大的使用价值[4]。图3为普通语音的语谱图,图4为发动机声谱图。

图3 普通语谱图Fig.3 Normal voice spectrum

图4 发动机声谱图Fig.4 Engine sound spectrum

由于发动机声谱随时间变化很小,声谱是平稳的(图4)。因此,识别时选择单帧识别,在满足实时识别的同时对识别结果影响很小。

2 声音识别系统在嵌入式平台的实现

2.1 硬件构成

该系统的硬件结构如图5所示。整个系统采用三星S3C2410作为核心微处理器,UDA1341TS作音频解码芯片,接口电路及储存电路等来完成发动机声音识别过程。电源电压12 V。芯片内核为ARM920T,微处理器主频为203 MHz,16/32位;配有64 M的外部存储器,以及64 M的NAND Flash;还集成有网络接口、串口、USB接口、LCD及触摸屏接口、存储接口、复位电路、音频接口,同时支持JTAG下载调试接口等。

图5 系统硬件结构Fig.5 System hardware structure

飞利浦公司生产的UDA1341TS芯片是一款功耗低且全双工的音频编解码专用芯片,集成ADC及DAC在一块芯片上,模拟前端完全集成,自身包括数字自动增益控制(AGC)和可编程增益控制(PGA),有强大的数字信号处理(DSP)性能。输入声音信号为模拟信号,系统采用UDA1341TS芯片完成A/D转换。输入输出部分分别由话筒及扬声器完成。发动机声音模拟信号经话筒输入后进行预处理:包括A/D转换以及自动增益控制等。存储部分采用2片32 M容量的SDRAM芯片及64 M的NAND Flash组成。

2.2 工作原理

文中数据库选择车况较新、车辆负载较少、车速较慢较平稳的情况下所采集的发动机声音。为防止干扰音影响,录音采用录音笔指向车辆进行录音,且录音距离为录音笔距车辆1~4 m。

基于BP技术的识别系统需要一个较大的声音库,训练阶段需要较大的运算量。识别模型需要的存储量及匹配计算的运算量相对较小,如果训练及识别都采用ARM硬件实现则运算速度和运算精度都会较慢且对存储量要求较大。同时受运算速度及硬件资源限制,更重要的是硬件为16/32位运算精度,PC机运算精度可达到64位,由此系统的发动机声音训练阶段在PC机上应用Matlab仿真完成,声音数据用录音笔(采样频率 16 kHz,量化精度16 bits)大量采集,采用单声道 PCM(Pulse Code Modulation)格式。声音数据经过预处理,提取12维MFCC特征参数,然后用BP进行训练得到识别模型,并将训练结果保存嵌入式Linux操作系统与算法实现的C程序相同的目录下,以便在系统识别阶段进行模型的读取。声音识别阶段则是将从麦克风输入的声音信号经UDA1341TS(音频数字信号译码器)处理后,通过相应程序提取特征参数,将所得特征参数与训练所得模型对比,找出最匹配(相近)的声音作为识别结果。

2.3 系统运行

发动机声音识别算法完全采用标准C语言编写。嵌入式Linux系统按软件角度可分引导加载程序(Boot Loader)、内核文件、文件系统及应用程序4个部分:引导加载程序采用vivi;内核采用Linux-2.6;将声音识别C语言程序运用make工具进行交叉编译,采用arm-linux-gcc交叉编译器,并将声音识别程序添加到 cramfs根文件系统中;UDA1341TS作为音频驱动程序[5],把驱动程序放在Linux-2.6内核静态编译。

做好软件准备工作后,用 JTAG烧写工具在ARM开发板上依次烧写vivi引导加载程序、Linux内核及cramfs根文件系统,烧写完毕后需重新启动开发板,Linux操作系统可以进行发动机声音实时识别实验。

3 实验结果和分析

实验是在车辆相对较少、车速较慢的地点进行的,在发动机声音训练阶段采用的4组数据分别为小汽车、面包车、公共汽车、重型汽车。每组400个样本声音,其中200个用作训练集,其余200个用作测试集。识别从麦克风实时输入的发动机声音信号。

由于车辆实时通过时时间较短,且发动机声谱平稳,分别得到采集1帧数据及3帧数据(每帧分别识取2帧及以上为同一结果)情况下的识别结果。由表1可知,随着识别时所取帧数的增加,识别率q会相应增加,但所需的内存及识别时间也会随之增加,所以根据不同的车速场所可采取不同的帧数进行识别。

表1 取不同帧数发动机声音实时识别结果及速率Talbe 1 Different frames real time srecognition result and rates

由于单帧识别可达到较高的识别率,单帧采集时间为1 024点(64 ms),识别速度v为8 ms,可以适应高速公路车速较快的情况;又因其采用直接读取识别模型,同时数据采集时只采集1帧,大量节约内存及计算量,满足了嵌入式设备成本低、消耗少、体积小、性能高的要求。因此,该系统是通过发动机声音识别车辆的较好选择。

4 结束语

笔者根据发动机声音信号的特点,利用BP神经网络算法,在ARM平台上设计了一个嵌入式发动机声音实时识别系统。在实验条件下,该系统单帧识别率在95%以上,且识别速度仅为8 ms,表明该系统准确有效。该系统可用于智能交通及停车场自动收费系统中,同时也可考虑应用于汽车的黑匣子。目前,该系统已在ARM平台上实现并进行了综合评估。未来的工作将尝试降低环境噪声对端点检测准确性的影响以提高识别性能;并改进识别算法以适应多辆车同时通过的情形。

[1]赵 力.语音信号处理[M].北京:机械工业出版社,2010.

[2]江星华,李 应.一种基于MFCC的音频数据检索方法[J].计算机与数字工程,2008(9):19-21.

[3]辛 鑫.基于自制嵌入式ARM9平台的Linux-2.6移植[D].武汉:华中科技大学,2008.

[4]李玉萍,朴春俊,韩永成.一种带噪语音信号端点检测方法研究[J].电子测试,2008(2):14-17.

[5]赵明明,王志胜.参数自整定PID控制器设计与仿真[J].工业控制计算机,2010,23(2):72-73.

Voice recognition engine based on BP’s system in realization of ARM

JIANG Yu
(School of Mathematics& Computer Science,Qinzhou University,Qinzhou 535000,China)

Aimed at addressing automatic fee charging of highway toll stations and large-scale rechargeable parking lots,this paper introduces the design of a embedded speech recognition system based on ARM9 and embedded Linux system of the engine sound by analyzing the BP neural network recognition theory.The design consisting of S3C2410 microprocessors and Linux operating systems involves transplanting the C language of speech recognition program to the embedded Linux operating system’s file system when cross-compiled.The paper describes the system’s hardware and software framework,and offers the experiments results produced by real-time recognition of the car type by the engine sound.The results prove its accuracy,real-time and validity.

BP;embedded systems;S3C2410 processor;engine sound;recognition

TP391.4

A

1671-0118(2012)05-0533-04

2012-08-21

姜 愉(1982-),男,黑龙江省克山人,助教,硕士,研究方向:信号处理,E-mail:63131758@qq.com。

(编辑 王 冬)

猜你喜欢

特征参数嵌入式神经网络
故障诊断中信号特征参数择取方法
基于特征参数化的木工CAD/CAM系统
神经网络抑制无线通信干扰探究
搭建基于Qt的嵌入式开发平台
基于PSO-VMD的齿轮特征参数提取方法研究
嵌入式软PLC在电镀生产流程控制系统中的应用
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用
统计特征参数及多分类SVM的局部放电类型识别
基于支持向量机回归和RBF神经网络的PID整定