发明内容
本发明为了解决现有技术存在的问题,提出了一种基于Gammatone滤波器和直方图的多声源定位方法,为了实现上述目的,本发明采用了以下技术方案。
用传声器作为阵元,组成传声器阵列,采集声源信号,传声器的数量为U,序号为u,u=1...U,第u个传声器采集的的声源信号为su(t)。
用Gammatone滤波器产生脉冲响应,组成滤波器组,滤波器的数量为I,序号为i,i=1...I,第i个Gammatone滤波器产生的脉冲响应函数为g
i(t),Gammatone滤波器的增益为A,阶数为m,衰减因子为b
i,中心频率为f
i,相位为
阶跃函数为u(t),产生的脉冲响应函数为
通过Gammatone滤波器组产生脉冲响应。
将第u个传声器采集的的声源信号su(t)通过第i个Gammatone滤波器产生的脉冲响应函数gi(t),获得第i个子带的时域信号xu(i,t),子带信号为xu(i,t)=su(t)*gi(t),在时域将声源信号分割为子带信号。
在时域将子带信号xu(i,t)分割为单帧信号,单帧信号的数量为L,长度为N,序号为l,l=1...L,单帧内的采样序号为n,0≤n<N,第l个单帧第n个采样信号为xu(i,lN+n),将每个子带信号分帧。
将分帧信号作加窗处理,用窗信号
对x
u(i,lN+n)进行加窗处理,得到x
u(i,l,n)=w
H(n)x
u(i,lN+n),x
u(i,l,n)为第u个传声器第i个子带第l个单帧第n个采样信号的加窗信号。
用离散傅里叶变换函数DFT对x
u(i,l,n)作时频转换,变换的长度为K,K=2N,频点为k,0≤k<K,得到
X
u(i,l,k)为x
u(i,l,n)的频域信号,将X
u(i,l,k)作为时频单元信号。
计算候选方位到第u个阵元的导引时延τ
u0(r),候选方位的声源位置为r,阵列中心的位置为r
0,第u个阵元的位置为r
u,空气中的声速为c,候选方位到阵列中心的声传播时延为τ
0(r),候选方位到第u个阵元的声传播时延为τ
u(r),候选方位到第u个阵元的导引时延
计算阵列的PHAT可控响应输出Y
PHAT(i,l,k,r),信号采样率为f
s,将τ
u0(r)和X
u(i,l,k)代入,得到
计算每个时频单元信号的可控响应功率值,由Y
PHAT(i,l,k,r)计算第i个子带第l个单帧的时频单元信号在候选方位的可控响应功率值
确认可控响应功率值的主峰方位和次峰方位,将P(i,l,r)的最大值确认为主峰,次最大值确认为次峰,主峰对应的rpeak1(i,l)为第i个子带第l个单帧的时频单元信号的可控响应功率最大值的方位,次峰对应的rpeak2(i,l)为第i个子带第l个单帧的时频单元信号的可控响应功率次最大值的方位。
用直方图统计主峰方位和次峰方位的数量,对第l个单帧所有子带的时频单元信号对应的方位r
peak1(i,l)作直方图,统计每个方位的数量,数量最多的方位为
若存在数量次多的方位,则数量次多的方位为
若r
peak1(i,l)中不存在数量次多的方位
则对第l个单帧所有子带的时频单元信号对应的方位r
peak2(i,l)作直方图,统计每个方位的数量,数量最多的方位为
将
估计为第l个单帧的主声源方位,将
估计为第l个单帧的次声源方位,所作直方图的组距为5°,组数为72。
本发明利用Gammatone滤波器组分解信号子带,在时频单元内计算可控响应功率,提取声源方位信息,用直方图融合同一帧内的所有子带信息,作为方位估计的判决量,实现多声源定位;分解的每个子带在频域相互交叠而不分隔,避免相位缠绕,多个频率分量的空间谱的平均效应抑制了旁瓣,使主瓣突出,阵元间距不严格限于半波长;直方图简单易操作,计算量低;无需多帧信息,也无需假定声源在连续多帧内静止不动,实现了实时多声源定位,应用场合更为广泛;显著提高了主声源和次声源的定位成功率,尤其次声源的定位成功率提升更为明显,算法对噪声和混响都具有更强的鲁棒性。
具体实施方式
以下结合附图对本发明的技术方案做具体的说明。
一种基于Gammatone滤波器和直方图的多声源定位方法,如图1所示,用麦克风作为阵元,组成传声器阵列,接收语音,采集声源信号;将声源信号通过Gammatone滤波器组,通过Gammatone滤波器产生的脉冲响应,将声源信号在时域分割为子带信号;将每个子带信号分帧和加窗,作时频转换处理,获得单帧信号的频域信号,作为时频单元信号;计算候选方位到阵元的导引时延,进而计算每个时频单元信号的可控响应功率值;获取声源方位信息,包括可控响应功率值的主峰方位和次峰方位;绘制直方图,统计主峰方位和次峰方位的数量;先从主峰方位的数量估计主声源方位和次声源方位,若无法估计次声源方位,再从次峰方位的数量估计次声源方位。
选用6个全向麦克风,组成均匀的圆形阵列,通过圆形麦克风阵列接收语音,采集声源信号,阵列半径设置为0.1m,每个麦克风作为一个阵元,阵元间距不必严格限于半波长,阵列采集声源信号的数量和阵元的数量U=6,序号u=1...U,第u个传声器采集的的声源信号为su(t)。
用Gammatone滤波器产生脉冲响应,组成滤波器组,滤波器的数量I=32,序号i=1...I,第i个Gammatone滤波器产生的脉冲响应函数为g
i(t),Gammatone滤波器的增益为A,阶数m=6,衰减因子b
i=1.109ERB(f
i),中心频率f
i的范围取[800Hz,8000Hz],相位
计算得到ERB(f
i)=24.7(4.37f
i/1000+1),阶跃函数为u(t),产生的的脉冲响应函数为
通过32个Gammatone滤波器组产生脉冲响应。
将第u个传声器采集的的声源信号su(t)通过第i个Gammatone滤波器产生的脉冲响应函数gi(t),获得第i个子带的时域信号xu(i,t),子带信号为xu(i,t)=su(t)*gi(t),在时域将声源信号分割为子带信号,每个子带对应不同的频域范围,在频域相互交叠而不分隔,避免相位缠绕,多个频率分量的空间谱的平均效应抑制了旁瓣,使主瓣突出。
预设分帧长度和帧移,在时域将麦克风阵列第u个阵元的第i个子带的时域信号xu(i,t)分割为单帧信号,单帧信号的数量为L,长度N=512(32ms),序号为l,l=1...L,单帧内的采样序号为n,0≤n<N,帧移为0,语音信号的采样率fs=16kHz,第l个单帧第n个采样信号为xu(i,lN+n),将每个子带信号分帧。
将分帧信号作加窗处理,用窗信号
对x
u(i,lN+n)进行加窗处理,得到x
u(i,l,n)=w
H(n)x
u(i,lN+n),x
u(i,l,n)为第u个传声器第i个子带第l个单帧第n个采样信号的加窗信号。
用离散傅里叶变换函数DFT对x
u(i,l,n)作时频转换,变换的长度为K,K=2N=1024,频点为k,0≤k<K,得到
X
u(i,l,k)为x
u(i,l,n)的频域信号,将X
u(i,l,k)作为时频单元信号。
计算候选方位到第u个麦克风的导引时延τ
u0(r),候选方位的声源位置为r,阵列中心的位置为r
0,第u个麦克风的位置为r
u,空气中的声速c=342m/s,候选方位到阵列中心的声传播时延为τ
0(r),候选方位到第u个麦克风的声传播时延为τ
u(r),候选方位到第u个麦克风的导引时延
若声源与麦克风阵列处于同一水平面,声源位于阵列的远场,声源位置由方位角θ表示,定义水平面的正前方为0°,那么θ的范围为[-180°,180°],间隔为1°,负90°表示正左方,90°表示正右方,导引时延的计算公式修正为
其中ξ=[cosθ,sinθ]
T,由于τ
v0(r)与接收信号无关,可以离线计算后保存于内存中。
若声源与麦克风阵列不处于同一水平面,方位角由水平角θ和俯仰角
决定,那么
对声源的立体位置并没有限制。
计算阵列的PHAT可控响应输出Y
PHAT(i,l,k,r),信号采样率为f
s,将τ
u0(r)和X
u(i,l,k)代入,得到
计算每个时频单元信号的可控响应功率值,由Y
PHAT(i,l,k,r)计算第i个子带第l个单帧的时频单元信号在候选方位的可控响应功率值
确认可控响应功率值的主峰方位和次峰方位,将P(i,l,r)的最大值确认为主峰,次最大值确认为次峰,主峰对应的rpeak1(i,l)为第i个子带第l个单帧的时频单元信号的可控响应功率最大值的方位,次峰对应的rpeak2(i,l)为第i个子带第l个单帧的时频单元信号的可控响应功率次最大值的方位。
用直方图统计主峰方位和次峰方位的数量,对第l个单帧所有子带的时频单元信号对应的方位r
peak1(i,l)作直方图,组距为5°,组数为360/5=72,统计每个方位的数量,数量最多的方位为
若存在数量次多的方位,则数量次多的方位为
若r
peak1(i,l)中不存在数量次多的方位
则对第l个单帧所有子带的时频单元信号对应的方位r
peak2(i,l)作直方图,组距为5°,组数为360/5=72,统计每个方位的数量,数量最多的方位为
将
估计为第l个单帧的主声源方位,将
估计为第l个单帧的次声源方位。
分别设置混响时间T60=0.3s和T60=0.6s,测试不同信噪比和混响的环境中,本声源定位方法的性能,如图2至7所示,横坐标表示全局信噪比,纵坐标表示定位成功率,本方法比传统SRP-PHAT算法显著提升了主次声源的定位成功率,尤其是次声源的定位成功率,对噪声和混响都具有更强的鲁棒性。
上述作为本发明的实施例,并不限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。