基于子频带能量特征提取的汽车鸣笛声识别*

2023-09-20 06:50侯晓飞穆瑞林周晋贾自杰
应用声学 2023年5期
关键词:鸣笛频带特征值

侯晓飞 穆瑞林周晋 贾自杰

(1 天津科技大学机械工程学院 天津 300222)

(2 天津市轻工与食品工程机械装备集成设计与在线监控重点实验室 天津 300222)

(3 天津市房地产市场服务中心 天津 300222)

0 引言

近年来,城市中违法乱鸣笛行为随着汽车数量的增加而逐渐增多。鸣笛声制造交通噪声的同时,给人们的生产和生活也带来了巨大的影响,尤其是在学校、医院、居民区等这些需要安静的区域。因此,对乱鸣笛行为的治理非常有必要。车辆的识别与分类在创建城市智能交通系统中至关重要,在传统的鸣笛声识别分类中往往采用的是人工监测的方法,此种方法误检率较高,且依赖人工复核。目前车辆识别与分类研究主要集中于视觉方法,对车辆完整的声学识别与分类研究较少。

随着声学研究的深入,为了提高鸣笛声的检测效率,在鸣笛声分类识别方面,能量阈值法、互谱矩阵法以及特征提取法等逐渐被应用在鸣笛声识别当中,例如刘建平等[1]根据信号短时能量与过零率乘积的双门限检测算法对鸣笛声与非鸣笛声进行了识别;孙懋珩等[2]提出了一种基于传声器阵列和闭式球形插值法的汽车鸣笛声识别系统,但是此种方法只能单方面地确定目标车辆的位置,且会存在较多误判。神经网络近些年受到了研究者越来越多的重视,侍艳华等[3]设计了梅尔频率倒谱系数(Mel-frequency cepstrum coefficient,MFCC)和卷积神经网络识别鸣笛声的方法;班琦等[4]在建立鸣笛声样本的基础上利用改进的BP 神经网络算法识别了鸣笛声;白琳等[5]将小波变换[6]与BP 神经网络相结合实现了车辆声信号的分类。

在鸣笛声识别分类中,利用神经网络识别时效率与准确率会受到不同特征提取的影响,例如郑皓[7]将频谱特征作为卷积深度置信网络(Convolutional deep belief networks,CDBN)的输入进行训练后得到鸣笛声的CDBN特征,与MFCC特征进行对比分析后发现利用CDBN 特征进行识别的准确率更高。可知鸣笛声识别中提取何种特征进行识别仍是一项关键。

在违法鸣笛声监管过程中通常利用传声器阵列进行鸣笛声定位[8],但随着距离的增加,可能会产生定位误差,而两辆车如果并排行驶且横向距离较近时,由于定位误差的存在,可能会存在车辆之间的误判。为了更准确地识别违法鸣笛声,提高交通执法效率,本文提出了一种基于子频带能量特征提取的汽车鸣笛声识别与分类的方法。本方法对鸣笛声的时频谱特征进行分析与提取,结合可变学习速率的BP 神经网络进行鸣笛声识别,可对不同车型的鸣笛声进行有效区分,获取违法鸣笛车辆的完整声学信息,以作为违法鸣笛的辅助判断和处罚依据。利用车辆的鸣笛声特征对鸣笛车辆车型进行识别分类,其目的是在违法鸣笛声治理过程中进行辅助监管与判断,当有异议时,可通过复核对比鸣笛声定位与鸣笛声车型特征两种依据进行更加科学准确的判断,从而减少鸣笛噪声,对道路交通噪声污染治理具有积极意义。

1 鸣笛声特征提取与分类方法

1.1 鸣笛声特征提取

城市道路中比较常见的鸣笛声是由电喇叭发出的[9],因此在研究时以小汽车上装载的电喇叭发出的鸣笛声为主,主要频率集中在400~5000 Hz之间。

进一步将鸣笛声信号做短时傅里叶变换得到鸣笛声的时频图,如图1所示。

图1 鸣笛声时频图Fig.1 Time-frequency spectrum of the car whistle

进行鸣笛声识别分类之前,需要对采集到的声音样本进行有效声音段截取以保留鸣笛声信号的主要频率。采用短时能量法[10]确定鸣笛声信号有效声音段,短时能量法计算式如(1)所示:

式(1)中,x(i)为传声器采集测量信号,EK为第K帧的短时能量。

为了进一步对鸣笛声进行分析,并将不同的鸣笛声分类,采用子频带能量法提取特征的方法进行鸣笛声识别。通过划分声信号频谱子频带,对子频带内的频率信息进行分析,找出鸣笛声信号在各个子频带与其他声音不同的特征,即可利用此种特征进行鸣笛声识别。

首先将鸣笛声的全频带进行划分,划分为N个子频带。在对鸣笛声频带进行划分时,为了减小计算量,并将鸣笛声信号的子频带能量特征完整提取,可将信号划分为32 个子频带。为了保证各频率能量不被泄漏,相邻两个子频带之间的重合度为50%。每一段子频带上能量初始值等于时频图能量值,如式(2)所示:

式(2)中,P(f)为每个子频带内每个频率f的能量,fl为子频带起始频率,fh子频带截止频率。

子频带的起始和截止频率计算式如式(3)、式(4)所示:

其中,fl(k)、fh(k)为第k个子频带的起始与截止频率,fL、fH为鸣笛声整个频率段的起始与截止频率,N为子频带总个数。

进一步将每个子频带内包络的各频率段分为n段并对每一段能量值进行加窗处理,保证各频率的能量不泄漏且输入到神经网络的特征值矩阵容易计算,在取值时数值等于参数N。求取子频带中每一段加窗后的平均能量,如式(5)所示:

式(5)中,Ek(i)为第k段子频带内第i段包含频率的能量进行加窗后的平均能量,Fi(j)为第k个子频带内第i段对应的各频率j的能量值,h(j)为窗函数在频率j对应的系数,n为第k个频带内加窗的个数。

将第k个子频带中分成的n个窗的n个平均能量构建为一个行向量,共N个行向量,将N个子频带的第i段平均能量值构建为一个列向量,共n个列向量。对所有的n个列向量进行叠加处理,构建出同种鸣笛声的N ×n维特征值矩阵。

式(6)中,C是同种鸣笛声的特征值矩阵,C(i)为子频带中的第i段平均能量值的列向量。

利用式(6)对图1 中鸣笛声信号时频图进行子频带能量特征处理,提取特征值矩阵并进行归一化处理,特征值矩阵包络形成的区域曲线如图2所示。

图2 鸣笛声子频带能量特征包络曲线Fig.2 Envelope curve of whistle sub-band energy characteristic

由图2 中可以看出,按照上述方法进行特征点提取后,不同种鸣笛声之间的子频带能量特征分布具有较大的差异,具体表现为鸣笛声子频带平均能量归一化后峰值个数、子频带出现的频率位置以及包络形成区域均不相同。因此可利用提取子频带能量特征的方法可以进行鸣笛声的识别以及不同类型鸣笛声的分类。

1.2 鸣笛声识别与分类

BP 神经网络应用广泛,具有自适应强的能力[11],本文构建3 层BP 神经网络来对鸣笛声进行识别分类。输入层提取子频带能量特征归一化后的特征值矩阵作为神经网络的输入层参数;中间隐含层对输入的特征值矩阵进行学习与训练,学习过程是通过中间层对输入特征样本的不断逼近来调整神经网络权值和偏置值的过程,如式(7)所示:

式(7)中,wij为神经元j到神经元i的连接权值,di为神经元的期望输出,yi为神经元的实际输出,α为学习速率。

为了提高算法的收敛速度,在学习过程中将学习速率按式(8)进行调整,以减小神经网络学习过程中的迭代次数。

式(8)中,αk为第k次学习速率,α0为初始学习速率,αL为最小学习速率,N为迭代总次数。

为了加快迭代速度,减小迭代次数,神经元激活函数选择为tansig函数,如式(9)所示:

输出层在被激活之后,将中间层的实际输出与期望输出进行比较,在误差达到最小时将结果输出。利用BP 神经网络对鸣笛声识别分类时,将采集到的鸣笛声利用子频带能量法提取特征值矩阵后输入到训练好的神经网络中进行判别,判断为何种鸣笛声并输出。鸣笛声分类的过程如图3所示。

图3 鸣笛声分类过程Fig.3 Classification process of car whistle

2 实验与分析

为了验证子频带能量特征提取法的准确性,在实验时首先进行鸣笛声与非鸣笛声的识别。其次在鸣笛声分类实验时,以福特、丰田、别克、大众、吉利、比亚迪、东风悦达、本田共8种车型为研究对象进行分类实验。

2.1 鸣笛声与非鸣笛声识别实验

首先将鸣笛声与非鸣笛声进行区分,利用STM32 开发的控制系统控制微型传声器采集鸣笛声信号和非鸣笛声信号。在采集时,非鸣笛声信号采集了3 种常见声音,分别是小汽车行驶经过时的道路噪声、鸟鸣声和犬吠声。图4 为鸣笛声与道路噪声、犬吠声和鸟鸣声的时频图的对比。

图4 鸣笛声与非鸣笛声对比Fig.4 Compaction the whistle with the other sounds

从图4中可以看出:鸣笛声倍频程明显,声能分布较为集中,呈现出典型的脉冲信号特征;而其他非鸣笛声频率分布比较集中,声能分布相对分散。

选择鸣笛声样本数量20 个,道路噪声、鸟鸣声和犬吠声样本各10 个,利用子频带能量特征提取后进行鸣笛声的识别。图5 为鸣笛声与非鸣笛声的识别结果。识别率为采集的鸣笛声信号特征矩阵与训练好的纯净的鸣笛声信号特征矩阵的商值,如式(10)所示:

图5 鸣笛声识别率Fig.5 Recognition rate of car whistles

式(10)中,R为识别率;Sc为提取的实际采集的鸣笛声信号的子频带能量特征值矩阵;Pc为神经网络训练好的纯净鸣笛声的特征值矩阵。

图5 实验结果表明,利用子频带能量特征提取的方法可将鸣笛声与非鸣笛声进行识别,识别率可高达94.889%。与文献[1]中利用双门限检测与频谱间隔进行笛声识别的方法相比,本文实现了鸣笛声与非鸣笛声之间的准确识别。与文献[3]中利用MFCC 特征提取方法相比,本文所提出的特征提取方法,完成了鸣笛声与非鸣笛声之间的识别,并对不同鸣笛声进行分类,使平均识别分类正确率达到了89.718%以上。

2.2 神经网络验证实验

本文构建3 层BP 神经网络进行鸣笛声的识别分类,学习训练之前需配置每一层的参数。通过子频带能量特征提取获得的鸣笛声声频的32 维特征向量参数,作为输入层的输入参数。隐含层的神经元个数为12 个,神经元激活函数为tansig 函数。本文对8 种车型鸣笛声进行了实验研究,因此输出层的神经元个数为8 个,对应输出的类别有8 种可能性,即输出设置8 种对应的标签。本文以上述8种车型各20 条样本分为训练组15 条和测试组5 条对设计的神经网络进行准确性实验验证。

首先训练组样本提取子频带能量特征点后输入到BP 神经网络进行学习训练,并将学习好的神经网络保存。然后将测试组样本进行测试,验证神经网络的准确性,验证结果如图6 所示。识别率是每种车型测试组样本提取的特征值与神经网络训练好的学习组样本对应的特征值的比。

图6 鸣笛声测试识别结果Fig.6 Result of whistle test and identification

实验结果表明,利用子频带能量特征提取方法可以实现对不同种鸣笛声的识别与分类,平均识别率可达93.626%。

在学习训练过程中利用改进可变学习速率的BP 神经网络同固定学习速率的神经网络进行迭代次数的比较,迭代次数如表1所示。

表1 迭代次数比较Table 1 Comparison of iterations

可以看出利用改进的可变学习速率的神经网络进行鸣笛声分类识别时,神经网络的迭代次数明显减少,提高了神经网络的学习效率。

2.3 鸣笛声识别实验

判断为汽车鸣笛声之后,将不同类型的鸣笛声进行区分,以达到对鸣笛车辆进行辅助判断的目的。图7 为鸣笛声分类的实验场景。在不同的位置通过STM32 控制器开发的系统控制微型传声器采集鸣笛声信号,并通过功率放大器将信号放大,采样频率为10 kHz。

图7 鸣笛声分类实验场景Fig.7 Classification experimental scene

进一步将上述8 种车型的其他鸣笛声信号共160 条样本进行识别分类鸣笛声的实验。在本节中定义识别正确率为样本的准确识别个数与识别总个数的比值。实验结果如表2所示。

表2 鸣笛声识别分类结果Table 2 Result of classification of car whistles

表2 实验结果表明,丰田和吉利两种车型鸣笛声的所有样本中提取出的特征点较少,因此在识别时正确率也较小,平均正确识别率只有83.334%和82.608%;而大众和比亚迪两种车型鸣笛声样本提取叠加出的特征点较多,因此识别率也随之增加,识别分类正确率最大达到了92.308%和93.75%。与文献[4]相比较,本文所提出的子频带能量特征提取方法应用在鸣笛声分类上,使分类正确率有了一定的提升,8 种车型的最大识别正确率达到了90%以上。与文献[5]中利用小波变换提取特征将小轿车与大客车与货车进行区分相比较,本文提出的方法进一步完成了8 种小轿车鸣笛声之间的分类,且平均识别正确率达到了89.718%。结果表明,本文所提出的此种子频带能量特征提取方法是有效的。

通过移动传声器改变x坐标和y坐标到声源的距离,从而使声源到传声器的距离分别达到为5 m、8 m、10 m、20 m,然后验证测试距离对识别分类正确率的影响。测试过程中,环境噪声在55 dB左右。

声源到传声器距离与识别分类正确率的关系如图8所示。

图8 识别正确率与测试距离关系Fig.8 Relationship of the accuracy with test distance

图8 实验结果表明,测试距离对识别正确率有一定的影响。10 m 内的识别正确率相差较小,基本保持在80%~90%之间;而10 m和20 m 处识别正确率相差较大,最高只能达到80%。识别分类正确率降低的原因如下:(1) 随着距离的增加,鸣笛声声能产生了明显的衰减,从而降低了识别正确率。(2) 在接收过程中会不可避免地采集到环境其他声音,距离越远,采集到的非相关噪声便会越多,从而导致识别正确率减小。

为了降低遗漏检测的可能,将在距离10 m处采集的鸣笛声信号与采集的非鸣笛声信号按照一定的,设置信噪比分别为0 dB、6 dB、15 dB、20 dB。在环境噪声中验证噪声对分类识别正确率的影响。噪声对识别正确率的影响关系如图9所示。

图9 识别正确率与噪声关系Fig.9 Relationship of the accuracy with the noise

图9 实验结果表明,噪声对识别正确率有一定的影响。当信噪比较小时,识别正确率明显降低,在信噪比为0 dB 时平均识别正确率为71.26%;随着信噪比的增大,识别正确率也随之增大,且趋于稳定,信噪比为20 dB 时识别正确率最大可达到93.31%。后续可通过对采集的声音进行滤波降噪和声音增强处理来提高鸣笛声的识别正确率。

3 结论

为了在鸣笛声治理过程中提高鸣笛声的识别正确率,对违法鸣笛车辆进行辅助监管,提出了一种子频带能量特征提取法。本方法对鸣笛声信号时频谱图进行特征提取,利用可变学习速率的BP 神经网络对特征值矩阵进行学习训练。对此方法进行了实验验证,实验结果表明子频带能量特征提取法可应用于鸣笛声的识别与分类。鸣笛声与非鸣笛声之间的识别率达到了94.889%,并且不同鸣笛声的分类正确率最大达到了93.75%。在不同距离和不同噪声环境下对此方法进行了初步验证,验证了子频带能量特征提取法的有效性。本方法为鸣笛声的识别分类提供了一种新思路。但本文所述方法尚有不足之处,且对同种喇叭发出的鸣笛声识别分类仍需做大量实验进行验证,后续可进一步采集更多车型的鸣笛声以及同种品牌车型的鸣笛声构建鸣笛声样本库,并在更复杂的环境中验证其准确性与稳定性,为提升识别正确率做进一步研究分析。

猜你喜欢
鸣笛频带特征值
一类带强制位势的p-Laplace特征值问题
朋友圈
单圈图关联矩阵的特征值
Wi-Fi网络中5G和2.4G是什么?有何区别?
单音及部分频带干扰下DSSS系统性能分析
双频带隔板极化器
基于商奇异值分解的一类二次特征值反问题
调谐放大器通频带的计算及应用
关于两个M-矩阵Hadamard积的特征值的新估计
加拿大司机很少鸣笛