本发明涉及一种风噪抑制方法及其系统,尤其涉及一种适用于人工耳蜗的风噪抑制方法及其系统。
背景技术:
风噪源于起风时气流与麦克风振膜之间的碰撞,空气湍流中含有气压波动,触碰到麦克风时,这股波动便会被麦克风转换为电流信号的波动,因此风噪对麦克风的收入信息影响非常大,能够重度干扰人工耳蜗使用者对言语的识别。为了提高人工耳蜗的用户体验,风噪抑制功能是不可或缺的,市面上有很多风噪抑制方法,但是绝大部分方法都无法直接应用于人工耳蜗上。首先,人工耳蜗的语音处理器一般置于使用者的耳背,机体轻小是重点,无法进行硬件上的抗风噪改装;其次,风噪抑制只是人工耳蜗语音处理器功能的一小部分,大部分运算空间及时间需要留给其它功能,例如言语策略、电极脉冲安排和其它语音增强功能(包括未来应需求所新增的功能),这一系列功能都必须实时完成。许多应用于手机以及耳机上的风噪抑制方法在人工耳蜗上计算量过高并不理想。因此,开发一个计算量要求低但是又有效的风噪抑制方法很重要。
技术实现要素:
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种适用于人工耳蜗的风噪抑制方法及其系统,其能对声音信号进行动态风噪抑制处理。
为实现上述目的,本发明提供了一种适用于人工耳蜗的风噪抑制方法,其包括如下步骤:(a)将输入的数字信号分割成信号帧;(b)首先,通过wola分析滤波器组将信号帧从初始时域信号转换成初始频域信号,其次,计算初始频域信号各频带的能量值,得到能量谱,再次,探测初始频域信号的风噪特征并进行是否含有风噪的判断,最后,风噪特征的判断结果构成风噪探测数值,并且不同风噪特征的判断结果以不同的幅度更新风噪探测数值;(c)设定初始值及风噪阈值,当风噪探测数值从初始值增涨至风噪阈值,不再增涨,此时开启风噪状态,当风噪探测数值从风噪阈值降低至初始值时,不再降低,此时关闭风噪状态,以此周而往复;(d)将能量谱转为db值;计算能量谱的中心频率区域的平均能量值作为舒适水平值;设定风噪频率,将低于风噪频率的频带进行分组;计算每个频带组的最小能量值;利用舒适水平值与每个频带组最小能量值之间的差获得与频带组数量相同的db增益,并转为线性增益;每个低于风噪频率的频带分配其所属频带组的对应的线性增益,高于风噪频率的频带则分配增益1,各频带都获得对应的最终增益;对初始频域信号各频带施加对应的最终增益,获得新频域信号;通过wola分析的反向操作wola合成函数将新频域信号变换到新时域信号,获得风噪抑制后的信号帧。
在步骤b中,风噪特征包括低频能量比,子带频谱质心及其谐波特征三种中的任意几种。
风噪特征还包括初始时域信号的过零率。进一步,设定过零率阈值,当过零率小于过零率阈值时,判断当下信号帧含有风噪,反之为无风噪。
低频能量比的判断方法:设定低频能量比阈值,当低频能量比大于低频能量比阈值时,判断当下信号帧含有风噪,反之为无风噪。
子带频谱质心的判断方法:设定子带频谱质心阈值,当子带频谱质心小于子带频谱质心阈值时,判断当下信号帧含有风噪,反之为无风噪。
谐波特征的判断方法:从频带1-5中找出峰值最大的基频峰,然后自基频峰开始至频带20搜索峰点,每个频带频宽为62.5hz,当发生以下任一情况时,则判断为无风噪:找不到基频峰;自基频峰至频带20搜索峰点时有超过2个峰值大于四分之一基频峰值的峰点;自基频峰至频带20搜索峰点时,有峰值大于两倍基频峰值的峰点。
在步骤d中,当一个频带组的线性增益被发现小于前一个频带组的线性增益时,使用前一个频带组的线性增益。
在步骤d中,如果计算频带组最小能量值时,发现数值较舒适水平值小,则停止当下及剩余频带组的增益计算。
本发明还提供了一种适用于人工耳蜗的风噪抑制系统,其包括分帧程序模块,风噪探测程序模块,风噪判断程序模块,及其风噪抑制程序模块,其中,该分帧程序模块对数字信号进行分帧处理,该风噪探测程序模块进行风噪探测处理,其包括wola分析程序模块,能量谱计算程序模块,风噪特征探测程序模块及其更新风噪探测数值程序模块,该风噪判断程序模块进行风噪判断处理,该风噪抑制程序模块进行风噪抑制处理,其包括增益计算程序模块,增益施加程序模块及其wola合成程序模块。
本发明适用于人工耳蜗的风噪抑制方法及其系统通过实时探测风噪特征进而对声音信号进行动态风噪抑制处理,提高了在风噪环境下声音信号中语音的清晰度、识别率,从而改善了使用者的使用体验,而且可适用于低功耗的处理器,应用场景广泛。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明适用于人工耳蜗的风噪抑制方法的流程图。
图2是本发明风噪探测的流程图。
图3是本发明风噪抑制的流程图。
图4是信号帧含有风噪时的能量分布示意图。
图5是信号帧无风噪时的能量分布示意图。
图6是本发明风噪抑制效果能量分布示意图。
具体实施方式
如图1所示,本发明提供了一种适用于人工耳蜗的风噪抑制方法,其包括分帧,风噪探测,风噪判断及其风噪抑制四个步骤。
分帧:将输入的数字信号分割成信号帧,以利于后续的分析和处理。
如图2所示,风噪探测包括wola(weightedoverlapandadd)分析,能量谱计算,风噪特征探测及其更新风噪探测数值四个步骤。
wola分析:通过wola分析滤波器组将信号帧从初始时域信号转换成初始频域信号,其中,wola分析滤波器组是dft(discretefouriertransform)滤波器组的高效实现方式,可将声音信号分解为从0到频率fs/2不同频率的窄带信号,获得信号帧频谱的数据,适合对音频信号进行快速处理。
能量谱计算:计算初始频域信号各频带的能量值,去除复数,得到相应的能量分布,即能量谱。
风噪特征探测:探测初始频域信号的风噪特征并进行是否含有风噪的判断,其中,风噪特征为能对信号帧是否含有风噪进行区别的特征,比如初始频域信号的低频能量比(low-to-high-frequencyenergyratio)、子带频谱质心(spectralsub-bandcentroid)及其谐波特征。
低频能量比是指在能量谱中,低频区域对高频区域的能量比值,因为风噪低频信息含量高,所以当低频能量比大于低频能量比阈值时,判断当下信号帧含有风噪,低频能量比阈值的数值可根据实际情况设定。含有风噪时信号低频部分肯定是偏大的,而信号低频部分偏大时,风噪却不一定存在,所以用低频能量比做风噪探测时,大多情况下漏判率低,但是误判率高。
子带频谱质心是指选取频谱中的一个局部频率范围,在范围内根据各频率能量值计算频率质心的位置,质心的频率代表了信号帧的能量在选取频率范围内集中的位置,和计算一个物体质心的位置一个道理,只是这里计算的是信号帧的能量集中在一个频率范围内的位置。即使是在低频范围中,风噪的频率重心也会偏向更低处,所以当子带频谱质心小于子带频谱质心阈值时,判断当下信号帧含有风噪,该方法误判率以及漏判率相对平衡。
不同于人类的语音,风噪基本上最多只会有一个幅度很小的谐振峰,而基频峰也只处于小于300hz的位置,所以通过谐波现象就能判断有无风噪。如果能在能量谱上追踪到多个峰值相较于基频峰算大的谐振峰,则代表当下信号帧极大可能是没有被风噪干扰的纯净语音信号。图4及图5中,n为风噪能量分布,s为纯净语音信号能量分布,信号帧能量分布x=s n。如图4所示,此信号帧能量分布x仅有一个谐振峰,其含有风噪;相对的,如图5所示,此信号帧能量分布含x有多个幅度大的谐振峰,其无风噪。因为谐波现象明显时,风噪基本是不会存在的,所以用谐波特征作为风噪探测指标时,真负率(truenegativerate)较高,真负率指实际无风噪然后判断出无风噪的几率。
进一步,初始时域信号的特征也可用于风噪特征探测,比如过零率,过零率是指一定时间内信号变换正负符号的比率。过零率会受信号频谱幅度值最高的几个频带影响,如果幅度值比较高的几个频带都处于高频区,则信号会产生高过零率;相反,如果幅度值比较高的几个频带都处于低频区,则信号会产生低过零率。因为风噪属于低频信号,信号帧的过零率越低,则越有可能是风噪。当过零率大于过零率阈值时,判断为无风噪。根据所设定的过零率阈值,其漏判率和误判率会有所变动,一般低漏判率会导致高误判率,而低误判率会导致高漏判率。
更新风噪探测数值:风噪探测数值由风噪特征构成,不同探测方法取得的风噪特征有不同的优势与劣势,例如:过零率在误判率低的情况下,漏判率会较高,这种情况下如果判断结果为“含有风噪”,则现实“含有风噪”的几率很大;谐波特征是真负率高,这种情况下如果判断结果为“无风噪”,则现实“无风噪”的几率很大,为了在保证低漏判率的同时降低误判率,不同风噪特征的判断结果以不同的幅度更新风噪探测数值,风噪特征在每一次做出判断的同时,会对风噪探测数值进行相应的递增以及递减,即判断含有风噪则递增,判断无风噪则递减,且误判率低的风噪特征设较大递增数值,漏判率低的风噪特征设较大递减数值。
风噪判断:因为风有时会渐弱、背景噪声有时会干扰、加上以上探测方法不可能100%准确,所以就算一直身处在一个风噪环境中,肯定会有一些信号帧不会被判断为含有风噪,相反,就算在无风噪环境下,也有个别的信号帧可能会被判断为含有风噪,所以,仅仅进行逐帧的独立判断会导致判断结果太零散,造成风噪抑制开关切换太频繁,引起不舒适感,故,设定初始值及风噪阈值,初始值与风噪阈值的设定将时间因素纳入判断方法中,并以此进行稳定的环境状态判断,当风噪探测数值从初始值增涨至风噪阈值,不再增涨,此时开启风噪状态,即进入下一步对信号帧进行风噪抑制处理,当风噪探测数值从风噪阈值降低至初始值时,不再降低,此时关闭风噪状态,即停止对信号帧进行风噪处理,以此周而往复,其中,初始值设为0。
不同于一般的“风噪探测数值大于所设阈值即为含有风噪,风噪探测数值小于所设阈值即无风噪”的手法,这里加入了“环境状态”。刚开始,系统会判断当下为无风噪状态,而风噪探测数值为0。在关闭风噪状态下,每个信号帧都会被判为无风噪,风噪探测数值需要增长到风噪阈值才会开启风噪状态;在开启风噪状态下,每个信号帧都会被判为含有风噪,风噪探测数值需要回到0才会回到关闭风噪状态。风噪探测数值会被限制在0至风噪阈值的范围内。这样做能保证风噪抑制的开关切换之间有一定的缓冲和判断时间,有效回避了风噪抑制开关频繁切换的情况
如图3所示,风噪抑制包括增益计算,增益施加,及其wola合成三个步骤。
增益计算:因为风噪的频率不会很高,所以设定一个风噪频率,只对低于风噪频率的频带进行处理,其余的频带增益皆设为1,计算当下信号帧中纯净语音的能量估值当做舒适水平值,然后将低于风噪频率的频带按照顺序分组,再将各频带以组为单位衰减(即同一组的频带衰减力度相同)。
舒适水平值是指当下语音信号如果不受风噪影响,本应会有的平均能量值。因为纯净语音信号的响度是根据人工耳蜗使用者的处境随时变化的,所以设定固定的舒适水平值并不理想。因为高于风噪频率以上的部分基本没有被风噪影响,所以舒适水平值可以用当下信号帧高于风噪频率以上的频带的平均能量值计算,为了节省运算量,可选取纯净语音信号集中的频带的平均能量值进行计算。
将频带分组有两个好处:第一,保留一定的低频言语信息,即保留低频区域的峰点和局部变化趋势,如果增益计算是针对单个频带的,则最终每个频带的能量值都会被降至舒适水平值附近,频谱上低频区域所有的峰点都会被消除,因此,这里将频带分组,邻近的频带会被分至同一组,而增益的计算变成以组为单位,虽然每一组频带的整体能量水平会被降至舒适水平值附近,但是只要是同一组内的频带,衰减力度都相同,这样做能够维持组内频带之间的能量差值,也成功保留了各个峰点;第二,节省运算量,以组为单位进行增益计算可以减少db转线性等运算的数量。
增益的计算步骤如下:
1、将能量谱转为db值;
2、计算能量谱的中心频率区域的平均能量值作为舒适水平值,其中,中心频率区域为纯净语音信号集中的频带,范围为3000hz-4000hz。
3、设定风噪频率,将低于风噪频率的频带进行分组;
4、计算每个频带组的最小能量值。
5、利用舒适水平值与每个频带组最小能量值之间的差获得与频带组数量相同的db增益,并转为线性增益。
6、分配增益至所有频带,每个低于风噪频率的频带分配其所属频带组的对应的线性增益,高于风噪频率的频带则分配增益1,各频带都获得对应的最终增益。
在步骤5中,考虑到风噪频谱呈衰退趋势,需要确保对频带进行衰减时,频带数越高,衰减力度越低。为了排除不符合此趋势的变数,当一个频带组的线性增益被发现小于前一个频带组的线性增益时,丢弃当下线性增益,使用前一个频带组的线性增益。另外,因为风噪不一定会达到风噪频率,所以如果计算频带组最小能量值时,发现数值较舒适水平值小,则停止当下及剩余频带组的增益计算,节省运算量。
增益施加:对初始频域信号各频带施加对应的最终增益,获得新频域信号。
wola合成:通过wola分析的反向操作wola合成函数将新频域信号变换到新时域信号,获得风噪抑制后的信号帧。
以声音信号频率fs=16khz为例,进一步说明该适用于人工耳蜗的风噪抑制方法。
分帧:将信号进行分帧,帧长为64,即一帧为4ms。
wola分析:
将初始时域信号转换为从0到fs/2=8000hz不同频率的窄带信号,获得128个初始频域信号,每个频带频宽为8000/128=62.5hz:
其中,
能量谱计算:
计算初始频域信号的能量谱:
风噪特征提取:
低频能量比:
其中,k为最高频带数128,将低频区域的高截止频带b设为16,高截止频率fs/2/k*b=1000hz,即低频区域与高频区域的分界点,低频能量比阈值设为40,当低频能量比lhfr大于低频能量比阈值时,判断当下信号帧含有风噪,反之为无风噪;
子带频谱质心:
其中,ks为频谱低频局部的高截止频带,当子带频谱质心slc小于子带频谱质心阈值
其中,fs为信号采样率,k为最高频带数;
谐波特征:从代表前300hz的5个频带中提取基频峰,并从该基频峰处开始,直到频带20处,记录有几个幅度大于(基频峰值/4)的峰点,当符合条件的峰点数大于2时,判断当下信号帧为纯语音信号,无风噪,另外,当前5个频带中找不到基频峰时,或者在搜索峰点的过程中,有谐振峰的峰值高于(基频峰值*2),也判断当下信号帧无风噪,反之则判断为含有风噪,具体步骤如下:
从频带1-5中找出峰值最大的基频峰,然后自基频峰开始至频带20搜索峰点,当发生以下任一情况时,则判断为无风噪:a、找不到基频峰;b、自基频峰至频带20搜索峰点时有超过2个峰值大于(基频峰值/4)的峰点;c、自基频峰至频带20搜索峰点时,有峰值大于(基频峰值*2)的峰点。
过零率:
其中,l为每帧信号长度,过零率阈值设为0.1,以达到漏判率和误判率的相对平衡。
更新风噪探测数值:以选取低频能量比和谐波特征作为风噪特征为例,当低频能量比判断为含有风噪时,使风噪探测数值ds递增数值4,反之则递减数值5;当谐波特征判断为含有风噪时,使风噪探测数值ds递增数值2,反之则递减数值4,将风噪阈值
风噪判断:根据风噪探测数值ds进行最终的风噪判断,当风噪探测数值ds增涨至700时,开启风噪状态,即进入下一步;当风噪探测数值ds降低至0时,关闭风噪状态,当风噪状态处于开启时,对信号帧进行风噪抑制处理;当风噪状态处于关闭时,不对信号帧进行风噪抑制处理,初始时默认关闭风噪状态。
增益计算:
1、对能量谱e(k)取对数,获得以db为单位的能量谱
2、再计算
3、将前3000hz的频带1-48按照4个分成一组的模式,即频带1-4分成一组,后面类推,分成m=12个组;
4、计算每个频带组的最小能量值:
5、利用舒适水平值scl与每个频带组最小能量值之间的差获得与频带组数量相同的db增益,并转为线性增益:
6、分配增益至所有频带,每个低于3000hz的频带分配其所属频带组的对应的线性增益,剩下的频带49-128则填入增益1,各频带获得对应的最终增益。
如图6所示,x为初始能量分布曲线,y为x根据以上步骤,低频频带组最小能量值被降至舒适水平值c附近后的新能量分布曲线。
增益施加:对初始频域信号各频带施加对应的最终增益,获得新频域信号:
wola合成:将新频域信号y(k)变换到新时域信号,获得风噪抑制后的信号帧。
一种使用该风噪抑制方法的系统,包括分帧程序模块,风噪探测程序模块,风噪判断程序模块,及其风噪抑制程序模块,其中,该分帧程序模块对数字信号进行分帧处理,该风噪探测程序模块进行风噪探测处理,具体为wola分析处理、能量谱计算处理、风噪特征探测处理及其更新风噪探测数值处理,该风噪判断程序模块进行风噪判断处理,该风噪抑制程序模块进行风噪抑制处理,具体为增益计算处理、增益施加处理及其wola合成处理,wola分析处理、能量谱计算处理、增益施加处理及其wola合成处理均可由可配置信号处理加速器完成,分帧处理、风噪特征探测处理、更新风噪探测数值处理、风噪判断处理及其增益计算处理均可由数字信号处理器完成,两个处理器各司其职、相互配合,降低单个处理器的计算负载,提高了运算效率。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
1.一种适用于人工耳蜗的风噪抑制方法,其包括如下步骤:(a)将输入的数字信号分割成信号帧;(b)首先,通过wola分析滤波器组将信号帧从初始时域信号转换成初始频域信号,其次,计算初始频域信号各频带的能量值,得到能量谱,再次,探测初始频域信号的风噪特征并进行是否含有风噪的判断,最后,风噪特征的判断结果构成风噪探测数值,并且不同风噪特征的判断结果以不同的幅度更新风噪探测数值;(c)设定初始值及风噪阈值,当风噪探测数值从初始值增涨至风噪阈值,不再增涨,此时开启风噪状态,当风噪探测数值从风噪阈值降低至初始值时,不再降低,此时关闭风噪状态,以此周而往复;(d)将能量谱转为db值;计算能量谱的中心频率区域的平均能量值作为舒适水平值;设定风噪频率,将低于风噪频率的频带进行分组;计算每个频带组的最小能量值;利用舒适水平值与每个频带组最小能量值之间的差获得与频带组数量相同的db增益,并转为线性增益;每个低于风噪频率的频带分配其所属频带组的对应的线性增益,高于风噪频率的频带则分配增益1,各频带都获得对应的最终增益;对初始频域信号各频带施加对应的最终增益,获得新频域信号;通过wola分析的反向操作wola合成函数将新频域信号变换到新时域信号,获得风噪抑制后的信号帧。
2.如权利要求1所述的风噪抑制方法,其特征在于:在步骤b中,风噪特征包括低频能量比,子带频谱质心及其谐波特征三种中的任意几种。
3.如权利要求2所述的风噪抑制方法,其特征在于:风噪特征还包括初始时域信号的过零率。
4.如权利要求3所述的风噪抑制方法,其特征在于:设定过零率阈值,当过零率小于过零率阈值时,判断当下信号帧含有风噪,反之为无风噪。
5.如权利要求2所述的风噪抑制方法,其特征在于:低频能量比的判断方法:设定低频能量比阈值,当低频能量比大于低频能量比阈值时,判断当下信号帧含有风噪,反之为无风噪。
6.如权利要求2所述的风噪抑制方法,其特征在于:子带频谱质心的判断方法:设定子带频谱质心阈值,当子带频谱质心小于子带频谱质心阈值时,判断当下信号帧含有风噪,反之为无风噪。
7.如权利要求2所述的风噪抑制方法,其特征在于:谐波特征的判断方法:从频带1-5中找出峰值最大的基频峰,然后自基频峰开始至频带20搜索峰点,每个频带频宽为62.5hz,当发生以下任一情况时,则判断为无风噪:找不到基频峰;自基频峰至频带20搜索峰点时有超过2个峰值大于四分之一基频峰值的峰点;自基频峰至频带20搜索峰点时,有峰值大于两倍基频峰值的峰点。
8.如权利要求1所述的风噪抑制方法,其特征在于:在步骤d中,当一个频带组的线性增益被发现小于前一个频带组的线性增益时,使用前一个频带组的线性增益。
9.如权利要求1所述的风噪抑制方法,其特征在于:在步骤d中,如果计算频带组最小能量值时,发现数值较舒适水平值小,则停止当下及剩余频带组的增益计算。
10.一种适用于人工耳蜗的风噪抑制系统,其特征在于:包括分帧程序模块,风噪探测程序模块,风噪判断程序模块,及其风噪抑制程序模块,其中,该分帧程序模块对数字信号进行分帧处理,该风噪探测程序模块进行风噪探测处理,其包括wola分析程序模块,能量谱计算程序模块,风噪特征探测程序模块及其更新风噪探测数值程序模块,该风噪判断程序模块进行风噪判断处理,该风噪抑制程序模块进行风噪抑制处理,其包括增益计算程序模块,增益施加程序模块及其wola合成程序模块。
技术总结