具体实施方式一、结合图1和2说明本具体实施方式。一种汽车电子控制单元的声音在线检测方法,它包括如下步骤:
步骤一:将***初始化,使***工作于检测状态;
步骤二:对经过硬件低通滤波和预加重的声音数据进行采集;所述采集速率为8KHz,采集时间为4s;
步骤三:对采集到的声音数据进行前期分帧处理;
步骤四:对声音数据进行端点检测,确定有声段时长和无声段时长;所述端点检测包括初检测过程和精检测过程;
步骤五:提取声音数据的特征值,得到描述声音数据的四维特征向量;所述特征包括有声段时间、有声段与下一有声段的时间间隔、有声段的特征频率和与特征频率点频率对应的瞬时功率,所述四维特征向量包括有声段终点帧与起点帧之差、有声段起点帧与前一个有声段终点帧之差、有声段的特征频率和与特征点频率对应的瞬时功率;
步骤六:将步骤五中得到的四维特征向量与特征声音信号样本库中的标准信号特征向量进行匹配,并计算匹配评价指标,获得合格信息和不合格信息;
步骤七:判断匹配评价指标为合格信息或不合格信息,若判断结果为合格信息则将合格信息和特征声音信号对应的ID发送到车间检测中心;若判断结果为不合格信息则将不合格信息发送到车间检测中心,并提示将该产品剔除;
步骤八:获取检测结果,完成一次检测。
本发明的详细步骤为:
一种汽车电子控制单元的声音在线检测方法,它包括如下步骤:
步骤一:将***初始化,使***工作于检测状态;
步骤二:对经过硬件低通滤波和预加重的声音数据进行采集;所述采集速率为8KHz,采集时间为4s;
步骤三:对采集到的声音数据进行前期分帧处理;
所述步骤三:对采集到的声音数据进行前期分帧处理的过程为:
步骤三1:将步骤二中采集到的声音数据写入SRAM存储器中;
步骤三2:对步骤三1中的声音数据按照预定帧长进行分帧处理;所述预定帧长为128,对应时长为16ms。
步骤四:对声音数据进行端点检测,确定有声段时长和无声段时长;所述端点检测包括初检测过程和精检测过程;
所述初检测的过程为:
步骤四A1:对步骤三获得的各帧声音数据计算相应的短时能量E(f):
式中f为帧序号,Xf(i)为第f帧声音数据中第i个数据点对应的能量幅度,N为第f帧声音数据包含的数据点总数;
步骤四A2:设计对短时能量E(f)进行变换的最优边沿检测滤波器;
所述设计对短时能量E(f)进行变换的最优边沿检测滤波器的过程为:对滤波器的指数项和正余弦进行离线计算,得到各个离散的值存入ROM存储器;在滤波时采用查表的方式依次查找;
所述滤波器h(x)为:
f(x)=eAx[K1sin(Ax)+K2cos(Ax)]+e-Ax[K3sin(Ax)+K4cos(Ax)]+K5+K6eSx
其中A、S、K=[K1,K2,K3,K4,K5,K6]为滤波器系数,W为滤波器阶数;滤波器系数选为W=5、S=1.4、A=0.573、K=[1.6,1.5,-0.08,-0.04,-0.9,-0.56];
步骤四A3:利用步骤四A1获得的短时能量E(f)和步骤四A2获得的最优边沿检测滤波器h(x)获得滤波器输出F(f);
滤波器输出F(f)为:
其中f为帧数;
步骤四A4:根据步骤四A3获得的滤波器输出F(f)计算能量阈值,并存入ROM存储器;所述能量阈值包括有声段声音的改进短时能量下限TH和无声段声音的改进短时能量上限TL;
所述根据步骤四A3获得的滤波器输出F(f)计算预先设定的能量阈值的过程为:
步骤四A4-1:遍历各帧的滤波器输出F(f),获得其中的短时能量最大值Fmax与最小值Fmin;
步骤四A4-2:计算阈值迭代的初始值F(0):
步骤四A4-2:计算第k次迭代时的阈值F(k);
其中m(k-1),n(k-1)为第k-1次迭代完成时滤波器输出值大于、小于F(k-1)的帧的个数;当F(k)-F(k-1)<1时,迭代结束,得到F(k);
步骤四A4-3:根据步骤四A4-2得到的F(k)令TH=F(k)+10,TL=F(k)-3,并存入ROM存储器;
步骤四A5:确定声音数据的两个初检测起点f1和f6,f1<f6;两个初检测终点f3和f8,f3<f8;
所述确定声音数据的起始帧f1和f6的过程为:遍历步骤四A3获得的滤波器输出F(f),即对于3≤f≤M-3,M为总帧数,f以步长为1递增并对F(f)进行下面的运算:
当初次出现连续3帧f,f+1,f+2的滤波器输出均大于TH且f-3,f-2,f-1的滤波器输出均小于TH时,将3帧中帧数最小的帧f作为声音数据的初检测起点f1;
当第二次出现连续3帧f,f+1,f+2的滤波器输出均大于TH且f-3,f-2,f-1的滤波器输出均小于TH时,将3帧中帧数最小的帧f作为声音数据的第二个初检测起点f6;
当初次出现连续3帧f,f+1,f+2的滤波器输出均小于TL且f-3,f-2,f-1的滤波器输出均大于TL时记下此时的帧数f2=f,当连续3帧f,f+1,f+2的滤波器输出均大于TL且f-3,f-2,f-1的滤波器输出均小于TL时,判断此时的帧数f3=f与f2的差是否大于10,如果是,将f3作为声音数据初检测的第一个终点,否则继续计算直至获取满足条件的f3;
当第二次出现连续3帧f,f+1,f+2的滤波器输出均小于TL且f-3,f-2,f-1的滤波器输出均大于TL时记下此时的帧数f7=f,当连续3帧f,f+1,f+2的滤波器输出均大于TL且f-3,f-2,f-1的滤波器输出均小于TL时,判断此时的帧数f8=f与f7的差是否大于10,如果是,将f8作为声音数据初检测的第二个终点,否则继续计算直至获取满足条件的f8。
粗检测不直接使用短时能量,而是通过图像处理中的边沿检测方法获得最优边沿检测滤波器,并对输入的短时能量进行滤波,根据滤波器输出确定有声段声音的改进短时能量下限与无声段声音的改进短时能量上限,并以此为标准初步确定声音信号的粗检测端点。
在确定有声段声音的改进短时能量下限与无声段声音的改进短时能量上限时,并不直接将有声段声音的改进短时能量下限设为固定值TH=10,也不直接将无声段声音的改进短时能量上限设为固定值TL=-3,而是利用最优边沿检测滤波器对短时能量进行变换,然后根据最优边沿检测滤波器的输出,设计公式进行迭代,得到此时声音信号的偏置量F(k),并令TH=F(k)+10,TL=F(k)-10。这样使得有声段声音的改进短时能量下限与无声段声音的改进短时能量上限并不固定,而是跟随实际的声音信号输入自适应的改变,增强了端点检测的鲁棒性与准确性。
所述精检测的过程为:
步骤四B1:设定过零判别阈值thr并改进过零率检测方式:
式中f为帧序号,Xf(i)为第f帧声音数据中第i个数据点对应的振幅,N为第f帧声音数据包含的数据点总数,Zf为第f帧声音数据的过零率,thr=0.8;
步骤四B2:对步骤三分帧后的声音数据计算过零率;
步骤四B3:对于3≤f≤M-3,M为总帧数,f为帧序号,f以步长为1递增并进行下面的运算:
当初次出现连续3帧f,f+1,f+2的过零率Zf大于过零率门限值Zthr=10且f-3,f-2,f-1的过零率Zf小于过零率门限值Zthr=10时,记下该帧的帧数f4=f,将f4作为声音数据的第一个检测起点;
当第二次出现连续3帧f,f+1,f+2的过零率Zf大于过零率门限值Zthr=10且f-3,f-2,f-1的过零率Zf小于过零率门限值Zthr=10时,记下该帧的帧数f9=f,将f9作为声音数据的第二个检测起点;f4<f9。
当初次出现连续3帧f,f+1,f+2的过零率Zf小于过零率门限值Zthr=10且f-3,f-2,f-1的过零率Zf大于过零率门限值Zthr=10时,记下该帧的帧数f5=f,将f5作为声音数据的第一个检测终点;
当第二次出现连续3帧f,f+1,f+2的过零率小于过零率门限值Zthr=10且f-3,f-2,f-1的过零率Zf大于过零率门限值Zthr=10时,记下该帧的帧数f10=f,将f10作为声音数据的第二个检测终点;f5<f10;
步骤四B4:对步骤二所述4s内采集到的数据依据帧数从小到大的方式得到四个端点分别为fA,fB,fC,fD;获取fA的位置;
若fA为有声段的终点,则有 且此时有声段时长的计算公式为Ly=8×(fC-fB),单位为毫秒;无声段的时长为Lw=8×(fB-fA),单位为毫秒;
若fA为有声段的起点,则有 且此时有声段时长的计算公式为Ly=8×(fB-fA),单位为毫秒;无声段的时长为Lw=8×(fC-fB),单位为毫秒。
精检测改进了过零率的检测方式,使得端点的检测能够有效的滤除噪声的干扰,最后得到的端点既包含有能量的贡献又包含频率的贡献,是从能量与频率两个方面推出的,更为客观准确。
在对过零率进行检测时,通过设定过零判别阈值thr对过零率检测方式进行改进,得到形式 通过引入该阈值使得噪声信号的振荡幅度不超过thr,就不影响过零率的计数,从而除去了虚假的过零率,滤掉了小幅度噪声的干扰,提高了端点检测的精度。
步骤五:提取声音数据的特征值,得到描述声音数据的四维特征向量;所述特征包括有声段时间、有声段与下一有声段的时间间隔、有声段的特征频率和与特征频率点频率对应的瞬时功率,所述四维特征向量包括有声段终点帧与起点帧之差、有声段起点帧与前一个有声段终点帧之差、有声段的特征频率和与特征点频率对应的瞬时功率;
步骤五所述提取声音数据的特征值,得到描述声音数据的四维特征向量的过程为:
步骤五1:用步骤四B4中得到的有声段时长计算公式将有声段时间转换为有声段信号终点帧数减去同一段有声段信号起点帧数;
步骤五2:用步骤四B4中得到的无声段时长计算公式将有声段与下一有声段的时间间隔转化为有声段信号起点帧数减去前一段有声段信号终点帧数;
步骤五3:对步骤三1中存入SRAM中的声音数据进行快速傅里叶变换FFT得到有声段的特征频率;
步骤五4:对步骤三1中存入SRAM中的声音数据与步骤五3所述的特征频率计算对应的瞬时功率。
在选取声音信号匹配所需的特征时,并不只采用“有声段的特征频率”和“与特征频率对应的瞬时功率”,而是加入了对有声段时长和无声段时长的匹配。这样避免了声音检测中声音频率满足要求但发声时长不满足要求的情况,提高了检测准确率。同时增加的这两个量的计算在两种情况下分别通过公式Ly=8×(fC-fB),Lw=8×(fB-fA)和Ly=8×(fB-fA),Lw=8×(fC-fB)转化成对“有声段终点帧与起点帧之差”、“有声段起点帧与前一个有声段终点帧之差”的计算,将乘法运算转化成减法运算,提高了本方法的计算速度。
步骤六:将步骤五中得到的四维特征向量与特征声音信号样本库中的标准信号特征向量进行匹配,并计算匹配评价指标,获得合格信息和不合格信息;
步骤六中所述特征声音数据样本库的建立过程为:
步骤六A1:***初始化,令***工作于训练状态;
步骤六A2:对每种特征声音设定一个ID;
步骤六A3:在正常车间环境下对每个ID对应的特征声音数据采集三次;
步骤六A4:进行步骤三~五得到特征声音数据的三个四维特征向量;
步骤六A5:对单个特征声音数据的三个四维特征向量vec1,vec2,vec3求取算数平均,并将最终得到的均值特征向量作为该特征声音数据的特征向量;
步骤六A6:将步骤六A5中获得的特征向量写入外部FLASH存储器形成特征信号样本库。
步骤六中所述将步骤五中得到的四维特征向量与特征声音数据样本库中的标准信号特征向量进行匹配,并计算匹配评价指标,获得合格信息和不合格信息的过程为:
步骤六B1:将步骤五获得到的四维特征向量与特征声音数据样本库中的标准信号特征向量一一比较,并分别计算四维特征向量的相对误差:相对误差中有声段终点帧与起点帧之差的相对误差、有声段起点帧与前一个有声段终点帧之差的相对误差、有声段的特征频率的相对误差以及与特征点频率对应的瞬时功率的相对误差;
步骤六B2:计算步骤六B1四个所述四维特征向量的相对误差中有声段终点帧与起点帧之差的相对误差、有声段起点帧与前一个有声段终点帧之差的相对误差和有声段的特征频率的相对误差之和;
步骤六B3:将所述样本库中全部标准特征向量与步骤六B2所述之和进行匹配,找到步骤六B2所述之和最小时对应的样本库标准信号特征向量;
步骤六B4:根据匹配指标进行计算;所述匹配指标为:步骤六B3获得的特征向量是否满足有声段终点帧与起点帧之差的相对误差小于0.1、有声段起点帧与前一个有声段终点帧之差的相对误差小于0.1、有声段的特征频率的相对误差小于0.05和与特征点频率对应的瞬时功率的相对误差小于0.15;
若满足则获得合格信息,若不满足则获得不合格信息。
通过建立标准声音信号样本库,采用匹配的方式,使得实际应用中在检测时可以对某个汽车电子控制单元的所有类型的声音信号进行一次检测,且所有类型的声音信号的输入顺序可以任意,不同类型声音检测切换的过程不需人为参与,***能自主识别输入的声音信号是哪种声音并判定合格与否,将合格声音类型的ID发送到检测中心;而不是一次检测只能检测某个汽车电子控制单元的一种类型的声音并判断合格与否,待需要检测下一种类型的声音时还需要人为切换。
步骤七:判断匹配评价指标为合格信息或不合格信息,若判断结果为合格信息则将合格信息和特征声音信号对应的ID发送到车间检测中心;若判断结果为不合格信息则将不合格信息发送到车间检测中心,并提示将该产品剔除;
步骤八:获取检测结果,完成一次检测。