一种基于线性麦克风阵列的声源定位方法及装置与流程

文档序号:23959347发布日期:2021-02-18 20:56阅读:190来源:国知局
一种基于线性麦克风阵列的声源定位方法及装置与流程

[0001]
本发明涉及声源定位技术领域,尤其是涉及一种基于线性麦克风阵列的声源定位方法及装置。


背景技术:

[0002]
声源定位技术主要用于测定声源方位方面,目前在智能音箱、智能机器人、视频会议等领域均有着重要的应用。其中在视频会议场景中,要求对说话人进行特写,目前通常使用阵列算法来提升音质效果,如比较常用的mvdr和ds等波束形成算法,但都非常依赖doa的精度和时效性。
[0003]
现有技术中利用麦克风阵列进行声源定位的估计方法可大致分成三类:基于最大输出功率的可控波束形成技术、基于高分辨率谱图估计技术和基于时延估计的声源定位技术。但考虑到计算复杂度及实时性,目前主要使用基于时延估计的方法进行声源定位,该方法基本思路为先估计时间差,然后根据时间差计算声源方位信息。
[0004]
但是,在对现有技术的研究与实践的过程中,本发明的发明人发现,现有的声源定位方法存在如下缺陷,例如基于最大输出功率的可控波束形成技术的计算复杂度很高,定位效率低且成本高;基于高分辨率谱图估计技术则需要达成噪声和语音信号完全不相关的前提要求,且计算复杂度高;而基于时延估计的声源定位技术则在多声源场景中定位效果不佳,且抗噪和抗混响效果较差。因此,亟需能够克服至少上述一种缺陷的声源定位方法。


技术实现要素:

[0005]
本发明实施例所要解决的技术问题在于,提供一种基于线性麦克风阵列的声源定位方法及装置,能够优化在实际的视频会议场景中由于噪声和混响的存在而导致声源定位效果不佳的问题。
[0006]
为解决上述问题,本发明的一个实施例提供了一种基于线性麦克风阵列的声源定位方法,至少包括如下步骤:
[0007]
采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息;
[0008]
将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度;
[0009]
在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0010]
作为优选方案,所述若干组麦克风组合均为均匀分布的线性阵列,每组麦克风组合由任意两个麦克风组成,每个麦克风之间的间距均相同。
[0011]
作为优选方案,所述采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息,具体为:
[0012]
对每组麦克风组合中的两个麦克风进行声源信号采集,通过计算得到两个麦克风
的声源信号的广义互相关函数,计算出两个声源信号之间的时间差;
[0013]
在所述广义互相关函数中选取高度前三的峰值位置,并换算为对应的实际角度,组成每帧每组麦克风组合的声源角度信息集合。
[0014]
作为优选方案,所述计算得到两个麦克风的声源信号的广义互相关函数,具体为:
[0015]
分别对两个麦克风的声源信号对应的两路时域数据进行加窗分帧处理和短时傅里叶变换;
[0016]
转到频域后计算得到所述两路时域数据的互相关函数;
[0017]
采用加权函数凸显所述互相关函数的峰值后进行傅里叶变换,得到广义互相关函数。
[0018]
作为优选方案,所述根据预设的统计算法计算出初步声源角度,具体为:
[0019]
将0
°
至180
°
均匀分为18个区间,对预设的时间窗内的声源角度信息放入对应区间进行统计;
[0020]
计算每个区间的统计的声源角度信息个数,选取个数最多的区间并计算其对应的置信度;
[0021]
判断该区间对应的置信度是否满足预设第一阈值;
[0022]
若是,则对该区间的各个声源角度进行平均值统计,以统计得出的平均值作为初步声源角度;
[0023]
若否,则以前一个时间窗内输出的初步声源角度作为当前时间窗内的初步声源角度。
[0024]
作为优选方案,所述在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果,具体为:
[0025]
采集并判断当前场景是否存在超过预设能量阈值的噪声,若是,则进行噪声信息过滤;
[0026]
利用vad算法模块计算当前场景的vad信息,在根据所述vad信息判断当前帧为噪声时,采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出当前帧每组麦克风组合的声源角度信息;
[0027]
将所述当前帧每组麦克风组合的声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法选取出峰值高度最大的中心位置,以该中心位置对应的角度作为噪声角度;
[0028]
根据所述初步声源角度和噪声角度进行声源角度的二次判断,得到最终的声源定位结果。
[0029]
作为优选方案,所述根据所述初步声源角度和噪声角度进行声源角度的二次判断,具体为:
[0030]
判断所述初步声源角度与所述噪声角度是否处于同一区间时;若否,则以所述初步声源角度作为最终声源角度;
[0031]
若是,则选取声源角度信息个数第二多的区间并计算其对应的置信度;
[0032]
判断该区间对应的置信度是否满足预设第二阈值;
[0033]
若是,则对所述声源角度信息个数第二多的区间的各个声源角度进行平均值统计,以统计得出的平均值作为最终声源角度;
[0034]
若否,则以声源角度信息个数最多的区间对应的所述初步声源角度作为最终声源角度。
[0035]
本发明的一个实施例提供了一种基于线性麦克风阵列的声源定位装置,包括:
[0036]
声源角度计算模块,用于采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息;
[0037]
声源角度统计模块,用于将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度;
[0038]
噪声过滤模块,用于在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0039]
本发明的一个实施例提供了一种基于线性麦克风阵列的声源定位的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于线性麦克风阵列的声源定位方法。
[0040]
本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于线性麦克风阵列的声源定位方法。
[0041]
实施本发明实施例,具有如下有益效果:
[0042]
本发明实施例提供的一种基于线性麦克风阵列的声源定位方法及装置,所述方法包括:采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息;将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度;在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0043]
与现有技术相比,本发明实施例通过利用麦克风多通道的信息进行声源角度信息的计算,提升声源定位鲁棒性,优化在实际的视频会议场景中由于噪声和混响的存在而导致声源定位效果不佳的问题,提高音质体验,给出稳定的主讲人的定位角度,从而指导在视频会议中对主讲人进行搜索和定位,实现主讲人特写的效果。
附图说明
[0044]
图1为本发明第一实施例提供的一种基于线性麦克风阵列的声源定位方法的流程示意图;
[0045]
图2为本发明第一实施例提供的计算声源角度信息的流程示意图;
[0046]
图3为本发明第一实施例提供的统计声源角度的流程示意图;
[0047]
图4为本发明第一实施例提供的噪声信息过滤的流程示意图;
[0048]
图5为本发明第二实施例提供的一种基于线性麦克风阵列的声源定位装置的结构示意图。
具体实施方式
[0049]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
[0050]
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0051]
首先介绍本发明可以提供的应用场景,如在视频会议中给出主讲人的定位角度,实现主讲人声音特写的效果。
[0052]
本发明第一实施例:
[0053]
请参阅图1-4。
[0054]
如图1所示,本实施例提供了一种基于线性麦克风阵列的声源定位方法,至少包括如下步骤:
[0055]
s1、采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息。
[0056]
在优选的实施例中,所述若干组麦克风组合均为均匀分布的线性阵列,每组麦克风组合由任意两个麦克风组成,每个麦克风之间的间距均相同。
[0057]
具体的,对于步骤s1,如图2所示,首先基于gcc-phat的方法,对多组麦克风组合进行计算,得出每帧(10ms)每组的声源角度信息c
smat1
、c
smat2
、c
smat3
……
c
smatn
;其中,若干组麦克风为均匀分布的线性阵列,即每个麦克风间间距相同,选取合适距离的任意两个麦克风作为一组,在具体实施时,也可以选取多组以增加空间信息量;并且,若干组麦克风中的麦克风可以是重复的,即一个麦克风可以出现在多个组合中。
[0058]
s2、将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度。
[0059]
具体的,对于步骤s2,将得到的c
smat1-c
smatn
一起放在一个时间窗内进行统计,利用统计算法得出声源角度。其中,所述时间窗可以理解为一个时间段,如以0.5s作为时间窗,即对每0.5s的数据做一次统计,统计一次时间窗内每帧每组的总共数据,例如选取5组麦克风组合,时间窗为0.5s,每帧是10ms,即0.01s,则一次统计总共是5*(0.5/0.01)=250的声源角度信息。
[0060]
在优选的实施例中,步骤s2中的所述根据预设的统计算法计算出初步声源角度,具体为:
[0061]
将0
°
至180
°
均匀分为18个区间,对预设的时间窗内的声源角度信息放入对应区间进行统计;
[0062]
计算每个区间的统计的声源角度信息个数,选取个数最多的区间并计算其对应的置信度;
[0063]
判断该区间对应的置信度是否满足预设第一阈值;
[0064]
若是,则对该区间的各个声源角度进行平均值统计,以统计得出的平均值作为初步声源角度;
[0065]
若否,则以前一个时间窗内输出的初步声源角度作为当前时间窗内的初步声源角度。
[0066]
具体的,预设的统计算法的具体步骤如下:
[0067]
如图3所示,首先将0
°-
180
°
,均匀分成18个区间,如0-10
°
、10
°-
20
°
等,对0.5s内的声源角度信息c
smat1-c
smatn
放入对应区间做计数;其次,统计得到各个区间的计数个数,找出其中个数最多的区间a,计算出置信度,其中,置信度=a区间个数/总个数;最后,判断置信度是否满足预设阈值,若置信度满足一定阈值(本实施例中设为50%),则对a区间各角度做一个平均值统计,得出平均值即为声源角度;如不满足则声源角度跟着前一时刻的值。
[0068]
需要说明的是,由于统计是实时进行的,每一个时间窗内都在进行数据统计,比如时间窗为0.5s,则每个0.5s都会得出一个声源角度,可以保存下来前面几个时间窗的输出。
[0069]
s3、在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0070]
具体的,对于步骤s3,判断场景下是否存在稳定的能量大的噪声,若是则认为需要过滤噪声,过滤后的得到最终的声源定位结果;若否,则不需要过滤。
[0071]
在优选的实施例中,步骤s3中的所述在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果,具体为:
[0072]
s31、采集并判断当前场景是否存在超过预设能量阈值的噪声,若是,则进行噪声信息过滤;
[0073]
s32、利用vad算法模块计算当前场景的vad信息,在根据所述vad信息判断当前帧为噪声时,采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出当前帧每组麦克风组合的声源角度信息;
[0074]
s33、将所述当前帧每组麦克风组合的声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法选取出峰值高度最大的中心位置,以该中心位置对应的角度作为噪声角度;
[0075]
s34、根据所述初步声源角度和噪声角度进行声源角度的二次判断,得到最终的声源定位结果。
[0076]
在优选的实施例中,步骤s34中的所述根据所述初步声源角度和噪声角度进行声源角度的二次判断,具体为:
[0077]
判断所述初步声源角度与所述噪声角度是否处于同一区间时;若否,则以所述初步声源角度作为最终声源角度;
[0078]
若是,则选取声源角度信息个数第二多的区间并计算其对应的置信度;执行下一步;
[0079]
判断该区间对应的置信度是否满足预设第二阈值;
[0080]
若是,则对所述声源角度信息个数第二多的区间的各个声源角度进行平均值统计,以统计得出的平均值作为最终声源角度;
[0081]
若否,则以声源角度信息个数最多的区间对应的所述初步声源角度作为最终声源角度。
[0082]
在具体的实施例中,首先通过判断场景是否存在稳定的能量大的噪声;如是,则认为需要过滤噪声信息,否则认为噪声角度为null,不进行该操作;利用vad信息,当判断当前帧为噪声时,进行步骤s1,得到噪声角度信息c
nmat1-c
nmatn
;进行步骤s2,找出峰值高度最大的中心位置,该角度即认为是噪声角度;如图4所示,如果判定出的声源角度和噪声角度是在同一区间,则对个数第二多的b区间,统计置信度,若置信度满足预设第二阈值(本实施例
中设为25%),则对b区间各角度做一个平均值统计,得出平均值即为声源角度,否则还是认为a区间统计的平均值为声源角度,此时认为说话人和噪声在同一角度。
[0083]
其中,在判断场景时需要进行一个能量统计,结合vad信息,得到在噪声段的能量,如果能量超过某个阈值,并且统计出的能量呈现一定的稳定性,则认为当前场景存在稳定的能量大的噪声,需要过滤噪声信息。根据vad信息来进行判断,vad作为一个分类器,把信号分成语音和噪声两类。
[0084]
在优选的实施例中,步骤s1中所述采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息,具体为:
[0085]
对每组麦克风组合中的两个麦克风进行声源信号采集,通过计算得到两个麦克风的声源信号的广义互相关函数,计算出两个声源信号之间的时间差;
[0086]
在所述广义互相关函数中选取高度前三的峰值位置,并换算为对应的实际角度,组成每帧每组麦克风组合的声源角度信息集合。
[0087]
具体的,对于gcc-phat方法,首先通过两个信号的广义相关函数估计出时间差,由得到的时间差可计算得到角度信息。在此基础上,利用频域加权函数对信号进行归一化处理,尽量减少噪声和混响的影响,突出峰值。
[0088]
选取两个麦克风,计算x1(k)和x2(k)的时间差,可以计算两个信号的互相关函数,找到使互相关函数最大的值即是这两个信号的时间差,
[0089]
r(τ)=e[x1(k)
·
x2(k+τ)];
[0090]
求时间差就是找到互相关函数最大时的点:
[0091]
d=argmaxr(τ);
[0092]
其中,x1(k)和x2(k)是代表两个麦克风上的信号,是一个数组。τ是时延,相当于对x2(k)进行左右移位。
[0093]
在优选的实施例中,所述计算得到两个麦克风的声源信号的广义互相关函数,具体为:
[0094]
分别对两个麦克风的声源信号对应的两路时域数据进行加窗分帧处理和短时傅里叶变换;
[0095]
转到频域后计算得到所述两路时域数据的互相关函数;
[0096]
采用加权函数凸显所述互相关函数的峰值后进行傅里叶变换,得到广义互相关函数。
[0097]
具体的,由于按照时域卷积的方式求互相关函数的方法计算复杂度较大,所以将在频域进行操作(通过傅里叶变换和傅里叶逆变换),互相关函数的频域等于x1信号频域的共轭乘以x2信号的频域。
[0098]
故先对两路时域数据(x1、x2)进行加窗分帧处理,并做短时傅里叶变换,转到频域,计算得到互相关函数,利用加权函数凸显峰值,再进行傅里叶逆变换,得到广义互相关函数,在此记为再从中寻找出高度前三的峰值位置,换算成实际角度组成c
mat

[0099]
其中为加权函数,可用相位变换加权函数,其表达式为:
[0100][0101]
其中,x1、x2是时域数据(x1、x2)经过短时傅里叶变换,得到的频域信息。
[0102]
具体的,由峰值位置换算得到具体角度的计算过程如下:
[0103]
1、最大时延为:δt=dx/vs;dx为两个麦克风的距离,vs为声速,即340m/s。
[0104]
两个麦克风间最大相差点数为:nd=fs*δt;fs为采样率;
[0105]
即两个麦克风a、b,采样点的相对差值范围在[-nd,nd]。本实施例以两个麦克风连线的法线方向设定为90
°
,此时相差0个点;声源从平行麦克风连线的左侧入射,设定为0
°
,时相差nd点;声源从平行麦克风连线的右侧入射,设定为180
°
,此时相差-nd点。
[0106]
2、假设现相差n个点,每个点的时间间隔为:1/fs,故声源相对两个麦克风a、b的距离差为:n*vs/fs;则角度为:
[0107]
本实施例提供的一种基于线性麦克风阵列的声源定位方法,包括:采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息;将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度;在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0108]
本实施例首先基于gcc-phat方案计算得出多组麦克风的相对角度;再利用统计算法做后处理,找出声源位置,定位说话人;与传统的声源定位算法相比,本实施例通过利用麦克风多通道的信息进行声源角度信息的计算,提升声源定位鲁棒性,优化在实际的视频会议场景中由于噪声和混响的存在而导致声源定位效果不佳的问题,提高音质体验,给出稳定的主讲人的定位角度,从而指导在视频会议中对主讲人进行搜索和定位,实现主讲人特写的效果。
[0109]
本发明第二实施例:
[0110]
请参阅图5。
[0111]
如图5所示,本实施例提供了一种基于线性麦克风阵列的声源定位装置,包括:
[0112]
声源角度计算模块100,用于采用gcc-phat方法对若干组麦克风组合分别进行声源角度计算,得出每帧每组麦克风组合的声源角度信息。
[0113]
具体的,对于声源角度计算模块100,首先基于gcc-phat的方法,对多组麦克风组合进行计算,得出每帧(10ms)每组的声源角度信息c
smat1
、c
smat2
、c
smat3
……
c
smatn
;其中,若干组麦克风为均匀分布的线性阵列,即每个麦克风间间距相同,选取合适距离的任意两个麦克风作为一组,在具体实施时,也可以选取多组以增加空间信息量;并且,若干组麦克风中的麦克风可以是重复的,即一个麦克风可以出现在多个组合中。
[0114]
声源角度统计模块200,用于将所述声源角度信息统一放置于预设的时间窗内进行统计,根据预设的统计算法计算出初步声源角度。
[0115]
具体的,对于声源角度统计模块200,将得到的c
smat1-c
smatn
一起放在一个时间窗内进行统计,利用统计算法得出声源角度。其中,所述时间窗可以理解为一个时间段,如以0.5s作为时间窗,即对每0.5s的数据做一次统计,统计一次时间窗内每帧每组的总共数据,例如选取5组麦克风组合,时间窗为0.5s,每帧是10ms,即0.01s,则一次统计总共是5*(0.5/
0.01)=250的声源角度信息。
[0116]
噪声过滤模块300,用于在判断当前场景需要过滤噪声信息后,对所述初步声源角度进行噪声信息过滤,过滤后得到最终的声源定位结果。
[0117]
具体的,对于噪声过滤模块300,判断场景下是否存在稳定的能量大的噪声,若是则认为需要过滤噪声,过滤后的得到最终的声源定位结果;若否,则不需要过滤,以所述初步角度作为最终声源定位结果。
[0118]
本实施例能够通过利用麦克风多通道的信息进行声源角度信息的计算,提升声源定位鲁棒性,优化在实际的视频会议场景中由于噪声和混响的存在而导致声源定位效果不佳的问题,提高音质体验,给出稳定的主讲人的定位角度,从而指导在视频会议中对主讲人进行搜索和定位,实现主讲人特写的效果。
[0119]
本发明的一个实施例提供了一种基于线性麦克风阵列的声源定位的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于线性麦克风阵列的声源定位方法。
[0120]
本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于线性麦克风阵列的声源定位方法。
[0121]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0122]
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0123]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0124]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0125]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变形,这些改进和变形也视为本发明的保护范围。
[0126]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1