一种基于麦克风阵列的双端讲话状态检测方法及装置与流程
本发明涉及通信音频检测技术领域,尤其是涉及一种基于麦克风阵列的双端讲话状态检测方法及装置。
背景技术:
在实时通话中,基于语音场景一般可划分为近端讲话、远端讲话和双端讲话。而在视频会议通话场景中,拾音距离较远(3~5m),而扬声器和麦克风的距离相比与说话人距离麦克风的位置要靠近很多,导致在麦克风拾音上会存在远端信号远大于近端信号的现象,并且这个差距可以达到20db以上,大大增加了回声消除的难度,尤其是对于双端讲话场景,容易出现近端抑制严重和回声消除不干净的情况。
而在双端讲话场景下,要能够保留近端语音,对于双端讲话场景的检测算法的准确性和鲁棒性要求非常高。对双端讲话检测而言,如果检测错误,会影响自适应滤波算法的收敛速度,严重时甚至会引起发散;另外双端讲话检测还用于指导后续的非线性残差抑制算法。目前,针对双端讲话检测的现有技术包括能量检测方法,以及基于近端信号和去线性回声信号的检测方法。
但是,在对现有技术的研究与实践过程中,本发明的发明人发现,现有技术存在如下缺陷:基于能量检测时,由于能量阈值选取较为固定且粗糙,导致误判率高的问题;而基于近端信号和去线性回声信号,需要进行归一化的互相关处理,从而得到检测参数进行双端讲话检测,由于近端环境噪声干扰性较强,在声学环境不稳定和非线性残差信号较大的情况下,阈值选取适应性较差,从而影响后续的双端讲话检测。因此,亟需一种能够克服现有技术中的缺陷的双端讲话状态检测方法及装置。
技术实现要素:
本发明实施例所要解决的技术问题在于,提供一种基于麦克风阵列的双端讲话状态检测方法及装置,能够有效识别当前麦克风和扬声器的双端讲话状态。
为解决上述问题,本发明的一个实施例提供一种基于麦克风阵列的双端讲话状态检测方法,至少包括如下步骤:
通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;
采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;
对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;
通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
作为优选方案,所述通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态,具体为:
判断所述最大峰值是否大于预设第一距离阈值,若否,则判定当前麦克风为远端讲话状态;若是,则判定当前麦克风为近端讲话状态或双端讲话状态,进行下一步判断;
判断是否有扬声器播放信号;若是,则判定当前麦克风为双端讲话状态;若否,则判定当前麦克风为近端讲话状态。
作为优选方案,所述基于麦克风阵列的双端讲话状态检测方法,还包括:
根据所述当前麦克风的双端讲话检测状态进行对应的非线性残差抑制处理。
作为优选方案,所述线性回声消除处理包括线性回声部分处理、非残性残留部分处理和滤波器更新策略。
作为优选方案,所述对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值,具体为:
分别对所述第一通道信号和第二通道信号的时域数据进行加窗分帧处理和短时傅里叶变换;
转到频域后计算得到所述第一通道信号和第二通道信号的互相关函数;
采用加权函数凸显所述互相关函数的峰值后进行傅里叶变换,得到广义互相关函数;
在所述广义互相关函数中选取出最大值,记为最大峰值。
作为优选方案,所述在所述广义互相关函数中选取出最大峰值,还包括:
根据两个麦克风之间的间距计算出对应的最大时延值,
根据所述最大时延值计算对应的采样率,并根据所述采样率从所述广义互相关函数中筛选出相应的点数,并记为第一采样集合;
从所述第一采样集合中选取出最大值,记为最大峰值。
作为优选方案,所述第一距离阈值,具体根据麦克风实际的阵型排布信息和两个麦克风之间的间距进行设定。
本发明的一个实施例提供了一种基于麦克风阵列的双端讲话状态检测装置,包括:
信号采集模块,用于通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;
回声消除模块,用于采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;
峰值检测模块,用于对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;
状态判断模块,用于通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
本发明的一个实施例提供了一种基于麦克风阵列的双端讲话状态检测的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于麦克风阵列的双端讲话状态检测方法。
本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于麦克风阵列的双端讲话状态检测方法。
实施本发明实施例,具有以下有益效果:
本发明实施例提供的一种基于麦克风阵列的双端讲话状态检测方法及装置,所述方法包括:通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
与现有技术相比,本发明实施例提供的一种基于麦克风阵列的双端讲话状态检测方法及装置,能够克服现有技术中由于声学环境差异性较大导致dtd算法适应性较差的问题,对于麦克风和扬声器相对位置固定的硬件终端能够有效判断出其双端讲话状态,提高判断双端讲话状态的准确性和适应性,提升回声算法处理表现。
附图说明
图1为本发明第一实施例提供的一种基于麦克风阵列的双端讲话状态检测方法的流程示意图;
图2为本发明第一实施例提供的另一种基于麦克风阵列的双端讲话状态检测方法的流程示意图;
图3为本发明第一实施例提供的一种求互相关函数的流程示意图;
图4为本发明第二实施例提供的一种基于麦克风阵列的双端讲话状态检测装置的结构示意图;
图5为本发明第二实施例提供的另一种基于麦克风阵列的双端讲话状态检测装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
首先介绍本发明可以提供的应用场景,如对麦克风和扬声器相对位置固定的硬件终端进行双端讲话状态的有效判断。
本发明第一实施例:
请参阅图1-3。
如图1所示,本实施例提供了一种基于麦克风阵列的双端讲话状态检测方法,至少包括如下步骤:
s101、通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;
具体的,对于步骤s101,主要通过麦克风采集其不同通道的原始语音数据,并将原始语音数据的语音模拟信号转换为语音数字信号。
s102、采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;
具体的,对于步骤s102,采用nlms(normalizedleastmeansquare归一化最小均方自适应滤波器)对采集的语音数字信号进行线性回声消除处理,在整个通话过程中,采集扬声器播放信号(称为参考数据)和麦克风接收信号(称为近端采集信号),并对近端采集信号进过算法处理,把对端讲话的声音消掉,再发送给对端。
s103、对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;
具体的,对于步骤s103,在dtd(doubletalkdetection双端讲话判断)算法环节:对第一个通道原始数据和第二个通道的残差信号做gcc(generalizedcrosscorrelation广义互相关函数法)运算,得到一个峰值。其中,通道原始数据就是麦克风的采集信号,原理是把模拟信号转换成数字信号,由系统的驱动模块得到。比如说现在使用的设备有8个麦克风,从系统驱动就可以得到8路原始数据。选取第1路原始数据作为第一个通道原始数据,然后对第8路原始数据,做一个线性回声消除,就得到第8路的残差信号(就是第二个通道的残差信号)。
其中,在本实施例中gcc算法基本步骤为通过两个信号的广义相关函数估计出时间差,在此基础上,利用频域加权函数对信号进行归一化处理,尽量减少噪声和混响的影响,检测出峰值。
计算第一通道信号和第二通道信号的时间差,可以计算两个信号的互相关函数,找到使互相关函数最大的值即是这两个信号的时间差,
r(τ)=e[x1(m)·x2(m+τ)]
求时间差d=argmaxr(τ)就是找到互相关函数最大时的点。
s104、通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
在优选的实施例中,所述通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态,具体为:
判断所述最大峰值是否大于预设第一距离阈值,若否,则判定当前麦克风为远端讲话状态;若是,则判定当前麦克风为近端讲话状态或双端讲话状态,进行下一步判断;
判断是否有扬声器播放信号;若是,则判定当前麦克风为双端讲话状态;若否,则判定当前麦克风为近端讲话状态。
具体的,对于步骤s104,首先语音信号按场景可以分成3类:近端、远端和双端。通过上文的dtd算法,选取出一个合适的阈值,可以把远端场景分出来,剩下的部分是近端&双端(b)没有区分好;对已采集的播放信号(已知量)进行判断,简单说播放如果有人声就是双端&远端(c)场景,没有人说话就是近端场景,通过这个可以检测可以把近端场景分出来;对b和c取一个交集,就是双端场景。
在优选的实施例中,如图2所示,所述基于麦克风阵列的双端讲话状态检测方法,还包括:
s105、根据所述当前麦克风的双端讲话检测状态进行对应的非线性残差抑制处理。
具体的,对于步骤s105,对远端和双端场景采用不同的处理策略,例如远端场景抑制加大(或者直接置0);双端场景抑制可以小一点(比如乘0.5,类似的操作);非线性残差抑制就是要把线性回声消除之后的结果中残留的远端成分抑制掉,避免对端听到他自己的声音。
在优选的实施例中,所述线性回声消除处理包括线性回声部分处理、非残性残留部分处理和滤波器更新策略。、
具体的,在线性回声消除环节,本实施例采用的方式为nlms:
线性回声部分:y(n)=wx(n);
非线性残留部分:e(n)=d(n)–y(n)=d(n)-wx(n);
滤波器更新策略:w(n+1)=w(n)+ηe(n)x(n)/(δ+x’(n)x(n));
其中,加粗代表矢量,其余为标量。
式中,y代表当前点估计出的线性回声的量;e代表当前点遗留的非线性部分;是输出值;d代表当前近端采集信号;x代表参考信号;w代表滤波器系数;为一个向量,比如阶数为1600,就代表w是一个1600个点组成的向量,是线性回声消除中要求得关键参数;n代表时间序列上的离散点;y(n)表示在n时刻的线性回声的量,是根据第一步计算的;x(n)在这里表示在n时刻的参考数据的一个向量,比如说阶数为1600,就代表从n时刻往前推1600个点,组成一个向量,这个是已知量;η为常量,δ为保护除数过小而引入。
在优选的实施例中,所述对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值,具体为:
分别对所述第一通道信号和第二通道信号的时域数据进行加窗分帧处理和短时傅里叶变换;
转到频域后计算得到所述第一通道信号和第二通道信号的互相关函数;
采用加权函数凸显所述互相关函数的峰值后进行傅里叶变换,得到广义互相关函数;
在所述广义互相关函数中选取出最大值,记为最大峰值。
具体的,由于按照时域卷积的方式求互相关函数的方法计算复杂度较大,所以将在频域进行操作(通过傅里叶变换和傅里叶逆变换),互相关函数的频域等于x信号频域的共轭乘以y信号的频域。如图3所示,首先故先对两路时域数据(d1、e2)进行加窗分帧处理,并做短时傅里叶变换,转到频域,计算得到互相关函数,利用加权函数凸显峰值,再进行傅里叶逆变换,得到广义互相关函数,在此记为rde(τ),再从rde(τ)中寻找出最大值。
其中,φ(ω)为加权函数,可用相位变换加权函数,其表达式为:
其中,时域分析是以时间轴为坐标表示动态信号的关系;频域分析是把信号变为以频率轴为坐标表示出来。时间域变换到频率域主要通过傅立叶级数和傅立叶变换实现。也就是fft运算,有专门的库可以直接调用,在此不进行详细阐述。
d1、e2是时域数据,经过fft以后就是d1和e2;
d1=fft(d1)
e2=fft(e2)
在求互相关函数时,将e[x1(m)·x2(m+τ)]中的x1和x2换成d1和e2。
在优选的实施例中,所述在所述广义互相关函数中选取出最大峰值,还包括:
根据两个麦克风之间的间距计算出对应的最大时延值,
根据所述最大时延值计算对应的采样率,并根据所述采样率从所述广义互相关函数中筛选出相应的点数,并记为第一采样集合;
从所述第一采样集合中选取出最大值,记为最大峰值。
具体的,考虑到声源到达两个麦克风的真实时延情况,需先从rde(τ)筛选出相应的点数,取点方式如下:
最大时延为:δt=dx/vs;dx为两个麦克风的距离,vs为声速,即340m/s。
点数为:nd=fs*δt;fs为采样率。
从rde(τ)筛选得到的值,记为cde(τ),再从cde(τ)中寻找出最大峰值点cmax。
其中,如果两个麦克风距离较近,nd数值较小,可对数据进行升采样处理,升采样通过插值实现。例如n倍升采样,通过2个信号点之间等间距地插入n-1个0点实现。
在优选的实施例中,所述第一距离阈值,具体根据麦克风实际的阵型排布信息和两个麦克风之间的间距进行设定。
具体的,近端和双工状态得到的最大峰值cmax会显著大于远端状态下得到的cmax,故此可结合实际的阵型排布,和两个麦克风间距来确定一个合适的阈值thr设定,可以分辨出近端和双端状态。
目前常见的麦克风阵型排布是线阵和圆阵;线阵就是麦克风在一条直线上;圆阵是几个麦克风构成一个圆;还有一种比较常见的是圆阵+圆心位置,比如“6+1”圆阵就是6个麦克风等分构成一个圆,再加一个在圆心位置的麦克风。
从而根据实际的阵型排布和间距进行算法仿真,得到的最大峰值cmax对应的有所不同,因此选取合适的阈值作为第一距离阈值。
本实施例提供的一种基于麦克风阵列的双端讲话状态检测方法,包括:通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
与现有技术相比,本实施例提供的一种基于麦克风阵列的双端讲话状态检测方法,在线性回声消除后,通过两个信号的广义互相关函数,寻找出相对时延的最大峰值,结合扬声器是否发声,可以有效检测双端讲话状态,克服现有技术中,因声学环境差异性较大,dtd算法适应性差的问题。并且对于麦克风和扬声器相对位置固定的硬件终端能够有效判断出双端讲话状态,提高判断双端讲话状态的准确性和适应性。
本发明第二实施例:
请参阅图4-5。
如图4所示,本实施例提供了一种基于麦克风阵列的双端讲话状态检测装置,包括:
信号采集模块100,用于通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;
回声消除模块200,用于采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;
峰值检测模块300,用于对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;
状态判断模块400,用于通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
在优选的实施例中,所述状态判断模块400,具体为:
判断所述最大峰值是否大于预设第一距离阈值,若否,则判定当前麦克风为远端讲话状态;若是,则判定当前麦克风为近端讲话状态或双端讲话状态,进行下一步判断;
判断是否有扬声器播放信号;若是,则判定当前麦克风为双端讲话状态;若否,则判定当前麦克风为近端讲话状态。
在优选的实施例中,所述基于麦克风阵列的双端讲话状态检测装置,还包括:
非线性残差抑制模块500,用于根据所述当前麦克风的双端讲话检测状态进行对应的非线性残差抑制处理。
在优选的实施例中,所述线性回声消除处理包括线性回声部分处理、非残性残留部分处理和滤波器更新策略。
在优选的实施例中,所述峰值检测模块300,具体为:
分别对所述第一通道信号和第二通道信号的时域数据进行加窗分帧处理和短时傅里叶变换;
转到频域后计算得到所述第一通道信号和第二通道信号的互相关函数;
采用加权函数凸显所述互相关函数的峰值后进行傅里叶变换,得到广义互相关函数;
在所述广义互相关函数中选取出最大值,记为最大峰值。
在优选的实施例中,所述峰值检测模块300,还包括:
根据两个麦克风之间的间距计算出对应的最大时延值,
根据所述最大时延值计算对应的采样率,并根据所述采样率从所述广义互相关函数中筛选出相应的点数,并记为第一采样集合;
从所述第一采样集合中选取出最大值,记为最大峰值。
本实施例提供的一种基于麦克风阵列的双端讲话状态检测装置,包括:信号采集模块100,用于通过麦克风采集不同通道对应的语音模拟信号,并将所述语音模拟信号转换为语音数字信号,得到第一通道信号和第二通道信号;回声消除模块200,用于采用nlms算法对所述第一通道信号和所述第二通道信号进行线性回声消除处理;峰值检测模块300,用于对所述第一通道信号和所述第二通道信号进行gcc运算,通过两个通道信号的广义互相关函数计算时延值后进行峰值检测,得到最大峰值;状态判断模块400,用于通过所述最大峰值和预设第一距离阈值进行比较,判断当前麦克风的双端讲话检测状态。
本实施例提供的一种基于麦克风阵列的双端讲话状态检测装置,在线性回声消除后,通过两个信号的广义互相关函数,寻找出相对时延的最大峰值,结合扬声器是否发声,可以有效检测双端讲话状态,克服现有技术中,因声学环境差异性较大,dtd算法适应性差的问题。并且对于麦克风和扬声器相对位置固定的硬件终端能够有效判断出双端讲话状态,提高判断双端讲话状态的准确性和适应性。
本发明的一个实施例提供了一种基于麦克风阵列的双端讲话状态检测的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于麦克风阵列的双端讲话状态检测方法。
本发明的一个实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述的基于麦克风阵列的双端讲话状态检测方法。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变形,这些改进和变形也视为本发明的保护范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除