语音信号频域频率的校正、啸叫检测、抑制方法及装置与流程
本发明涉及语音信号处理,尤其涉及语音信号频域频率的校正、啸叫检测、抑制方法及装置。
背景技术:
在k歌系统、会议系统等扩声设备,由播放设备播放的语音信号又采集到麦克风,麦克风采集的语音信号又经过播放设备播放出来,形成增益回路。如果同时满足:(1)|f(z)g(z)|≥1(2)∠f(z)g(z)=2nπ;则会破坏回路系统的稳定,其中f(z)为反馈增益函数;g(z)为前向增益函数。此时会在满足上述两个条件的频率点时就会发生刺耳的啸叫,如图1所示。啸叫的现象不仅影响了扩声系统的增益量,使得放大的音频信号混杂刺耳的声音,还减少了扩声设备的使用寿命。因此在扩声设备中需要抑制啸叫的发生。在实际使用扩声设备的场景中,由于反馈增益函数是不断变化,所以啸叫的频率点也是不断的变化。因此,在抑制啸叫方法中需要能自适应的跟踪啸叫频点的不断变化,否则将会出现啸叫。
现有技术中检测得到的啸叫频率与实际啸叫频率之间的误差较大,为了抑制啸叫,现有技术往往将陷波器的陷波带宽设置较大,因此啸叫信号附近的语音信号也被抑制,信号失真较大,用户体验较差。
另外,现有技术中,检测到候选啸叫频率点后,在验证候选啸叫频率点是否为啸叫频率点时,直接将获取的候选啸叫频率点的幅度与预设幅度阈值进行比较,这种验证候选啸叫频率点的方法误差较大,往往将正常语音信号的频率点错误判断为啸叫频率点,并进行陷波器抑制,进而造成语音信号失真。
技术实现要素:
基于上述现状,本发明的主要目的在于提供一种语音信号频域频率的校正、啸叫检测、抑制方法及装置,以减小检测得到的啸叫频率与实际啸叫频率之间的误差,另外进一步提高啸叫频率检测的准确率。
为实现上述目的,本发明采用的技术方案如下:
一种语音信号频域频率的校正方法,包括如下步骤:将语音信号划分为多个时域帧信号;对多个时域帧信号分别进行傅里叶变换得到多个频域帧信号;在每个频域帧信号中,根据每个频率对应的实部与虚部的比值计算每个频率的相位;计算当前频域帧信号中每个频率的相位与上一频域帧信号相同频率的相位之差得到相位差;对于当前频域帧信号的每个频率,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数,对每个频率分别加上对应的补偿系数与傅里叶变换的分辨率之积得到校正频率,从而获得当前校正频域帧信号。
在优选的方案中,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数具体为:计算所述相位差与π的比值得到校正相位差γ;对所述矫正相位差γ进行取整,得到取整结果α;按照下式计算补偿系数λ:
当α>0时,λ=γ-(α+(α&1)),
当α<0时,λ=γ-(α-(α&1)),
当α=0时,λ=γ,
其中,α&1表示将构成α的每个比特位分别与构成整数1的相应比特位进行逻辑与运算。
在优选的方案中,若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积大于(-β/2)、且不大于β/2时,对当前频域帧信号的所述某频率加上所述补偿系数与傅里叶变换的分辨率之积得到校正频率;其中,β表示所述傅里叶变换的分辨率;若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积不大于(-β/2)、或者大于β/2时,对当前频域帧信号的所述某频率不进行校正。
本发明还提供了一种语音信号啸叫频率的检测方法,包括任一所述的语音信号频域频率的校正方法,还包括如下步骤:若当前校正频域信号的某频率的幅值大于相邻的前一个频率的幅值、且大于相邻的后一个频率的幅值,则选择所述某频率为候选啸叫频率;计算候选啸叫频率的幅值与所述候选啸叫频率附近频率的平均幅值的幅值差,若所述幅值差大于第一预设幅值a且小于第二预设幅值b,则计算当前帧之前连续设定数量帧的校正频域信号中与所述候选啸叫频率相同的频率被选择为候选啸叫频率的次数,若所述次数大于预设次数阈值,则确定所述候选啸叫频率为啸叫频率;其中所述第一预设幅值a小于第二预设幅值b。
在优选的方案中,检测方法还包括如下步骤:若所述幅值差大于所述第二预设幅值b,则确定所述候选啸叫频率为啸叫频率。
在优选的方案中,检测方法还包括如下步骤:若所述幅值差小于所述第一预设幅值a,则确定所述候选啸叫频率不是啸叫频率。
在优选的方案中,所述候选啸叫频率附近频率不包括所述候选啸叫频率相邻的前一个频率和后一个频率。
本发明还提供了一种语音信号啸叫频率的检测方法,包括任一所述的校正方法,还包括如下步骤:按照幅值从大到小的顺序对所述当前校正频域信号中的频率进行排序;从幅值最大的频率开始对所述当前校正频域信号进行啸叫频率检测以获得啸叫频率。
本发明还提供了一种语音信号啸叫的抑制方法,包括任一所述的语音信号啸叫频率的检测方法,还包括如下步骤:根据检测到的啸叫频率设置陷波器的中心频率;利用所述陷波器对所述语音信号进行处理,得到抑制啸叫后的语音信号。
本发明还提供了一种语音信号频域频率的校正装置,包括:划分模块,用于将语音信号划分为多个时域帧信号;变换模块,用于对多个时域帧信号分别进行傅里叶变换得到多个频域帧信号;第一计算模块,用于在每个频域帧信号中,根据每个频率对应的实部与虚部的比值计算每个频率的相位;第二计算模块,用于计算当前频域帧信号中每个频率的相位与上一频域帧信号相同频率的相位之差得到相位差;校正模块,用于对于当前频域帧信号的每个频率,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数,对每个频率分别加上对应的补偿系数与傅里叶变换的分辨率之积得到校正频率,从而获得当前校正频域帧信号。
在优选的方案中,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数具体为:计算所述相位差与π的比值得到校正相位差γ;对所述矫正相位差γ进行取整,得到取整结果α;按照下式计算补偿系数λ:
当α>0时,λ=γ-(α+(α&1)),
当α<0时,λ=γ-(α-(α&1)),
当α=0时,λ=γ,
其中,α&1表示将构成α的每个比特位分别与构成整数1的相应比特位进行逻辑与运算。
在优选的方案中,若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积大于(-β/2)、且不大于β/2时,对当前频域帧信号的所述某频率加上所述补偿系数与傅里叶变换的分辨率之积得到校正频率;其中,β表示所述傅里叶变换的分辨率;若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积不大于(-β/2)、或者大于β/2时,对当前频域帧信号的所述某频率不进行校正。
本发明还提供了一种语音信号啸叫频率的检测装置,包括任一所述的语音信号频域频率的校正装置,还包括:候选单元,用于若当前校正频域信号的某频率的幅值大于相邻的前一个频率的幅值、且大于相邻的后一个频率的幅值,则选择所述某频率为候选啸叫频率;验证单元,用于计算候选啸叫频率的幅值与所述候选啸叫频率附近频率的平均幅值的幅值差,若所述幅值差大于第一预设幅值a且小于第二预设幅值b,则计算当前帧之前连续设定数量帧的校正频域信号中与所述候选啸叫频率相同的频率被选择为候选啸叫频率的次数,若所述次数大于预设次数阈值,则确定所述候选啸叫频率为啸叫频率;其中所述第一预设幅值a小于第二预设幅值b。
在优选的方案中,所述验证单元还用于,若所述幅值差大于所述第二预设幅值b,则确定所述候选啸叫频率为啸叫频率。
在优选的方案中,所述验证单元还用于,若所述幅值差小于所述第一预设幅值a,则确定所述候选啸叫频率不是啸叫频率。
在优选的方案中,所述候选啸叫频率附近频率不包括所述候选啸叫频率相邻的前一个频率和后一个频率。
本发明还提供了一种语音信号啸叫频率的检测装置,包括任一所述的校正装置,还包括:排序单元,用于按照幅值从大到小的顺序对所述当前校正频域信号中的频率进行排序;检测单元,用于从幅值最大的频率开始对所述当前校正频域信号进行啸叫频率检测以获得啸叫频率。
本发明还提供了一种语音信号啸叫的抑制装置,包括任一所述的语音信号啸叫频率的检测装置,还包括:设置单元,用于根据检测到的啸叫频率设置陷波器的中心频率;抑制单元,用于利用所述陷波器对所述语音信号进行处理,得到抑制啸叫后的语音信号。
【有益效果】
根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数,对每个频率分别加上对应的补偿系数与傅里叶变换的分辨率之积得到校正频率,从而获得当前校正频域帧信号,可以使从当前校正频域帧信号检测的啸叫频率与语音信号中实际的啸叫频率之间的误差较小。
另外,计算候选啸叫频率的幅值与所述候选啸叫频率附近频率的平均幅值的幅值差,比较幅值差与第一预设幅值a和第二预设幅值b的大小关系,可以降低将正常频率判定为啸叫频率的概率。
本发明的其他有益效果,将在具体实施方式中通过具体技术特征和技术方案的介绍来阐述,本领域技术人员通过这些技术特征和技术方案的介绍,应能理解所述技术特征和技术方案带来的有益技术效果。
附图说明
以下将参照附图对根据本发明的优选实施方式进行描述。图中:
图1是啸叫现象产生示意图
图2为根据本发明的一种优选实施方式的语音信号啸叫的抑制方法的示意图
图3为根据本发明的一种优选实施方式的语音信号啸叫的抑制系统的示意图
具体实施方式
图2为本发明语音信号啸叫的抑制方法一种实施例的流程图,该方法包括如下步骤。
s1、拾音装置(例如麦克风)采集获取语音信号,然后将语音信号划分为多个时域帧信号,即通常所谓的分帧。通常,相邻的时域帧信号之间在时域上要有相互重叠的部分,即通常所谓的帧移。可选的,为了使得后续进行傅里叶变换的效果更好,可以对时域帧信号进行加窗运算。
s2、对上述多个时域帧信号分别进行傅里叶变换(例如快速傅里叶变换)得到多个频域帧信号。第u帧频域帧信号中频域频点w的频域信号可以表示如下:
y(u,w)=s(u,w)+x(u,w);
其中,y(u,w)是指第u帧频域帧信号中频域频点w的频域信号(频域频点w对应的频率为w*β,β为傅里叶变换的分辨率,β=fs/fft_n;fs为采样率,fft_n为快速傅里叶变换的点数,其中,频域频点w表示对应的频率w*β在时域帧信号的位置点);x(u,w)是经过反馈路径之后,由麦克风采集到的语音信号(即由扬声器发出的语音信号)的频域信号,s(u,w)是近端(用户端发声)语音信号(即非由扬声器发出的语音信号)的频域信号。
s3、在频域里计算频域帧信号的幅值,例如幅度谱或者功率谱,可以表示如下:
其中,real表示取实部,imag表示取虚部;p为指数,p=1表示幅度谱;p=2表示功率谱。
s4、在每个频域帧信号中,根据每个频率对应的实部与虚部的比值计算每个频率的相位。具体而言,对每个频率对应的实部与虚部的比值采用反正切函数,即可以获得该频率的相位值。
phase(u,w)=atan2(imag(y(u,w)),imag(y(u,w)));
其中atan2是反正切函数,其值在[-π,π]之间。
s5、计算当前频域帧信号中每个频率的相位与相邻的上一频域帧信号相同频率的相位之差得到相位差δphase;例如,当前帧(第u帧)频域帧信号中频域频点w的相位phase(u,w)与相邻的上一帧(第u-1帧)频域帧信号中频域频点w的相位phase(u-1,w)之差δphase可以表示如下:
δphase=phase(u,w)-phase(u-1,w)。
s6、对于当前频域帧信号的每个频率,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数,对每个频率分别加上对应的补偿系数与傅里叶变换的分辨率之积得到校正频率,从而获得当前校正频域帧信号。经过校正后,当前帧(第u帧)频域帧信号中频域频点w的频域信号freq(u,w)可以表示如下:
freq(u,w)=freq0(u,w)+λ(u,w)*β
其中,freq0(u,w)指校正之前,当前帧(第u帧)频域帧信号中频域频点w的频域信号,freq0(u,w)=w*β,w为频域频点,λ(u,w)为当前帧(第u帧)频域帧信号中频域频点w的补偿系数,β为傅里叶变换的分辨率,β=fs/fft_n,fs为采样率,fft_n为快速傅里叶变换的点数。
在更优的实施例中,步骤s6中的根据相位差通过取整、比特位逻辑与运算确定对应的补偿系数的具体方式如下。
s61、计算所述相位差与π的比值得到校正相位差γ。具体而言,当前帧(第u帧)频域帧信号中频域频点w的补偿系数λ(u,w)可以表示如下:
λ(u,w)=(phase(u,w)-phase(u-1,w))*β/π。
s62、对所述矫正相位差γ进行取整,得到取整结果α;
s63、按照下式γ计算补偿系数λ:
当α>0时,λ=γ-(α+(α&1)),
当α<0时,λ=γ-(α-(α&1)),
当α=0时,λ=γ,
其中,α&1表示将构成α的每个比特位分别与构成整数“1”的相应比特位进行逻辑与运算。对于负数而言,构成该负数的最高位比特位为比特“1”,对于正数而言,构成该正数的最高位比特位为比特“0”。例如,以8位比特位表示上述数值为例,整数“1”表示为00000001,若α=1,则α表示为00000001,此时,α&1=00000001&00000001=00000001,因此α&1的数值为整数“1”;若α=2,则α表示为00000010,此时,α&1=00000010&00000001=00000000,因此α&1的数值为整数“0”;若α=-1,则α表示为10000001,此时,α&1=10000001&00000001=00000001,因此α&1的数值为整数“1”。
具体而言,当前帧(第u帧)频域帧信号中频域频点w的补偿系数λ(u,w)可以表示如下:
当α>0时,λ(u,w)=γ(u,w)-(α+(α&1)),
当α<0时,λ(u,w)=γ(u,w)-(α-(α&1)),
当α=0时,λ(u,w)=γ(u,w)。
实验验证,上述方案可以使从当前校正频域帧信号检测的啸叫频率与语音信号中实际的啸叫频率之间的误差很小,例如在一些实施例中该误差可以达到10hz左右,为后续准确检测啸叫频率提供基础。
在更优的实施例中,若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积大于(-β/2)、且不大于β/2时,对当前频域帧信号的所述某频率加上所述补偿系数与傅里叶变换的分辨率之积得到校正频率;其中,β表示所述傅里叶变换的分辨率;若当前频域帧信号的某频率对应的补偿系数与傅里叶变换的分辨率之积不大于(-β/2)、或者大于β/2时,对当前频域帧信号的所述某频率不进行校正。在本实施例中,经过校正后,当前帧(第u帧)频域帧信号中频域频点w的频域信号freq(u,w)可以表示如下:
这样可以防止由于出现的噪声导致频域频点w校正后的频域信号freq(u,w)可能与前一个频域频点w-1校正后的频域信号freq(u,w-1)重叠(或者与后一个频域频点w+1校正后的频域信号freq(u,w+1)重叠)。
在经过校正后的当前帧(第u帧)频域帧信号的基础上,进一步检测啸叫频率。
s7、以3个频域频率点为一个观察窗(w-1、w、w+1为一个观察窗),如果频域频率点w(对应频率w*β)的幅值大于相邻的前一个频域频率点w-1(对应前一个频率(w-1)*β)的幅值,且大于相邻的后一个频域频率点w+1(对应后一个频率(w+1)*β)的幅值,则将频域频率点w选择为候选啸叫频率,并更新候选啸叫频率(也可以称为候选啸叫频率点)的总个数n。这里的幅值可以为频域频率的幅度,或者功率值,或者对该幅度或功率值取对数得到的数值等,例如,当该幅值选择为频域频率的幅度时,可以表示如下:
当|y(u,w-1)|<|y(u,w)|且|y(u,w)|>|y(u,w+1)|,则选择频域频率点w所对应的频率为候选啸叫频率。
s8、向右滑动观察窗(w、w+1、w+2为一个观察窗),与步骤s7中类似,比较观察窗内频域频率的幅值之间的关系,如果频域频率点w+1的幅值大于相邻的前一个频域频率点w的幅值,且大于相邻的后一个频域频率点w+2的幅值,则将频域频率点w+1所对应的频率选择为候选啸叫频率,更新当前候选啸叫频率的个数n。以此类推,直至到达当前帧(第u帧)频域帧信号最后一个观察窗。
当候选啸叫频率个数n达到了预设个数m时,进入步骤s9,验证候选啸叫频率;
当候选啸叫频率个数n未达到预设个数m时,且依次检测完所有频率,进入进入步骤s9,验证候选啸叫频率;
在一个优选实施例中,在步骤s7之前,按照幅值从大到小的顺序对所述当前校正频域信号中的频率进行排序。例如,在排序之前,当前校正频域信号的频率点排序如下:1、2、3…w-2、w-1、w、w+1、w+2…,按照幅值从大到小排序后,前校正频域信号的频率点排序如下:3、2、1…w-2、w+1、w-1、w、w+2…。之后再进行步骤s7,那么第一个观察窗为(2、3、4),第二个观察窗为(1、2、3),依次类推。
s9、计算候选啸叫频率附近频率的平均幅值,例如,计算候选啸叫频率附近频率的功率谱或者幅度谱的平均值,或者对功率谱或者幅度谱取对数再取平均值,以候选啸叫频率点w附近频率的对数平均值为例,可以表示如下:
p为指数,p=1表示幅度谱;p=2表示功率谱,avrgp表示平均值,在本例子中,附近的频率不包括候选啸叫频率点w相邻的前一个频率点w-1和相邻的后一个频率点w+1,这样的平均幅值更能够反映实际啸叫频率附近多数频率的平均幅值,原因是,通常啸叫频率相邻的前一个频率和后一个频率的幅值也会较大,如果将这两者的幅值纳入计算得到的平均幅值值与附近多数频率的平均幅值不相符。
s10、判断候选啸叫频率的幅值与附近频率的平均幅值的幅值差,与第一预设幅值a和第二预设幅值b的关系,
若所述幅值差大于所述第二预设幅值b,表明候选啸叫频率的幅值异常突出,因此确定所述候选啸叫频率为啸叫频率;
若所述幅值差大于第一预设幅值a且小于第二预设幅值b(可以认为当前候选啸叫频率为单峰凸起),则计算当前帧之前连续设定数量帧的校正频域信号中与所述候选啸叫频率相同的频率被选择为候选啸叫频率的次数,若所述次数大于预设次数阈值,表明候选啸叫频率持续长时间单峰凸起,不满足语音信号特性,因此确定所述候选啸叫频率为啸叫频率;若所述幅值差大于所述第二预设幅值b,则确定所述候选啸叫频率为啸叫频率。
以幅值为对功率谱或者幅度谱取对数,平均幅值为对功率谱或者幅度谱取对数再取平均值为例,可以表示如下:
如果(log(|y(u,w)|p)-avrgp)>b,则确定当前候选频率点w为啸叫频率点;
如果a<(log(|y(u,w)|p)-avrgp)<b,则计算当前帧之前连续设定数量帧(例如4-8帧)的校正频域信号中与所述候选啸叫频率相同的频率被选择为候选啸叫频率的次数,若所述次数大于预设次数阈值ε,则确定所述候选啸叫频率点w为啸叫频率点;
如果次数未达到预设的阈值ε,则确定候选啸叫频率点w不是啸叫频率点,并对次数清零;
如果(log(|y(u,w)|p)-avrgp)<a,则确定候选啸叫频率点w不是啸叫频率点;其中a、b、ε为常量,且b>a。
s11、根据检测到的啸叫频率设置陷波器参数,例如陷波器的中心频率,以及设置陷波器的带宽,从而完成对陷波器的自适应更新设置。
s12、利用所述陷波器对拾音装置采集到的语音信号进行处理,得到抑制啸叫后的语音信号,并把该语音信号输送至扬声装置。
本发明还提供了一种语音信号频域频率的校正装置,包括:
划分模块,用于将语音信号划分为多个时域帧信号;
变换模块,用于对多个时域帧信号分别进行傅里叶变换得到多个频域帧信号;
第一计算模块,用于在每个频域帧信号中,根据每个频率对应的实部与虚部的比值计算每个频率的相位;
第二计算模块,用于计算当前频域帧信号中每个频率的相位与上一频域帧信号相同频率的相位之差得到相位差;
校正模块,用于对于当前频域帧信号的每个频率,根据所述相位差通过取整、比特位逻辑与运算确定对应的补偿系数,对每个频率分别加上对应的补偿系数与傅里叶变换的分辨率之积得到校正频率,从而获得当前校正频域帧信号。
本发明还提供了一种语音啸叫频率的检测装置,包括前述任一所述的语音信号频域频率的校正装置,还包括:
候选单元,用于若当前校正频域信号的某频率的幅值大于相邻的前一个频率的幅值、且大于相邻的后一个频率的幅值,则选择所述某频率为候选啸叫频率;
验证单元,用于计算候选啸叫频率的幅值与所述候选啸叫频率附近频率的平均幅值的幅值差,若所述幅值差大于第一预设幅值a且小于第二预设幅值b,则计算当前帧之前连续设定数量帧的校正频域信号中与所述候选啸叫频率相同的频率被选择为候选啸叫频率的次数,若所述次数大于预设次数阈值,则确定所述候选啸叫频率为啸叫频率;其中所述第一预设幅值a小于第二预设幅值b。
若所述幅值差大于所述第二预设幅值b,则确定所述候选啸叫频率为啸叫频率;
若所述幅值差小于所述第一预设幅值a,则确定所述候选啸叫频率不是啸叫频率。
所述候选啸叫频率附近频率不包括所述候选啸叫频率相邻的前一个频率和后一个频率。
本发明还提供了一种语音啸叫频率的检测装置,包括前述任一所述的校正装置,还包括:
排序单元,用于按照幅值从大到小的顺序对所述当前校正频域信号中的频率进行排序;
检测单元,用于从幅值最大的频率开始对所述当前校正频域信号进行啸叫频率检测以获得啸叫频率。
本发明还提供了一种语音啸叫的抑制装置,其特征是,包括前述任一所述的语音啸叫频率的检测装置,还包括:
设置单元,用于根据检测到的啸叫频率设置陷波器的中心频率;
抑制单元,用于利用所述陷波器对所述语音信号进行处理,得到抑制啸叫后的语音信号。
图3是本发明拾音装置和扬声装置构成的系统图。拾音装置包括依次连接的拾音单元、频率校正单元、检测候选啸叫频率单元、验证单元、陷波器参数配置单元和陷波器,另外拾音单元还与陷波器连接,扬声装置包括依次连接的音频放大单元和音频输出单元,频率校正单元、检测候选啸叫频率单元、验证单元和陷波器参数配置单元共同作用实现对陷波器的参数设置,拾音单元输出语音信号至陷波器,陷波器对拾音装置采集到的语音信号进行处理,得到抑制啸叫后的语音信号,并把该语音信号输送至扬声装置的音频放大单元,放大后的语音信号经由音频输出单元而产生声音。
拾音单元可以执行上述实施例的步骤s1,频率校正单元可以执行步骤s2-s6,检测候选啸叫频率单元可以执行步骤s7和s8,验证单元可以执行步骤s9-s11,陷波器参数配置单元可以执行步骤s11。
本领域的技术人员能够理解的是,在不冲突的前提下,上述各优选方案可以自由地组合、叠加。
应当理解,上述的实施方式仅是示例性的,而非限制性的,在不偏离本发明的基本原理的情况下,本领域的技术人员可以针对上述细节做出的各种明显的或等同的修改或替换,都将包含于本发明的权利要求范围内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除