本发明属于语音智能识别技术领域,涉及语音前端信号处理,具体涉及一种基于双麦克风的声源定位方法。
背景技术:
声源定位算法主要用于估计声源目标与麦克风阵列的角度信息,将估计的角度数据输入语音增强系统可以有效的增强该方向的语音信号,并抑制其他方向的噪声信号。目前,在由两个麦克风组成的双麦系统中,语音信号定位算法通常采用的是基于到达时间差的方法来进行估计的。然而,在实际应用场景中,当噪声为高分贝稳态噪声,如:烟机噪声,风扇噪声,以及电视所播放的音乐噪声时。由于不能正确的区分目标声源方向和噪声方向,算法的估计性能将下降。
技术实现要素:
为克服现有技术存在的缺陷,本发明公开了一种基于双麦克风的声源定位方法。
本发明所述基于双麦克风的声源定位方法,包括按帧接收时域语音信号,其特征在于,还包括如下步骤:
s1:将双麦克风阵列接收的时域语音信号转换到频域,选取稳态噪声基频影响小的频带范围a,并将该频带内的宽带语音信号拆分为多个窄带频点语音信号;
s2:计算两路麦克风接收的语音信号在该频带范围a内每一个频点的互功率谱与互功率谱密度,并按照互功率谱密度大小排序,根据排序选择前k个互功率谱密度较大的频率点所对应的互功率谱作为待估互功率谱,并淘汰掉剩余频率点所对应的互功率谱;k为所选频点个数;
s3:将0-180度空域中添加空域网格点划分为多个空域网格;
对于每一个空域网格点,计算步骤s2中选出的k个频率点所对应的导向矢量;
将待估互功率谱进行归一化处理,并与该导向矢量进行相乘累加,结果即为该空域网格点的空间谱能量;
空间谱能量具体计算公式为:
其中
空间谱密度最大的网格点即为该帧的目标声源的波达估计方向;
s4:对每一帧重复步骤s1至s3,将连续采集的时域音频信号每一帧的波达方向估计存入缓存中,并计算每一帧语音所有频点的平均互功率谱密度,同时根据平均互功率谱密度,选择互功率谱密度大的m帧有效波达估计方向进行角度平滑,平滑后的方向作为波达估计方向;
角度平滑具体公式为:
其中,
优选的,所述步骤s1中将频带范围a的宽带语音信号拆分为多个窄带频点语音信号的具体步骤为:将语音信号进行加窗分帧处理,将每帧的时域音频信号通过短时傅利叶变换转换到频域,并对频域信号的频谱进行分频处理,将宽带语音信号划分为多个窄带频点语音信号。
优选的,所述步骤s2中,
互功率谱计算公式为:
其中,
互功率谱密度表示为:
优选的,所述导向矢量
其中,
本发明所述基于双麦克风的声源定位方法利用稳态噪声与人声互功率密度在频段上的分布差异,挑选出人声能量占比高的频点来估计每一帧的波达方向,减小了运算量。通过平均功率谱密度对连续输入音频每一帧的波达方向估计做进一步筛选,提高了波达方向估计在稳态噪声环境中的鲁棒性。
附图说明
图1为本发明所述基于双麦克风的声源定位方法的一种具体实施方式示意图;
图2为本发明所述基于双麦克风的声源定位方法的一种具体实施方式流程示意图。
具体实施方式
下面对本发明的具体实施方式作进一步的详细说明。
本发明所述本发明所述基于双麦克风的声源定位方法,如图1所示,包括如下步骤:
s1:将双麦克风阵列接收的时域语音信号转换到频域,选取稳态噪声基频影响小的频带范围,并将该频带内的宽带语音信号拆分为多个窄带频点语音信号;
s2:计算两路麦克风接收的语音信号在该频带范围a内每一个频点的互功率谱与互功率谱密度,并按照互功率谱密度大小排序,根据排序选择前k个互功率谱密度较大的频率点所对应的互功率谱作为待估互功率谱,并淘汰掉剩余频率点所对应的互功率谱;k为所选频点个数;
s3:将0-180度空域插入空域网格点划分为多个空域网格;对于每一个空域网格点,计算步骤s2中选出的k个频率点所对应的导向矢量;
将待估互功率谱进行归一化处理,并与该导向矢量进行相乘累加,结果即为该空域网格点的空间谱能量;
空间谱能量具体计算公式为:
其中
空间谱密度最大的网格点即为该帧的目标声源的波达估计方向;
对于一段存在稳态噪声的语音,由于双麦克风只能估计出一个波达方向,所以波达方向估计会在人声与噪声方向来回波动。每一帧音频所有频点的平均互功率密度表示人声存在的概率,若平均互功率谱密度高,表示该帧人声的能量占比高,该帧的波达方向估计更有可能偏向人声方向。所以对连续输入音频每一帧的波达方向估计根据空间谱密度做进一步筛选,可以提高波达方向估计算法在稳态噪声环境中的鲁棒性。
s4:对每一帧重复步骤s1至s3,将连续采集的时域音频信号每一帧的波达估计方向存入缓存中,并计算每一帧语音所有频点的平均互功率谱密度,同时根据平均互功率谱密度,选择互功率谱密度大的m帧有效波达估计方向进行角度平滑,平滑后的方向作为波达估计方向;
角度平滑具体公式为:
其中,
本发明是基于广义互相关时延估计方法改进,对于一帧双麦克风接收的音频信号,每一个频点的互功率谱密度大小反映了该帧音频在该频率上的能量强度与相关性,稳态噪声的互功率谱密度在特定频段上分布均匀,而人声的互功率谱密度将会根据声音的发音差异,在频段上呈现非均匀分布。
若对每个频点依次计算求解波达方向将会增加算法的计算复杂度,并且在稳态噪声情况下算法的估计精度将会降低,因此可以利用稳态噪声与人声互功率密度在频段上的分布差异,挑选出人声能量占比高的频点,即稳态噪声基频影响小的频点估计每一帧的波达方向,一般为频带中段的频点。
具体的,步骤s1中将宽带语音信号拆分为多个窄带频点语音信号包括:将语音信号进行加窗分帧处理,将每帧的时域音频信号通过短时傅利叶变换转换到频域,并对频域信号的频谱进行分频处理,将宽带语音信号划分为多个窄带频点语音信号;
一个具体实施方式为,将每帧的时域音频信号做512点的快速傅里叶变换转换到频域,得到多个离散频点;
为了避免稳态噪声基频过重对声源定位造成的影响,通常选择频率区间1.26khz-3.78khz频带区间的每个频点进行分频处理,在16khz的采样率下,即可将宽带语音信号分成81个窄带,每一窄带代表一个离散频点。
步骤s2:计算双麦克风阵列中两个麦克风接收的语音信号在该特定频带范围内每一个窄带频点的互功率谱与互功率谱密度;
具体可以为:
s21.计算两路麦克风接收的语音信号在该频带范围内每一个频点的互功率谱:
互功率谱计算公式为:
其中,
s22.计算每一个频点的互功率谱密度可以表示为:
其中,
表示两路麦克风接收信号的互功率谱密度,
s23.设置选频规则并挑选出待估计互功率谱,并且淘汰掉互功率谱密度较小的频率点所对应的互功率谱;
一个具体实施方式为,将计算的互功率谱密度
按照密度大小进行排序,考虑能够在信噪比0db稳态噪声环境下取得较好的波达方向估计精度,选取互功率谱密度最大的前5个频点。挑选这5个频率点所对应的互功率谱作为待估互功率谱,将其他频点所对应的互功率谱淘汰。
步骤s3中,将0-180度空域划分为多个空域网格。对于每一个空域网格点,计算互功率谱密度较大的频率点所对应的导向矢量。将待估互功率谱进行归一化处理,并与该导向矢量进行累加,结果即为该空域网格的空间谱能量;空间谱能量最大的网格点即为当前帧语音信号的波达方向估计:
s31.将0-180度空域划分为多个空域网格,一个具体实施方式为,以20度为网格大小,将0-180度空域划分为9个空域网格区间,得到10个网格点,则θ1为0度,θ2为20度…θ10为180度。
对于每一个空域网格点,互功率谱密度较大的频率点所对应的导向矢量:
其中,
s32将待估互功率谱进行归一化处理,并与该导向矢量进行相乘后的频率累加,累加结果即当前空域网格点的空间谱能量,具体计算公式为:
其中,
通过计算,求得每个空域网格点的空间谱能量,选取空间谱能量最大的网格点所对应的角度值作为当前帧语音信号的波达方向估计。
步骤s4中,将连续采集的时域音频信号每一帧的波达方向估计存入长为n的缓存中,并计算每一帧语音所有频点的平均互功率谱密度,选择平均互功率谱密度高的m帧有效波达方向进行角度平滑,具体可为:
例如设置一个长为40帧的缓存,连续的存储每一帧语音信号的波达方向估计,采用先进先出的队列存储方式,同时,设置一个长度为40帧的缓存存储每一帧语音信号的互功率谱密度均值,同样采用先进先出的存储方式。将每一帧平均互功率谱密度进行排序,选择平均互功率谱密度较高的15帧语音信号的波达方向估计作为有效波达方向存入一个长为15帧的缓存区域,采用先进先出的存储方式,对于这15帧进行角度平滑:
其中,
40个连续帧的波达方向估计经过挑选后,在时间上是不连续的,平滑步骤的主要作用是防止输出角度存在不稳定的上下波动,让输出的波达方向平缓变化以便后续的处理,其中参数
本发明所述基于双麦克风的声源定位方法利用稳态噪声与人声互功率密度在频段上的分布差异,挑选出人声能量占比高的频点来估计每一帧的波达方向,减小了运算量。通过平均功率谱密度对连续输入音频每一帧的波达方向估计做进一步筛选,提高了波达方向估计在稳态噪声环境中的鲁棒性。
前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
1.一种基于双麦克风的声源定位方法,包括按帧接收时域语音信号,其特征在于,还包括如下步骤:
s1:将双麦克风阵列接收的时域语音信号转换到频域,选取稳态噪声基频影响小的频带范围a,并将该频带内的宽带语音信号拆分为多个窄带频点语音信号;
s2:计算两路麦克风接收的语音信号在该频带范围a内每一个频点的互功率谱与互功率谱密度,并按照互功率谱密度大小排序,根据排序选择前k个互功率谱密度较大的频率点所对应的互功率谱作为待估互功率谱,并淘汰掉剩余频率点所对应的互功率谱;k为所选频点个数;
s3:将0-180度空域中添加空域网格点划分为多个空域网格;
对于每一个空域网格点,计算步骤s2中选出的k个频率点所对应的导向矢量;
将待估互功率谱进行归一化处理,并与该导向矢量进行相乘累加,结果即为该空域网格点的空间谱能量;
空间谱能量具体计算公式为:
其中
空间谱密度最大的网格点即为该帧的目标声源的波达估计方向;
s4:对每一帧重复步骤s1至s3,将连续采集的时域音频信号每一帧的波达方向估计存入缓存中,并计算每一帧语音所有频点的平均互功率谱密度,同时根据平均互功率谱密度,选择互功率谱密度大的m帧有效波达估计方向进行角度平滑,平滑后的方向作为波达估计方向;
角度平滑具体公式为:
其中,
2.如权利要求1所述基于双麦克风的声源定位方法,其特征在于,所述步骤s1中将频带范围a的宽带语音信号拆分为多个窄带频点语音信号的具体步骤为:将语音信号进行加窗分帧处理,将每帧的时域音频信号通过短时傅利叶变换转换到频域,并对频域信号的频谱进行分频处理,将宽带语音信号划分为多个窄带频点语音信号。
3.如权利要求1所述基于双麦克风的声源定位方法,其特征在于,所述步骤s2中,
互功率谱计算公式为:
其中,
互功率谱密度表示为:
4.如权利要求1所述基于双麦克风的声源定位方法,其特征在于,所述导向矢量
其中,