CN112954576B - 基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 - Google Patents
基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 Download PDFInfo
- Publication number
- CN112954576B CN112954576B CN202110149660.6A CN202110149660A CN112954576B CN 112954576 B CN112954576 B CN 112954576B CN 202110149660 A CN202110149660 A CN 202110149660A CN 112954576 B CN112954576 B CN 112954576B
- Authority
- CN
- China
- Prior art keywords
- energy
- howling
- module
- sub
- band
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04R—LOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
- H04R29/00—Monitoring arrangements; Testing arrangements
Landscapes
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Otolaryngology (AREA)
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Acoustics & Sound (AREA)
- Signal Processing (AREA)
- Circuit For Audible Band Transducer (AREA)
Abstract
本发明公开一种基于滤波器组的数字助听器啸叫检测与抑制方法及其硬件实现方法。所述的数字助听器啸叫检测与抑制方法通过全相位FIR滤波器组对输入音频信号采用折叠相加再卷积的方法进行滤波处理后,由啸叫检测模块依次遍历所有的子带信号,检测出含有啸叫的子带,然后由啸叫抑制模块通过降低含有啸叫的子带信号的增益从而实现抑制啸叫。本发明解决了传统啸叫检测与抑制算法需要使用FFT而带来的计算复杂度高,不适合用于设计助听器专用集成电路的问题,基于滤波器组,实现了在时域进行啸叫的检测与抑制,而不需要复杂的FFT运算,大大节省了电路面积。
Description
技术领域
本发明涉及数字助听器技术领域,特别是涉及基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法。
背景技术
对于听力障碍的人群,一部分的听力障碍患者可以通过手术和药物来治疗,但还有相当一部分患者无法通过药物进行治疗,佩戴数字助听器是他们恢复听力的最佳方案。在使用数字助听器的过程中,由于麦克风和扬声器之间距离过近而导致的声反馈现象,无疑是最恼人且最影响患者使用的问题。
由于数字助听器集成度高,体积较小,从扬声器输出的信号很容易从耳塞与耳道之间的缝隙或助听器的通气孔泄露出去。泄露的声音信号被麦克风重新拾取,并从扬声器再次输出,这个过程会构成一个闭合的反馈回路。当整个系统的增益过大且满足一定的相位条件时,就会引起系统的不稳定,最终引起助听器产生啸叫。通常来说,在啸叫产生的初期,啸叫信号在时域上表现为持续时间长,在频域上表现为单一频点的尖峰信号。声反馈现象的存在会影响整个系统的性能、损坏音质并限制助听器可实现的增益。因此,及时发现并消除啸叫信号,对提高数字助听器的使用效果和使用寿命是至关重要的。
陷波法是去除啸叫的常用方法之一,它分为啸叫检测与啸叫抑制两个部分。传统的啸叫检测算法基于快速离散傅里叶变换(FFT),需要先将信号转换至频域,再分析信号是否符合啸叫在频域的特点,从而进行啸叫的检测与判断。这种啸叫检测方法的准确度与FFT的点数成正相关,但是当增加FFT的点数时,计算量会大大增加。因此,这样的方法不适用于数字助听器电路的设计。
发明内容
本发明的目的是针对现有技术中存在的技术缺陷,而提供一种新型啸叫检测与抑制算法以及硬件实现方法。
为实现本发明的目的所采用的技术方案是:
一种基于滤波器组的数字助听器啸叫检测与抑制方法,包括:通过全相位FIR滤波器组对输入音频信号采用折叠相加再卷积的方法进行滤波处理后,由啸叫检测模块依次遍历所有的子带信号,检测出含有啸叫的子带,然后由啸叫抑制模块通过降低含有啸叫的子带信号的增益从而实现抑制啸叫;
其中,啸叫检测模块在检测啸叫时,首先计算子带能量-阈值能量比,并判断比值是否大于0;当比值大于0时,判断子带能量-低频平均能量比是否大于预先设定的对数能量阈值;对同一子带信号,若连续多帧的比值均大于对数能量阈值,则认为存在啸叫,并输出对应子带的序号。
其中,所述全相位FIR滤波器组的形成方法如下:
在Mel域中均等地划分频带,线性频率域相应地划分为不均等的子带;
根据各子带频率范围,设置大小为M*N的全相位FIR滤波器组的频率向量HH,M代表滤波器组的子带个数;N代表滤波器组的阶数,全相位滤波器最终等效为长度为2N-1的FIR滤波器;
对HH做离散傅里叶反变换IDFT,并对变换结果延拓,得到大小为M*(2N-1)的系数矩阵H1,将前窗f、后窗b卷积并归一化,得到长度为2N-1的卷积窗wc,最后将H1中的向量和wc按对应位置相乘得到最终的全相位FIR滤波器组的系数H,即H=[h0(n),h1(n),...,hi(n),...,hM-1(n)]T,
其中,第i个滤波器的系数向量为:
hi(n)=[hi(-N+1),...,hi(-1),hi(0),hi(1),...,hi(N-1)],
取前N个值作为滤波器组最终的抽头系数:
gi(n)=[hi(-N+1),...,hi(-1),hi(0)],
前窗选用海明窗,后窗选用矩形窗。
其中,所述全相位FIR滤波器组进行子带信号的计算的步骤如下:
称第i个子带在时刻n的输出信号yi(n)为子带信号,以fs=16KHz的采样频率对输入音频采样,得到长度为L的输入信号x(n),对输入信号x(n)分段,分段后的信号用xF(n)表示,长度为NF=2N-1,
对xF(n)折叠相加后再进行滤波,折叠后输入信号为
x0(n)=[xF(0)+xF(2N-2),xF(1)+xF(2N-3),...,xF(N-2)+xF(N),xF(N-1)+0],长度为N;
最终得到第i个子带在时刻n的输出信号yi(n):
其中,子带信号yi(n)经啸叫检测模块、啸叫抑制模块处理后,将各个子带信号相加,即可得到全频带范围的输出信号,在时刻n的输出信号为:
其中,所述啸叫检测模块的检测啸叫的具体计算步骤如下:
步骤1.计算子带能量-阈值能量比;
当滤波器组第i个子带在时刻n的输出信号yi(n)累积到NE个点时,计算这NE个音频点的对数能量值,计算方法如下:
式中,Th_PTPR为各个子带预设的能量阈值,当log2_Ei<0时,即Ei<Th_PTPR,说明当前信号所含能量未达到啸叫信号的能量阈值,认为没有产生啸叫;当log2_Ei≥0时,即Ei≥Th_PTPR,说明当前时刻信号所含能量超过了啸叫信号的能量阈值;进行下一步的判断。
步骤2.计算子带能量-低频平均能量比;
定义前(Mmin-1)个子带作为低频段,后(M-Mmin+1)个子带作为中高频段,当M为子带个数,Mmin表示800Hz频率所在的子带序号,所述子带能量-低频平均能量比的判断方法如下:
将log2_E_lowi与预设的能量阈值Th_PAPR进行比较,当log2_E_lowi<Th_PAPR时,说明中高频段的信号能量不超过低频段信号的能量,认为助听器没有产生啸叫;反之,当log2_E_lowi≥Th_PAPR时,说明当前时刻中高频段的信号能量大于低频段信号的能量,助听器很可能产生了啸叫;
步骤3.计算帧间峰值保持度;
当连续P帧信号中,有Q帧信号都满足log2_E_lowi≥Th_PAPR,认为存在啸叫。
其中,采用直接将子带置0的方法进行啸叫抑制。
本发明的目的还在于提供一种基于滤波器组的数字助听器啸叫检测与抑制硬件结构,包括控制模块以及与所述控制模块连接的以下模块:
全相位滤波器组分通道模块,包括RAM存储器、shift_reg模块、FIR_filter模块、data_in模块,
所述RAM存储器用于存储各个子滤波器的抽头系数h,shift_reg模块包含255个W_data位的移位寄存器,用来对输入的音频数据进行缓存,当缓存的数据累积达到255个点时,data_in模块将依次输出位于移位寄存器首尾的音频数据x0和x1,最后,FIR_filter模块对x0和x1进行求和,累积得到长度为N的输出序列,输出序列与RAM存储器中存储的滤波器组抽头系数h进行相乘并求和,得到当前时刻各个子带的输出信号。
子带信号能量计算模块,包括顺序连接的energy_in模块、energy_shift_reg模块、energy_out模块;
energy_in模块将各个子带在时刻n的信号值依次输出至下一个模块,输出的值用eout表示,energy_shift_reg模块包含一个乘法器和161个W_energy位的移位寄存器:乘法器用来计算输入数据的平方值,移位寄存器用来存储当前以及过去160个输入数据的平方值,energy_shift_reg模块的输出为当前和过去第160个数据的平方值,即energy0和energy_160;energy_out模块用来计算当前时刻的能量:用上一次输出的能量加上energy0,再减去energy_160,能够得到当前时刻的能量值;从而实时地计算音频能量;
啸叫检测与抑制模块,包括顺序连接的energy_avg模块、howling_detection模块、howling_suppression模块;
energy_avg模块中包含两个实例化的log2模块,用于计算各个子带的对数能量值和前4个子带的平均对数能量值,计算以2为底的对数时,分别计算对数结果的整数部分和小数部分:采用二分法查找计算输入能量值整数部分的最高位,拼接每次的查找结果作为输出结果的整数部分;采用查找表的计算方法,查找计算输出结果的小数部分;
howling_detection模块,包括能量-阈值比检测模块和IPMP检测模块,其中能量-阈值比检测模块包括子带能量-阈值能量比和子带能量-低频平均能量比的计算;
howling_suppression模块,首先读取RAM中存储的增益值gain,当howling为1时,howling_cnt所指子带的输出为子带信号与增益gain的乘积,其他子带不做处理直接输出;当howling为0时,所有子带不做处理直接输出;
全相位滤波器合成模块,使用一个加法器,将多个子带的输出信号相加,得到最终的输出。
其中,所述IPMP检测模块包括一个移位寄存器,用来存储连续多个时刻的howling_temp值,当移位寄存器的输出不为0时,进行按位与的运算:运算结果为1,设置啸叫标志位为1;运算结果为0,设置啸叫标志位为0;
以及一个多位的移位寄存器,用来存储连续多个时刻的howling_cnt_temp值,计算移位寄存器输出值的高位、中位和低位的同或,根据运算结果设置啸叫子带标志位为1或0,设置IPMP模块的输出howling_cnt等于howling_cnt_temp,或是保持上一时刻的输出值不变;
判断啸叫标志位和啸叫子带标志位是否都为1:二者都为1时,设置IPMP模块的输出howling等于1;否则,设置IPMP模块的输出howling等于0。
本发明解决了传统啸叫检测与抑制算法(陷波法)需要使用FFT而带来的计算复杂度高,不适合用于设计助听器专用集成电路的问题,本发明提出的新的方法基于滤波器组,实现了在时域进行啸叫的检测与抑制,而不需要复杂的FFT运算,大大节省了电路面积。此外,本发明能够实时地检测与抑制啸叫。
本发明的基于滤波器组的啸叫检测与抑制算法,一方面可以与其他算法共用滤波器组,提高硬件资源的利用率;另一方面可以将在时域提取出频域的能量特征进行啸叫的判断,从而避免复杂的FFT计算。
附图说明
图1为Mel域和线性频率域的频率对应关系图;
图2为滤波器组频率响应曲线图;
图3为语音信号与啸叫信息的信号频谱对比图;
图4为语音信号与啸叫信息的信号时域波形图对比图;
图5为啸叫检测与抑制系统的整体框图;
图6为全相位滤波器组分通道模块的结构图;
图7为子带信号能量计算模块的结构图;
图8为啸叫检测与抑制模块的结构图;
图9为howling_detection模块的结构图;
图10为全相位滤波器组合成模块的结构图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中,加粗大写英文字体代表矩阵,加粗小写英文字体代表向量,未加粗的英文字体代表标量。
本发明按照人耳听觉特征划分频段,设计了全相位滤波器组对音频信号进行滤波分析。通过分析子带能量-阈值能量比(Subband Power to Threshold Power Ratio,以下简称SPTPR)SPTPR、子带能量-低频平均能量比(Subband Power to Low frequencyAverage Power Ratio,以下简称SPLAPR)和帧间峰值保持度(Interframe Peak MagnitudePersistence,以下简称IPMP)来判断啸叫是否存在,并对啸叫信号进行抑制。
本发明基于滤波器组的啸叫检测与抑制算法及硬件实现方法,包括滤波器组、啸叫检测和啸叫抑制;其中,啸叫检测分为能量-阈值比检测和IPMP检测两个子模块。
为更好地模拟人耳基底膜对声音的感知,根据人耳听觉特性划分不均等滤波器组的频带范围。考虑到滤波器系数的对称性,对输入音频采用折叠相加再进行卷积的方法,这样做可将乘法运算等效替换为加法计算,简化硬件结构。
啸叫检测模块会依次遍历所有的子带信号。首先计算子带能量-阈值能量比,并判断比值是否大于0。当比值大于0时,进一步判断子带能量-低频平均能量比是否大于预先设定的对数能量阈值。对同一个子带信号,如果连续三帧的比值均大于对数能量阈值,就认为存在啸叫,并输出对应子带的序号。
啸叫抑制模块通过降低含有啸叫的子带信号的增益来达到抑制啸叫的目的。
全相滤波器组设计
步骤1、划分频带范围:
大脑感知到的频率与实际频率之间是一种非线性的映射,基于Mel尺度进行频带划分,可很好地模拟人耳听觉系统。在Mel域中均等地划分频带,线性频率域会相应地划分为不均等的子带。
图1是Mel域和线性频率域的频率对应关系图。用f表示线性频率域的频率值,fMel表示Mel域的频率值,Mel域的频率与线性频率域的频率之间的转换公式如下(单位为Hz):
例如对频率范围为50~8000Hz的信号进行处理,以划分16个频段为例,分为:50Hz~174.2Hz,174.2Hz~318.9Hz,318.9Hz~487.5Hz,487.5Hz~684.1Hz,684.1Hz~913.3Hz,913.3Hz~1180.3Hz,1180.3Hz~1491.6Hz,1491.6Hz~1854.4Hz,1854.4Hz~2277.3Hz,2277.3Hz~2770.1Hz,2770.1Hz~3344.6Hz,3344.6Hz~4014.2Hz,4014.2Hz~4794.6Hz,4794.6Hz~5704.2Hz,5704.2Hz~6764.3Hz,6764.3Hz~8000Hz。
步骤2、全相位滤波器组系数的计算
基于全相位滤波器组能够减少频谱的泄露,使输出信号具有线性的相位。相比其他类型滤波器组,能够减少信号相位失真。
根据步骤1得到的各子带频率范围,设置大小为M*N的全相位FIR滤波器组的频率向量HH,M代表步骤1中划分的频段的个数,也就是滤波器组的子带个数;N代表滤波器组的阶数,全相位滤波器最终可等效为长度为2N-1的FIR滤波器。
对HH做离散傅里叶反变换(IDFT),并对变换结果进行延拓,得到大小为M*(2N-1)的系数矩阵H1。将前窗f、后窗b进行卷积并归一化,得到长度为2N-1的卷积窗wc。最后将H1中的向量和wc按对应位置相乘得到最终的全相位FIR滤波器组的系数H,即:H=[h0(n),h1(n),…,hi(n),…,hM-1(n)]T
其中,第i个滤波器的系数向量为:
hi(n)=[hi(-N+1),…,hi(-1),hi(0),hi(1),…,hi(N-1)]
取前N个值作为滤波器组最终的抽头系数:gi(n)=[hi(-N+1),…,hi(-1),hi(0)]。
前窗选用海明窗,后窗选用矩形窗,以16个子带、128阶的全相位FIR滤波器组为例,绘制频率响应曲线,如图2所示。
步骤3、子带信号计算
称第i个子带在时刻n的输出信号yi(n)为子带信号。以fs=16KHz的采样频率对输入音频采样,得到长度为L的输入信号x(n)。对输入信号x(n)分段,分段后的信号用xF(n)表示,长度为NF=2N-1,
对xF(n)折叠相加后再进行滤波,折叠后的输入信号为
x0(n)=[xF(0)+xF(2N-2),xF(1)+xF(2N-3),...,xF(N-2)+xF(N),xF(N-1)+0],长度为N。
最终得到第i个子带在时刻n的输出信号yi(n):
步骤4、子带信号的合成
子带信号yi(n)经啸叫检测与抑制模块处理后,将各个子带信号相加,即可得到全频带范围的输出信号。在时刻n的输出信号为:
第二部分:啸叫检测
由于啸叫很可能在频率大于1500Hz的频率范围内发生,为减小计算量,同时降低漏检情况的发生,只对频率范围在800Hz~8000Hz的信号进行检测。
对于含有M个子带的滤波器组,用Mmin表示800Hz的频率所在的子带序号。当划分的子带个数为16时(即M=16),800Hz在第5子带内(即Mmin=5),因此对序号为5~16的子带(共11个)进行啸叫检测。
步骤1、子带能量-阈值能量比(SPTPR)
由于每个子带的检测方法相同,因此以第i个子带为例进行介绍。当滤波器组第i个子带在时刻n的输出信号yi(n)累积到NE个点时,计算这NE个音频点的对数能量值。计算方法如下:
式中,Th_PTPR为各个子带预设的能量阈值。当log2_Ei<0时(即Ei<Th_PTPR),说明当前信号所含能量未达到啸叫信号的能量阈值,可以认为助听器没有产生啸叫,不再进行下一步的判断。当log2_Ei≥0时(即Ei≥Th_PTPR),说明当前时刻信号所含能量超过了啸叫信号的能量阈值,但这可能是由于说话的声音很大导致的,因此需要进行下一步的判断。
步骤2、子带能量-低频平均能量比(SPLAPR)
对于语音信号,能量大多集中于低频段,而中频段和高频段能量一般小于低频段能量,如图3中的语音信号频谱所示。对于啸叫信号,频谱一般是一个位于中频段或高频段的尖峰信号,且幅度很大,如图3中的啸叫信号频谱所示。因此,可以比较低频段的能量值与中高频段信号的能量值,如果中高频段信号的能量远高于低频段的能量,说明助听器此时很可能发生了啸叫。
定义前(Mmin-1)个子带作为低频段,后(M-Mmin+1)个子带作为中高频段。当M=16,Mmin=5时,低频段包含前4个子带,高频段包含后12个子带。SPLAPR的具体的判断方法如下:
将log2_E_lowi与预设的能量阈值Th_PAPR进行比较。当log2_E_lowi<Th_PAPR时,说明中高频段的信号能量不超过低频段信号的能量,可以认为助听器没有产生啸叫。反之,当log2_E_lowi≥Th_PAPR时,说明当前时刻中高频段的信号能量大于低频段信号的能量,助听器很可能产生了啸叫。步骤1和步骤2是基于啸叫信号在频域的特点进行的检测,为提高检测的准确性,还需要进行时域的检测。
步骤3、帧间峰值保持度-IPMP
啸叫信号在时域上存在持续长的特点,这是一般的语音信号所不具备的。图4说明了这一特点:上图是语音信号时域波形图,下图是真实环境中采集的助听器啸叫信号的时域波形图。
根据上述特点,当连续P帧信号中,有Q帧信号都满足log2_E_lowi≥Th_PAPR,我们认为确实存在啸叫。例如采用P=3,Q=3。
第三部分:啸叫抑制
为节省硬件资源,采用直接将子带置0的方法。经过啸叫抑制后的子带信号将按照第一部分中步骤4所述方法进行相加,最后输出。
本发明中基于滤波器组的数字助听器时域啸叫检测与抑制的硬件实现:
采用的硬件描述语言(HDL)是verilog HDL语言。硬件实现部分有四个模块:全相位滤波器组分通道模块、子带信号能量计算模块、啸叫检测与抑制模块和控制模块。图5是啸叫检测与抑制系统的整体框图。硬件实现M=16,N=128,NE=160。
模块1、全相位滤波器组分通道模块
使用MATLAB设计不均等全相位滤波器组,计算各个子滤波器的抽头系数h,并将参数提前存储在RAM中。模块的RTL结构图如图6所示。其中,shift_reg(移位寄存)模块包含255个W_data位的移位寄存器,用来对输入的音频数据进行缓存。当缓存的数据累积达到255个点时,data_in(数据输出)模块将依次输出位于移位寄存器首尾的音频数据x0和x1。最后,FIR_filter(FIR滤波器)模块对x0和x1进行求和,累积得到长度为N的输出序列。输出序列与RAM中存储的滤波器组抽头系数进行相乘并求和,得到当前时刻各个子带的输出信号。
在满足助听器时序要求(延迟时间最大不超过30ms)的同时,应当尽可能多地节省硬件资源。因此,推荐采用多个FIR滤波器并行运算,多次复用的结构。
模块2、子带信号能量计算模块
模块的RTL结构图如图7所示。energy_in模块(信号输入模块)将各个子带在时刻n的信号值依次输出至下一个模块,输出的值用eout表示。energy_shift_reg模块(信号移位模块)包含一个乘法器和161个W_energy位的移位寄存器:乘法器用来计算输入数据的平方值,移位寄存器用来存储当前以及过去160个输入数据的平方值。模块的输出为当前和过去第160个数据的平方值,即energy0和energy_160。energy_out模块((信号输出模块))用来计算当前时刻的能量:用上一次输出的能量(即过去160个数据的平方和)加上energy0,再减去energy_160,就能够得到当前时刻的能量值。如此,便可以实时地计算音频能量,并实时地检测啸叫。
相比于每次存储160个音频点再计算相应的平方和的方法,本发明的计算方法和结构可以避免中间159个音频点重复的乘法和累加计算,节省了硬件资源。
模块3、啸叫检测与抑制
啸叫检测与抑制模块的RTL结构图如图8所示。下面对energy_avg模块、howling_detection模块和啸叫抑制进行详细介绍:
(1)energy_avg模块(对数能量计算模块)
energy_avg模块中包含两个实例化的log2模块,用于计算各个子带的对数能量值和前4个子带的平均对数能量值。计算以2为底的对数时,分别计算对数结果的整数部分和小数部分:采用二分法查找计算输入能量值整数部分的最高位,拼接每次的查找结果作为输出结果的整数部分;采用查找表的计算方法,查找计算输出结果的小数部分。
其中,在计算平均对数能量值时,为了避免式(6)中的除法运算,利用如下公式转换为减法运算:
首先计算当前时刻的前4个子带信号的能量和,并通过log2模块计算相应的对数能量。最后将对数能量减去2,得到前4个子带的平均对数能量值。
(2)howling_detection模块(啸叫检测模块)
howling_detection模块包括能量-阈值比检测模块和IPMP检测模块,其中能量-阈值比检测模块包括子带能量-阈值能量比和子带能量-低频平均能量比的计算。
为了节省硬件资源,需要将子带能量-阈值能量比和子带能量-低频平均能量比,即式(5)和式(7)中涉及的除法运算转换为减法运算:
因此,需要将能量阈值Th_PTPR以2为底的对数,提前存储到RAM中。模块的RTL结构图如图9所示。
a)能量-阈值比检测模块
对数能量比log2_Ei的符号位为1,代表不含啸叫;符号位为0,代表可能含有啸叫。对数能量比log2_E_lowi的符号位为1,代表不含啸叫;符号位为0,代表可能含有啸叫。当log2_Ei和log2_E_lowi的符号位同时为0时,能量-阈值比模块的输出howling_temp才会是1,这意味着助听器产生啸叫的概率很大。同时,模块将输出当前的子带序号值howling_cnt_temp。
b)IPMP检测模块
设计一个3位的移位寄存器,用来存储连续三个时刻的howling_temp值(能量-阈值比模块的输出值)。当移位寄存器的输出不为0时,进行按位与的运算:运算结果为1,设置“啸叫标志位”为1;运算结果为0,设置“啸叫标志位”为0。
设计一个12位的移位寄存器,用来存储连续三个时刻的howling_cnt_temp值(子带序号值)。计算移位寄存器输出值的高4位、中4位和低4位的同或:运算结果等于“1111”,设置“啸叫子带标志位”为1,同时设置IPMP模块的输出howling_cnt等于howling_cnt_temp;当运算结果不等于“1111”时,设置“啸叫子带标志位”为0,同时令IPMP模块的输出howling_cnt保持上一时刻的输出值不变。
最后,判断“啸叫标志位”和“啸叫子带标志位”是否都为1:二者都为1时,设置IPMP模块的输出howling等于1;否则,设置IPMP模块的输出howling等于0。
(3)啸叫抑制(howling_suppression)模块
howling_suppression模块首先读取RAM中存储的增益值gain。当howling(啸叫)为1时,howling_cnt所指子带的输出为子带信号与增益gain的乘积,其他子带不做处理直接输出;当howling为0时,所有子带不做处理直接输出。
模块4、全相位滤波器组合成模块
这个模块使用一个加法器,将16个子带的输出信号相加,得到最终的输出。全相位滤波器组合成模块的RTL结构图如图10所示。
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.基于滤波器组的数字助听器啸叫检测与抑制方法,其特征在于,通过全相位FIR滤波器组对输入音频信号采用折叠相加再卷积的方法进行滤波处理后,由啸叫检测模块依次遍历所有的子带信号,检测出含有啸叫的子带,然后由啸叫抑制模块通过降低含有啸叫的子带信号的增益从而实现抑制啸叫;
其中,啸叫检测模块在检测啸叫时,首先计算子带能量-阈值能量比,并判断比值是否大于0;当比值大于0时,判断子带能量-低频平均能量比是否大于预先设定的对数能量阈值;对同一子带信号,若连续多帧的比值均大于对数能量阈值,则认为存在啸叫,并输出对应子带的序号;
所述全相位FIR滤波器组的形成方法如下:
在Mel域中均等地划分频带,线性频率域相应地划分为不均等的子带;
根据各子带频率范围,设置大小为M*N的全相位FIR滤波器组的频率向量HH,M代表滤波器组的子带个数;N代表滤波器组的阶数,全相位滤波器最终等效为长度为2N-1的FIR滤波器;
对HH做离散傅里叶反变换IDFT,并对变换结果延拓,得到大小为M*(2N-1)的系数矩阵H1,将前窗f、后窗b卷积并归一化,得到长度为2N-1的卷积窗wc,最后将H1中的向量和wc按对应位置相乘得到最终的全相位FIR滤波器组的系数H,即H=[h0(n),h1(n),...,hi(n),...,hM-1(n)]T,
其中,第i个滤波器的系数向量为:
hi(n)=[hi(-N+1),...,hi(-1),hi(0),hi(1),...,hi(N-1)],
取前N个值作为滤波器组最终的抽头系数:
gi(n)=[hi(-N+1),...,hi(-1),hi(0)]。
4.根据权利要求2所述基于滤波器组的数字助听器啸叫检测与抑制方法,其特征在于,所述啸叫检测模块的检测啸叫的具体计算步骤如下:
步骤1.计算子带能量-阈值能量比;
当滤波器组第i个子带在时刻n的输出信号yi(n)累积到NE个点时,计算这NE个音频点的对数能量值,计算方法如下:
式中,Th_PTPR为各个子带预设的能量阈值,当log2_Ei<0时,即Ei<Th_PTPR,说明当前信号所含能量未达到啸叫信号的能量阈值,认为没有产生啸叫;当log2_Ei≥0时,即Ei≥Th_PTPR,说明当前时刻信号所含能量超过了啸叫信号的能量阈值;进行下一步的判断;
步骤2.计算子带能量-低频平均能量比;
定义前(Mmin-1)个子带作为低频段,后(M-Mmin+1)个子带作为中高频段,当M为子带个数,Mmin表示800Hz频率所在的子带序号,所述子带能量-低频平均能量比的判断方法如下:
将log2_E_lowi与预设的能量阈值Th_PAPR进行比较,当log2_E_lowi<Th_PAPR时,说明中高频段的信号能量不超过低频段信号的能量,认为助听器没有产生啸叫;反之,当log2_E_lowi≥Th_PAPR时,说明当前时刻中高频段的信号能量大于低频段信号的能量,助听器很可能产生啸叫;
步骤3.计算帧间峰值保持度;
当连续P帧信号中,有Q帧信号都满足log2_E_lowi≥Th_PAPR,认为存在啸叫。
5.根据权利要求1所述基于滤波器组的数字助听器啸叫检测与抑制方法,其特征在于,采用直接将子带置0的方法进行啸叫抑制。
6.基于滤波器组的数字助听器啸叫检测与抑制硬件结构,其特征在于,包括控制模块以及与所述控制模块连接的以下模块:
全相位滤波器组分通道模块,包括RAM存储器、shift_reg模块、FIR_filter模块、data_in模块,
所述RAM存储器用于存储各个子滤波器的抽头系数h,shift_reg模块包含255个W_data位的移位寄存器,用来对输入的音频数据进行缓存,当缓存的数据累积达到255个点时,data_in模块将依次输出位于移位寄存器首尾的音频数据x0和x1,最后,FIR_filter模块对x0和x1进行求和,累积得到长度为N的输出序列,输出序列与RAM存储器中存储的滤波器组抽头系数h进行相乘并求和,得到当前时刻各个子带的输出信号;
子带信号能量计算模块,包括顺序连接的energy_in模块、energy_shift_reg模块、energy_out模块;
energy_in模块将各个子带在时刻n的信号值依次输出至下一个模块,输出的值用eout表示,energy_shift_reg模块包含一个乘法器和161个W_energy位的移位寄存器:乘法器用来计算输入数据的平方值,移位寄存器用来存储当前以及过去160个输入数据的平方值,energy_shift_reg模块的输出为当前和过去第160个数据的平方值,即energy0和energy_160;energy_out模块用来计算当前时刻的能量:用上一次输出的能量加上energy0,再减去energy_160,能够得到当前时刻的能量值;从而实时地计算音频能量;
啸叫检测与抑制模块,包括顺序连接的energy_avg模块、howling_detection模块、howling_suppression模块;
energy_avg模块中包含两个实例化的log2模块,用于计算各个子带的对数能量值和前4个子带的平均对数能量值,计算以2为底的对数时,分别计算对数结果的整数部分和小数部分:采用二分法查找计算输入能量值整数部分的最高位,拼接每次的查找结果作为输出结果的整数部分;采用查找表的计算方法,查找计算输出结果的小数部分;
howling_detection模块,包括能量-阈值比检测模块和IPMP检测模块,其中能量-阈值比检测模块包括子带能量-阈值能量比和子带能量-低频平均能量比的计算;
howling_suppression模块,首先读取RAM中存储的增益值gain,当howling为1时,howling_cnt所指子带的输出为子带信号与增益gain的乘积,其他子带不做处理直接输出;当howling为0时,所有子带不做处理直接输出;
全相位滤波器合成模块,使用一个加法器,将多个子带的输出信号相加,得到最终的输出;
所述IPMP检测模块包括一个移位寄存器,用来存储连续多个时刻的howling_temp值,当移位寄存器的输出不为0时,进行按位与的运算:运算结果为1,设置啸叫标志位为1;运算结果为0,设置啸叫标志位为0;
以及一个多位的移位寄存器,用来存储连续多个时刻的howling_cnt_temp值,计算移位寄存器输出值的高位、中位和低位的同或,根据运算结果设置啸叫子带标志位为1或0,设置IPMP模块的输出howling_cnt等于howling_cnt_temp,或是保持上一时刻的输出值不变;
判断啸叫标志位和啸叫子带标志位是否都为1:二者都为1时,设置IPMP模块的输出howling等于1;否则,设置IPMP模块的输出howling等于0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110149660.6A CN112954576B (zh) | 2021-02-03 | 2021-02-03 | 基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110149660.6A CN112954576B (zh) | 2021-02-03 | 2021-02-03 | 基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112954576A CN112954576A (zh) | 2021-06-11 |
CN112954576B true CN112954576B (zh) | 2022-03-04 |
Family
ID=76242341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110149660.6A Active CN112954576B (zh) | 2021-02-03 | 2021-02-03 | 基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112954576B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584909B (zh) * | 2022-04-29 | 2022-07-26 | 南京天悦电子科技有限公司 | 一种数字助听器啸叫抑制系统及其抑制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080253579A1 (en) * | 2004-06-14 | 2008-10-16 | Johnson & Johnson Consumer Companies, Inc. | At-Home Hearing Aid Testing and Clearing System |
CN110708651B (zh) * | 2019-09-25 | 2021-05-07 | 天津大学 | 一种基于分段陷波的助听器啸叫检测与抑制方法及装置 |
-
2021
- 2021-02-03 CN CN202110149660.6A patent/CN112954576B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112954576A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2127454C1 (ru) | Способ понижения шума и устройство для его осуществления | |
US20030216907A1 (en) | Enhancing the aural perception of speech | |
JP4282227B2 (ja) | ノイズ除去の方法及び装置 | |
CN110536215B (zh) | 音频信号处理的方法、装置、计算设置及存储介质 | |
US6980665B2 (en) | Spectral enhancement using digital frequency warping | |
TWI463817B (zh) | 可適性智慧雜訊抑制系統及方法 | |
JP5140162B2 (ja) | 雑音抑圧方法及び装置 | |
US9672834B2 (en) | Dynamic range compression with low distortion for use in hearing aids and audio systems | |
CA2535111C (en) | Hearing aid with acoustic feedback suppression | |
JP6351538B2 (ja) | ディジタル音響信号用の多帯域信号プロセッサ | |
CN107333076B (zh) | 电视机及其音频信号中频点数据的调整方法、装置 | |
KR100600313B1 (ko) | 다중경로 다채널 혼합신호의 주파수 영역 블라인드 분리를 위한 방법 및 그 장치 | |
US10380989B1 (en) | Methods and apparatus for processing stereophonic audio content | |
CN112565981B (zh) | 啸叫抑制方法、装置、助听器及存储介质 | |
CN105931649A (zh) | 基于频谱分析的超低时延音频处理方法与系统 | |
CN112954576B (zh) | 基于滤波器组的数字助听器啸叫检测与抑制算法及硬件实现方法 | |
US9066177B2 (en) | Method and arrangement for processing of audio signals | |
CN110708651B (zh) | 一种基于分段陷波的助听器啸叫检测与抑制方法及装置 | |
JP2563719B2 (ja) | 音声加工装置と補聴器 | |
JP2002175099A (ja) | 雑音抑制方法および雑音抑制装置 | |
CN111491245B (zh) | 基于循环神经网络的数字助听器声场识别算法及实现方法 | |
US7693294B2 (en) | Method and system for reducing audible side effects of dynamic current consumption | |
KR100283674B1 (ko) | 오디오신호에서 잡음을 제거하는 방법 | |
CN117528336A (zh) | 一种扬声器的功耗优化方法、装置、电子设备及存储介质 | |
CN115547353A (zh) | 一种基于双神经网络模型的语音降噪方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |