发明内容
为了解决现有技术存在的技术问题,本发明提供了一种基于声强差效应的实时音源定向方法,它能够实时地根据突发声音信号判断出声音的方向,而且能避免回响对系统判断声源方向的影响,系统开销小。
本发明采用的技术方案如下:
一种基于声强差效应的实时声源定向方法,采用四元十字拾音器阵列进行声源检测,在对检测到的声源信号进行处理定向过程中采用了平滑算法。
本发明采用了平滑算法对检测到的声源信号也即采集到的数据进行平滑,对回响增强原声的部分完全进行了限制,对回响削弱原声的部分降低其削弱效果。
本发明中,所述处理定向过程步骤包括如下:
S21.对四元十字拾音器阵列检测到的声源信号通过RC低通滤波;
S22.将经过RC低通滤波后的声源信号进行AD采样获得数据;
S23.对AD采样获得的数据进行平滑过滤处理;
S24.对平滑过滤处理后的数据进行抽样采集;
S25.对抽样采集的数据基于背景噪音进行触发判断,若数据大于触发值T则表示检测到了突发声音,并继续S26;其中触发值T为声源定位的灵敏度;
S26.对抽样采集的数据进行分析点均值处理;
S27.将均值处理获得数据进行方向角计算,进而获取声源方向。
进一步地,在S21中,所述声源信号通过RC低通滤波前先被拾音器放大形成声波,然后采用了半波整流电路去掉负半周的波形。
进一步地,在S22中,经过RC低通滤波后的声源信号在进行AD采样前先通过单片机引脚可兼容电压值对输出波形进行等比例缩小到AD采集合适范围内。
本发明中,声音通过拾音器如拾音器LM358放大后,显示为一系列杂乱无序的声波。在后端先采用半波整流电路去掉负半周的波形,再经过RC低通滤波,同时结合单片机引脚可兼容电压值对后端输出波形进行等比例缩小到AD采集合适范围内。
进一步地,所述AD采样过程具体步骤包括:按采集周期进行采样,并将4个拾音器每次采集的数据s1~s4保存为数组S1~S4。
进一步地,所述采集周期为每0.02ms采样一次。
本发明中,为了保证声音间隔有1ms左右的差异,所述四元十字拾音器阵列中横向设置的两拾音器之间的距离与竖向设置的两拾音器之间的距离均为30cm。
本发明中,根据两个拾音器之间最小距离为21.21cm,声音在15℃时的速度为34cm/ms则两个拾音器检测到声音的时间间隔最小约为0.623ms。为保证采集到足够的数据用于分析,每0.02ms采样一次,并将4个拾音器采集的数据s1~s4保存为数组S1~S4。当然,采集周期也可以设定为其它合适值,这里并不作唯一限定,但取0.02ms为比较优选的值。
本发明中,经过RC滤波的采集数据s1~s4的波动还是比较大,需要进行平滑和过滤才能很好地体现出声音先后到达引起的声强差。故进一步地,在S23中,所述平滑过滤处理步骤包括:定义单个拾音器声音敏感度常量D,对AD采样获得的数据s1~s4进行平滑采样后的声音为ss1~ss4,保存数组为SS1~SS4;将采样数据s1~s4和平滑采样到的数据ss1~ss4分别进行比较,若s1>ss1+D,则ss1=ss1+1,若s1<ss1-D,则ss1=ss1-1;若s2>ss2+D,则ss2=ss21+1,若s2<ss2-D,则ss2=ss2-1;若s3>ss3+D,则ss3=ss3+1,若s3<ss3-D,则ss3=ss3-1;若s4>ss4+D,则ss4=ss4+1,若s4<ss4-D,则ss4=ss4-1。
进一步地,对于S25中,利用AD采样获得的数据s1~s4作为背景噪音,定义单个拾音器噪音敏感度常量DN,平滑采样后的背景噪音为n1~n4,保存数组为N1~N4,其中n1~n4采样周期大于s1~s4的采样周期;具体将AD采样数据s1~s4和平滑采样到的数据n1~n4分别进行比较,若s1>n1+DN,则n1=n1+1,若s1<s1-DN,则n1=n1-1;若s2>n2+DN,则n2=n2+1,若s2<s2-DN,则n2=n2-1;若s3>n3+DN,则n3=n3+1,若s3<s3-DN,则n3=n3-1;若s4>n4+DN,则n4=n4+1,若s4<s4-DN,则n4=n4-1。
进一步地,所述背景噪音采集周期为每1ms采集一次。
本发明中,关于背景噪音,由于判断检测到了突发声音最简单的方法就是设置一个触发判断值,当拾音器采样数据超过了这个值就判断为检测到了突发声音。但是单一的触发判断值无法适应现实中复杂的环境。如安静环境下设置的触发判断值,到了嘈杂的环境中拾音器的采样数据可能会一直超过这个值,所以需要引入背景噪音采集来动态调整这个触发判断值。
背景噪音也是声音,可以直接利用拾音器采样到的s1~s4作为噪音,保存为n1~n4。但n1~n4要求受突发声音影响小,同时在环境噪音变化时需要上升或下降到相应稳定的水平。依据该要求,n1~n4采集周期需要大于s1~s4的采样周期,同时为避免突发信号的影响需要对其进行过滤和平滑。
背景噪音的采样周期越小,采样的噪音值对声音的敏感度就越高,n1~n4的曲线也就越接近s1~s4,反之背景采样周期越大,采样的噪声对声音的敏感度越低,n1~n4的曲线也就越平直。拾音器采样s1~s4周期为0.02ms,背景噪音需要大于这个采样周期,本发明采用1ms采样周期采集,这个周期可以根据需求修改,再采用过滤和平滑算法。
进一步地,对于S25中,所述触发值T通过背景噪音值和一个常量触发值相加得到,即T=n1+n2+n3+n4+SEN,其中SEN为常量;将4个拾音器抽样采集获得的数据ss1~ss4的和跟T进行比较,若大于T即满足条件ss1+ss2+ss3+ss4>T,就表示检测到突发声音。
本发明中,一个突发声响的时间大约是几百毫秒,每0.02毫秒采样一次就可能会有几万的采样数据,而大量的数据处理会降低声源定位的实时性。根据原理设计只需要用到最初的几个毫秒的数据便可以完成声源定向。经过平滑采样以后数据有比较强的连续性,只要抽取其中的某些点进行保存计算就能快速的计算出声音的方向。故进一步对于S24中,所述抽样采集以每25个采样点保存一次,即每0.5ms保存一次数据。
本发明中,回响可能会对采集到的数据产生影响,如果对声音反射的物体越远,拾音器检测到原始声音跟反射声音的时间差就越大,反之反射物体越近,则检测到的时间差就越短。本系统避免回响的方法是在回响到达前就确定用于声音方向判断的分析点。这个分析点需要在4个拾音器都检测到声音时便确定。故进一步地,所述分析点均值处理步骤包括:定义一个比较值B,把抽样采集获得的数组SS1~SS4中的每一组ss1~ss4跟噪音值n1~n4比较,当ss1>n1+B且ss2>n2+B且ss3>n3+B且ss4>n4+B时,则选取该组数据作为分析点,然后求在分析点之前若干组数据的算术平均值得到v1~v4。B值跟进不同拾音器而不一样,一般设置比拾音器采样较强的噪音的波动值大一些。
进一步地,通过公式计算获得声源方向角θ。
进一步地,本发明中,所述平滑处理采用的是限幅滤波法。
本发明与现有技术相比,具有的有益效果为:
1.采用平滑算法,能够避免回响对系统判断声源方向的影响。
2.不需要专门的拾音器,跟进需要监听范围大小选择相应灵敏度的拾音器即可。
3.方法运算简单,只有在角度计算的时候使用到乘法和角度计算函数,其余的计算都是简单的加减法,系统开销小。
实施例:
本发明采用的原理如图1所示,以十字阵构建平面直角坐标系,ac方向为坐标系X轴,ac距离为30cm,db方向为坐标系Y轴,db距离也为30cm。当突发声音信号从某一个方向传到十字阵时,四个拾音器会先后检测到声音信号。取四个拾音器刚检测到声音时的瞬态声强,将a的声强减去c的声强得到X轴方向上的矢量声强V1,d的声强减去b的声强得到Y轴方向上的矢量声强V2。拾音器两两相减能够消除环境噪音的影响。用V1、V2便可以求出突发声音位于坐标系的方向,公式如下:
atan2(V2,V1)*180/π。
其中atan2为C语言中的反正切值函数。结果以a为0度,在第一、第二象限0~180度,第四、第三象限0~-180度。
如图2和图3所示为本发明涉及的方法流程框图,具体步骤包括:
S21.对四元十字拾音器阵列检测到的声源信号通过RC低通滤波;
S22.将经过RC低通滤波后的声源信号进行AD采样获得数据;
S23.对AD采样获得的数据进行平滑过滤处理;
S24.对平滑过滤处理后的数据进行抽样采集;
S25.对抽样采集的数据基于背景噪音进行触发判断,若数据大于触发值T则表示检测到了突发声音,并继续S26;其中触发值T为声源定位的灵敏度;
S26.对抽样采集的数据进行分析点均值处理;
S27.将均值处理获得数据进行方向角计算,进而获取声源方向。
对于S21中涉及的RC低通滤波:
声音通过拾音器LM358放大后,显示为一系列杂乱无序的声波。在后端先采用半波整流电路去掉负半周的波形,再经过RC低通滤波,同时结合单片机引脚可兼容电压值对后端输出波形进行等比例缩小到AD采集合适范围内。处理结果如图4和图5所示。
对于S22中涉及的AD采样:
本发明中,根据两个拾音器之间最小距离为21.21cm,声音在15℃时的速度为34cm/ms则两个拾音器检测到声音的时间间隔最小约为0.623ms。为保证采集到足够的数据用于分析,每0.02ms采样一次,并将4个拾音器采集的数据s1~s4保存为数组S1~S4。处理结果如图6所示。其中,采集数据s1~s4相当于上述提及的a、b、c、d位置测得的声强。
对AD采样数据s1~s4进行平滑过滤处理:
对于S23中,定义单个拾音器声音敏感度常量D,对AD采样获得的数据s1~s4进行平滑采样后的声音为ss1~ss4,保存数组为SS1~SS4;将采样数据s1~s4和平滑采样到的数据ss1~ss4分别进行比较,若s1>ss1+D,则ss1=ss1+1,若s1<ss1-D,则ss1=ss1-1;若s2>ss2+D,则ss2=ss21+1,若s2<ss2-D,则ss2=ss2-1;若s3>ss3+D,则ss3=ss3+1,若s3<ss3-D,则ss3=ss3-1;若s4>ss4+D,则ss4=ss4+1,若s4<ss4-D,则ss4=ss4-1。处理结构如图7所示。
对于S24中涉及的抽样采集:
一个突发声响的时间大约是几百毫秒,每0.02毫秒采样一次就可能会有几万的采样数据,而大量的数据处理会降低声源定位的实时性。根据原理设计只需要用到最初的几个毫秒的数据便可以完成声源定向。经过平滑采样以后数据有比较强的连续性,只要抽取其中的某些点进行保存计算就能快速的计算出声音的方向。设每25个采样点保存一次,则每0.5ms保存一次数据。
对于触发判断:
对于S25中,利用AD采样获得的数据s1~s4作为背景噪音,定义单个拾音器噪音敏感度常量DN,平滑采样后的背景噪音为n1~n4,保存数组为N1~N4,其中n1~n4采样周期大于s1~s4的采样周期;具体将AD采样数据s1~s4和平滑采样到的数据n1~n4分别进行比较,若s1>n1+DN,则n1=n1+1,若s1<s1-DN,则n1=n1-1;若s2>n2+DN,则n2=n2+1,若s2<s2-DN,则n2=n2-1;若s3>n3+DN,则n3=n3+1,若s3<s3-DN,则n3=n3-1;若s4>n4+DN,则n4=n4+1,若s4<s4-DN,则n4=n4-1。如图8所示。
所述背景噪音采集周期为每1ms采集一次。
对于S25中,所述触发值T通过背景噪音值和一个常量触发值相加得到,即T=n1+n2+n3+n4+SEN,其中SEN为常量;将4个拾音器抽样采集获得的数据ss1~ss4的和跟T进行比较,若大于T即满足条件ss1+ss2+ss3+ss4>T,就表示检测到突发声音。
如果检测到突发声音后则对抽样采集数据ss1~ss4进行分析点均值处理。
对于S26中涉及的分析点均值:
回响可能会对采集到的数据产生影响,如果对声音反射的物体越远,拾音器检测到原始声音跟反射声音的时间差就越大,反之反射物体越近,则检测到的时间差就越短。本系统避免回响的方法是在回响到达前就确定用于声音方向判断的分析点。这个分析点需要在4个拾音器都检测到声音时便确定。
设一个比较值B,把抽样采集获得的数组SS1~SS4中的每一组ss1~ss4跟噪音值n1~n4比较,当ss1>n1+B且ss2>n2+B且ss3>n3+B且ss4>n4+B时,则选取该组数据作为分析点,然后求在分析点之前若干组数据的算术平均值得到v1~v4。B值跟进不同拾音器而不一样,一般设置比拾音器采样较强的噪音的波动值大一些。
最后通过获得的v1~v4运用到S27中涉及的方向角计算:
通过公式计算获得声源方向角θ。
本实施例采用的定向方法基本不受回响的影响,一方面经过RC滤波后还对采集数据进行平滑,对回响增强原声的部分完全进行了限制,对回响削弱原声的部分降低了其削弱的效果,所以即使未能将B设置在回响到来之前也能将回响对角度计算的影响减小。另一由于声音传播直线距离最短,所以拾音器采集到声音的起始点并不会因为回响而改变。如图9所示,设Z+0.34m=X+Y,则回响对拾音器a产生影响的时间应该是在a检测到声音的1ms(0.34m÷340m/s=1ms)。那么只需要确保分析点在a检测到声音的1ms便可以避免回响的影响。分析点的B设置得越小,则可能受到回响的影响就越小,但越小也就越容易受环境噪音影响,所以这个B值需要根据不同拾音器的信噪比测试得出。