基于梅尔频率倒谱系数和支持向量机的汽车鸣喇叭声识别
2021-05-29黄智鹏
陈 东, 黄智鹏
(华南理工大学机械与汽车工程学院,广州 510640)
在日趋繁忙的城市交通中,由于驾驶员缺乏环境保护意识,在市区内频繁使用汽车喇叭,给居民的日常生活带来了很大的困扰,尤其是相关重点区域,比如在学校、医院与居民区周围。因此交管和环境保护部门开始在这些路段、场所安装违法鸣喇叭辅助执法设备,该设备通过实时识别城市交通中汽车鸣喇叭事件的发生,将系统识别出的汽车违法鸣喇叭音视频资料作为执法的有效证据进行上传。其中,准确高效地在城市交通噪声里,识别出汽车鸣喇叭事件发生的方法十分重要。
目前,中国在汽车鸣喇叭识别这方面的研究主要有:蒋翠清等[1]提取音频信号的梅尔频率倒谱系数(Mel frequency cepstrum coefficient,MFCC)与自相关函数(auto-correlation function,ACF)方差组合成混合特征,使用高斯混合模型(gaussian mixture model,GMM)进行汽车喇叭声的建模和识别,研究了城市道路的喇叭和非喇叭识别率;郑皓等[2]利用深度神经网络的非线性建模能力和特征提取能力,提取多帧音频信号的MFCC及一阶、二阶差分系数,将其组合成特征向量块作为(deep belief networks,DBN)网络的输入层,对10种不同汽车的喇叭声样本进行分类;张铁成[3]采用BP(back propagation)神经网络作为喇叭和非喇叭声音的二分类识别器,研究了MFCC及其一阶差分系数和峰度、几何算术平均值、子带能量在不同组合条件下的识别效果,测试了汽车鸣喇叭声在低信噪比条件下的识别率。这些研究都有使用语音识别领域中的MFCC特征提取技术,但没有根据汽车鸣喇叭声的特点作进一步优化,并且识别的情景区别比较大。
现基于MFCC和支持向量机提出一种汽车鸣喇叭识别方法。采用支持向量机(support vector machine,SVM)作为喇叭声和交通噪声的二分类器,从汽车喇叭声的特点出发,分析传统MFCC特征中梅尔滤波器个数及特征维数对识别效果的影响。其中,以干净的常见汽车喇叭声和交通噪声训练SVM分类器模型,用两者按不同信噪比随机混合后的喇叭声,验证汽车鸣喇叭在不同背景及不同信噪比条件下的仿真识别效果,再用实际路况中带有交通噪声干扰的喇叭声验证模型的路测识别效果。
1 汽车喇叭声及交通噪声分析
汽车喇叭是自激振荡的电声装置,城市交通中常见的汽车喇叭主要有:盆状电喇叭、蜗牛型电喇叭、蜗牛型气喇叭以及筒状气喇叭,它们大多是电动驱动,靠铁芯和膜片的联系振动发声[4]。这些喇叭又分高音和低音版本,高音与低音喇叭的基频范围一般为240~600 Hz。通常情况下,汽车会配置高音和低音两个喇叭,也称双音喇叭,单音和三音的情况相对比较少。
交通噪声一般指机动车辆在城市交通中行驶产生的噪声。在此主要研究分析对环境要求较高的区域,如学校、医院与居民区周围的道路、红绿灯路口的交通噪声。这些交通噪声包括汽车发动机声、摩托车引擎声、汽车轮胎路面噪声、行人说话声、自行车铃铛声等。以下对汽车喇叭声和交通噪声中具有代表性的几种声音信号进行分析。
图1(a)是城市道路采集的汽车发动机声和行人说话声时频图,图1(b)是开阔区域采集的汽车静止状态下的蜗牛型双音喇叭噪声时频图。在图1(a)中,汽车发动机声信号范围是0~0.75 s,行人说话声信号范围是0.75~1.5 s,在图1(b)中,汽车鸣喇叭声信号范围是0.5~1.3 s,其余为背景噪声。从图1可以看出,语音信号随时间变化得比较快,具有很强的瞬态特点,汽车发动机噪声比语音信号平稳很多,而与测量传声器相对静止状态下的被测汽车喇叭声是稳态信号,比前两者更加平稳。而由于运动声源信号中广泛存在多普勒效应的影响[5],现主要研究在城市道路中与测量传声器相对静止及速度较低条件下的汽车鸣喇叭声,故仍将被测汽车喇叭声视作稳态信号。
图2和图3(a)分别是对应于图1中时间轴上A、B、C处,采样时间为128 ms的频谱图。从图2可以看出,汽车发动机噪声的能量分布主要在中低频部分,且包含了其运转产生的基频及其谐波波峰;语音信号的能量分布规律是由基频及其倍频形成的谐波波峰,也称共振峰。从图3中可以看出,汽车双音喇叭的能量分布为其双基频及多次倍频所形成的谐波波峰,相比于汽车发动机噪声更加具有规律性,并且其分布的频率范围比语音信号宽,能量集中在中低频部分。由于汽车喇叭结构的不同,相同的基频产生的谐波特征分布会有差别。汽车喇叭声的谐波特征分布特点,可以在特征提取时给予突出。
图1 汽车发动机、行人说话和汽车双音喇叭的时频图Fig.1 Spectrogram of car engine, pedestrian talk and car dual tone honking
图2 汽车发动机和行人说话声的频谱图Fig.2 Spectrum of car engine and pedestrian talk
图3 不同类型汽车喇叭声的频谱图Fig.3 Spectrum of different types of car honking
2 汽车鸣喇叭声的识别方法
汽车喇叭声信号识别方法如图4所示,主要包括将音频信号数据转换为特征向量的信号预处理和特征提取,以及对特征向量进行训练、识别的SVM特征分类器。
图4 汽车鸣喇叭声识别方法的流程图Fig.4 Flow chart of recognition method for car honking
2.1 信号预处理
预处理包括设置高通滤波器、归一化处理、预加重、分帧以及添加窗函数,其详细过程如下:
(1)高通滤波器。根据汽车喇叭声基频一般大于200 Hz的特点,设置一个200 Hz的高通数字滤波器,可以滤除大部分道路背景下的低频噪声,保证汽车喇叭声的绝大部分能量得以保留,从而提升低信噪比条件下的识别效果。
(2)归一化处理。归一化处理的目的是为了消除实验数据中不同音频样本的音强差别,将音频样本的幅值限制在[-1,1]。
(3)预加重。音频信号的预加重是使其通过一个高通滤波器,以损失部分低频能量来弥补其在高频部分的能量分布,用FIR(finite impulse response)滤波器表示为
X(n)=x(n)-αx(n-1)
(1)
式(1)中:α通常介于0.9~1.0;x(n)为原始信号序列;X(n)为预加重后的信号序列。
(4)分帧。由于采集的音频信号是非平稳信号,不能用处理平稳信号的方法直接对其进行信号处理和分析,但在10~30 ms的短时间内,其特性可以看作是稳态过程[6]。因此,可以将采集到的数据按一定的时间长度分成单帧数据块,并在相邻帧之间设置一定的重叠,以保证相邻帧之间参数过渡的平稳性。经过多次实验对比,选择64 ms帧长,相邻帧之间的重叠为50%。
(5)加窗。加窗函数的主要目的是为了减少信号在频谱中的泄漏,常用的窗函数有矩形窗、汉宁窗、汉明窗和布莱克曼窗,在此选用的窗函数为汉明窗[7]。
2.2 MFCC特征提取
MFCC特征提取技术是在倒谱技术上依据人耳的感知特性进行改进而提出的一种特征提取算法,它的稳定性与高识别率使得其在语音识别领域得到了广泛应用[8]。其最大特点是将信号从线性频域转换到梅尔域,梅尔频率fMel和线性频率f之间的转换关系为
(2)
汽车喇叭主要是针对人听觉开发的,其能量分布也主要在中低频,使用MFCC特征提取技术可以很好的突出其信号特征。其详细提取过程如下:
设经过预处理后的信号为Xi(n),i为帧数。
(1)快速傅里叶变换及谱线能量。使用快速傅里叶变换可以将信号帧从时域转换到频域,进一步平方可求得其谱线能量,计算公式为
(3)
式(3)中:N表示傅里叶变换的点数。
(2)梅尔滤波器及对数能量。使用梅尔域的三角滤波器组对谱线能量加权,再求对数能量,计算公式为
(4)
式(4)中:Hm(k)为三角滤波器函数;M表示三角滤波器的个数。由于MFCC的出现主要是针对语音信息的特征提取,传统MFCC的三角滤波器个数取 22~26。在此,为研究不同维数的MFCC特征对汽车鸣喇叭声识别效果的影响,使三角滤波器的个数为MFCC维数的2倍。
(3)离散余弦变换。采用的一维离散余弦变换(discrete cosine transform, DCT)公式[9]为
n=1,2,…,L
(5)
式(5)中:n为MFCC的维数。由于在本文中使用三角滤波器的个数为MFCC维数的2倍,所以L=M/2。
2.3 支持向量机
当前的分类识别算法有很多,具有代表性的有压缩感知、神经网络、稀疏表示分类及SVM算法等,各具特点,各有不足[10]。在小样本声音分类识别中,支持向量机具有较高的效率和识别率,并能巧妙的解决高维数,非线性,局部极小等实际问题。文中采用SVM算法作为分类算法,使用台湾大学林志仁等开发的LibSVM工具箱,在MATLAB软件环境下处理城市道路中汽车鸣喇叭和道路噪声的二分类问题。
使用SVM分类器时,核函数的选择直接决定特征空间的结构,影响分类结果[11],常用的核函数有线性核函数、多项式核函数、RBF(radial basis function)核函数以及Sigmoid核函数。为提高分类结果准确率,还可以使用网格搜索法对惩罚函数c和核函数参数g进行优化[12]。经过多次实验测试,常用的RBF核函数对汽车喇叭声识别效果最好,而惩罚函数c和核函数参数g按经验选取。
3 实验
3.1 实验过程
实验所处环境均为笔记本的Windows 7操作系统,CPU为i7-3720 QM,主频2.6 GHz,内存为8 GB,实验所用软件主要是MATIAB R2017a。本实验包括两部分:仿真实验和实测实验。
3.1.1 仿真实验数据
汽车喇叭声主要来源于网络,交通噪声来源于道路路口采集。将两者的样本导入Adobe Audition软件后,通过反复试听截取发声较好,且波形较为饱和的音频样本,选择采样率16 kHz保存作为后续实验数据。其中,汽车喇叭声包括盆型电喇叭、蜗牛型电喇叭、筒型气喇叭等,共50个样本,单个样本时长2 s左右,总时长100 s。交通噪声包括汽车发动机、摩托车引擎声、汽车轮胎路面噪声、行人对话、等其他噪声,共50个样本,单个样本时长2.5 s左右,总时长124 s。
将50个喇叭声样本和50个交通噪声样本分别按单个样本进行均分,得到相对独立的A、B两组数据。将A组中的80%数据作为训练集导入SVM分类器中训练分类器模型,剩余的20%作为验证集验证分类器模型。
信号去噪的基本思路为:首先,采用阈值法对每个IMF进行处理;其次,对处理后的IMF和RV进行信号叠加,得到去噪信号。阈值去噪法包括硬阈值去噪法和软阈值去噪法,硬阈值方法可以很好地保留图像边缘等局部特性,而软阈值处理可以使图像边缘更加平和。结合电压互感器量测数据及其在所提方法的应用特点,采用软阈值去噪法,具体步骤如下:
将B组中的50个交通噪声样本按式(6)信噪比的准则[11],随机添加至50个喇叭声样本中,获得信噪比分别为:0、5、10、15、20、25、30 dB条件下的喇叭声样本组C,喇叭声样本在不同信噪比(signal noise ratio, SNR)下添加的噪声一致。
(6)
式(6)中:Ps为信号的有效功率,kW;Pn为噪声的有效功率,kW。其中,将图1(a)中的汽车发动机噪声和行人对话声以信噪比为0混合到图1(b)中的汽车双音喇叭噪声后的时频图如图5所示。
3.1.2 实测实验数据
在城市道路路口采集了带有交通噪声干扰的汽车喇叭声样本60个,交通噪声样本30个,选择采样率16 kHz保存作为实验数据D组。
综上,实验数据分组如表1所示。将上述数据按帧长为2 048个样点,帧移为1 024个样点,以本文的方法提取特征向量。然后,以A组数据训练SVM分类器模型,B组数据测试分别获得模型的喇叭声和非喇叭声识别效果,C组数据测试获得喇叭声在不同信噪比和背景条件下的识别效果,D组数据测试分别获得实测条件下的喇叭声和非喇叭声识别效果。按上述进行5次实验,求其平均结果。
3.2 实验结果与分析
以误报率(false alarm rate,FAR)、漏报率(missed alarm rate,MAR)、不同信噪比条件下的识别率及其平均识别率作为评价指标。FAR是指系统将交通噪声帧识别成喇叭声帧占交通噪声总帧数的比率;MAR是指系统将喇叭声帧识别成交通噪声帧占喇叭声总帧数的比率。其中,汽车鸣喇叭声识别的准确率A与漏报率的关系为
A=1-MAR
(7)
图6为识别率随MFCC维数的变化。从图6可以看出,B组仿真数据的漏报率全为0,意味着系统能将喇叭声全部识别出来。这一方面是因为干净喇叭声和交通噪声的MFCC特征区别比较大,另外一方面是因为系统分类器模型是由A组数据训练获得,而B组与A组数据相似程度比较高导致。
图6 识别率随MFCC维数的变化Fig.6 Change of recognition rate with MFCC dimension
D组数据为城市道路采集的带交通噪声干扰的汽车鸣喇叭声。其漏报率随着MFCC维数的增加,呈下降趋势,说明通过增加梅尔滤波器组的个数可以使识别喇叭声的准确率上升。但同时,两组数据的误报率也都在逐渐上升,使得B组仿真数据在10维MFCC处达到最佳鸣笛识别效果,其准确率为100%;D组实测数据在31维处达到最佳鸣笛识别效果,其准确率为89%。说明由干净汽车喇叭声训练的SVM分类器模型能够识别实际道路上的喇叭噪声,但其准确率没有仿真数据高,除了因为噪声干扰比较严重,还由于喇叭声的模型库和实际道路上的车辆鸣笛声模型库有所差距导致。
图7是汽车喇叭声在不同背景干扰及不同信噪比条件下的仿真识别效果。从图7可以看出,随着喇叭声信噪比的降低,汽车鸣喇叭声的识别率均有所下降,MFCC 特征取低维数时的下降最明显,MFCC特征提升维数后没有出现识别率骤降的情况。结合图6发现,信噪比为0时的识别率提升了约50%的同时,其误报率也提升了约8%。说明梅尔滤波器组个数的增加在改善低信噪比识别率的同时也在加大背景噪声识别成喇叭声的概率。当信噪比在10 dB以上时,B组仿真数据中的喇叭噪声基本都能完全识别出来。
图7 识别率随信噪比和MFCC维数的变化Fig.7 Change of recognition rate with SNR and MFCC dimension
4 结论
(1)针对汽车喇叭声的谐波特征分布特点,提取了基于不同滤波器个数下的不同维数MFCC特征。以干净的汽车喇叭声和交通噪声训练SVM分类器模型,用两者按不同信噪比随机混合后的喇叭声,验证了汽车鸣喇叭在不同背景及不同信噪比条件下的仿真识别效果;再用实际路况中带有交通噪声干扰的喇叭声验证了分类器模型的有效性。
(2)通过增加MFCC特征中梅尔滤波器个数及特征维数可以有效提升识别效果,信噪比越低越明显。尽管这样会同时增加背景噪声被识别成喇叭声的概率,但是可以通过控制其大小以获得最佳识别效果。如本文中的仿真数据在10维MFCC处达到最佳鸣笛识别效果,其准确率为100%;实测数据在31维处达到最佳鸣笛识别效果,其准确率为89%。在违法鸣笛辅助执法设备中,汽车鸣喇叭声识别还需结合笛声定位和车牌识别才能实现完整的违法鸣笛抓拍,所以提升鸣喇叭声识别的准确率有利于该设备的运行。
综上所述,提出的识别方法简单有效,可以给违法鸣喇叭辅助执法设备的实时、高效、准确识别提供有力支撑。