一种自适应声反馈抑制方法与流程

文档序号:14737488发布日期:2018-06-19 20:48阅读:1566来源:国知局
一种自适应声反馈抑制方法与流程

本发明涉及语音信号处理中声反馈算法,更具体地,涉及一种基于频率跟踪的自适应声反馈抑制方法。



背景技术:

自从扩声系统被广泛应用以来,语音信号处理就一直受声反馈问题的困扰。扩声系统的共同特征就是对声音信号进行放大,以得到较大的输出音量。在扩声系统中,声音由扬声器发出,当扬声器输出信号耦合进入麦克风时,就形成了一个闭环的反馈系统,当系统增益过大时,由于声反馈现象,就会产生刺耳的啸叫声。声反馈严重限制了系统增益的提升,会直接导致信号失真。更重要的是,声反馈可能会烧毁扬声器与放大器。因而,有效的进行声反馈抑制,是扩声系统信号处理中的一个重要的课题。

图1为一般扩声系统的结构图,其闭环增益为:

啸叫产生的幅值和相位条件为:

声反馈抑制的方法是从破坏啸叫产生的相位和幅值条件来进行。基于数字信号处理的声反馈抑制方法主要有以下几种:

在上世纪50年代,国外就有文献提出利用移频法进行啸叫抑制。移频法是通过升高或降低输入音频信号的频率成分破坏啸叫的产生条件。改变了频率的输出信号再进入系统不会再和原始信号频率叠加,从而达到啸叫抑制的目的。移频法实现容易,但是会造成频率失真,对音质损害较大,人耳对低频信号的这种变化能够分辨。

随机相位法利用人的听觉对声音相位不敏感的特点,在声反馈回路中通过添加随机相位系统,使声反馈开环传递函数的相位变为时变的,破坏啸叫产生的相位条件。通常是通过全通滤波器来实现随机相位系统,这样能保证输入信号通过时仅在相位上有改变。但是随机相位法存在的问题是当破坏一条反馈路径的相位条件时,可能会使另一条反馈路径的相位条件满足,产生新的啸叫频点,因而性能表现不如其他方法。

陷波法是在前向路径上通过陷波滤波器对啸叫频点进行电平抑制,能在一定程度上达到啸叫抑制的目的。在陷波前先要对啸叫频点进行检测,这就需要通过短时傅立叶变换得到信号的功率谱信息,一方面增加了系统的处理时延;另一方面,抑制效果对于啸叫频点的检测和陷波带宽的设置有很大的依赖性。特别是,对于DSP系统,如果每帧采样点过少,就可能达不到啸叫频点检测的精度。输入信号通过陷波器处理时,如果啸叫频点检测的值偏离真实值较大,再加上陷波带宽设置不合理,这样不但没有陷波效果,反而会抑制掉音频的其他频率成分,造成更大的失真。

因此在进行声反馈抑制时,设计一种既能保证信号处理过程的实时性,同时又能尽量减小处理后音频的失真程度的方法尤为重要。



技术实现要素:

本发明的目的在于提供一种自适应声反馈抑制方法,能够克服陷波算法的不足,降低陷波算法的处理时延,同时又能减弱陷波算法对于啸叫频点检测的依赖性,使经过算法处理后的信号完成声反馈抑制的同时,尽量减小失真程度。

本发明通过自适应陷波法能够跟踪啸叫频率的改变,自动调节陷波器的中心频率。在采样数据有限时,能获得相对而言较准确的频率估计精度,因而能减小陷波后信号的失真程度。自适应算法,使用递推过程,只涉及时域处理,不需要进行FFT运算,大大降低了运算复杂度。本发明通过引入先验误差和可变收敛因子进行步长调整,进一步加快了自适应算法的收敛速度,使算法有较好的声反馈抑制效果的同时又能满足信号处理的实时性。

附图说明

图1是扩声系统结构图;

图2是本发明实施例系统结构框图;

图3是本发明实施例自适应陷波器结构图;

图4是含有啸叫信号的波形图;

图5是本发明实施例完成啸叫抑制后的波形图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

自1967年B.Widrow等人提出以来,自适应滤波算法就得到了广泛的应用。自适应滤波器能够按照某种准则,自动调整滤波器参数,以达到对信号的学习和跟踪,同时也不需要对信号的先验统计知识。通过自适应算法,智能跟踪啸叫频点,就可以克服陷波法检测精度的问题。而且由于只使用时域递推处理,所以也能降低处理时延。但是需要权衡滤波器参数的更新速度和音频的失真度。LMS算法是最基本的自适应滤波算法,但是存在收敛速度较慢的问题。

本发明在LMS算法的基础上通过引入一个动量因子,即先验误差,同时结合NLMS算法,优化了自适应算法的更新步长,加快了收敛速度。能更快的调整陷波器的中心频率,最终得到的输出信号失真也较小。实现方案如下所示:

1、通过音频采集模块对麦克风收集到的信号进行AD转换,得到数字化的音频信号;

2、根据自适应陷波算法,需要先初始化传输函数的中心频率、滤波器的带宽、状态变量和调整步长的常数。进行啸叫抑制时,希望在啸叫频点获得最大的衰减同时使输出信号相对于语音输入的失真尽量减小,那么,就要使发生啸叫的频率点附近的陷波带宽尽可能小。本发明中使用固定的带宽,而通过自适应迭代算法跟踪啸叫发生的频率,以此更新陷波器的中心频率。当自适应算法收敛后,完成频率跟踪过程,就相应的形成了陷波器对啸叫频点进行陷波处理,经过陷波器输出的信号即是啸叫抑制后的信号。

3、完成啸叫抑制后的输出信号通过功率放大器和扬声器,完成放大输出。

陷波器进行声反馈抑制的原理如下:

根据二阶IIR滤波器的传输函数:

其中数字中心频率为:陷波带宽BW=π(1-r)。当能够精确获得数字中心频率时,将系数r设置的相对较大以减小陷波器带宽,能够获得较好的啸叫抑制效果。

将二阶IIR滤波器传输函数的数字频率相关函数看作自适应滤波系数,即就可以得到:

自适应算法的更新准则是以陷波器输出信号的最小均方误差为准则,即:mina(n)E(|y(n)|2)。

下面结合具体的实例来说明自适应陷波声反馈抑制的步骤:

步骤1:信号采集

附图2为整个自适应声反馈抑制系统的结构框图。扬声器输出信号,经过反馈路径,和语音耦合。音频采集模块对带有声反馈的音频信号以采样频率fs进行采样分帧,设帧长为N,采用矩形窗,每帧数据初始化为0,再将采样后的数据存入帧中,得到的采样序列为:

xi=[x(i*N),x(i*(N-1)),...,x(i)](i=1,2,…,n),然后送给自适应陷波算法模块进行处理;

步骤2:自适应声反馈抑制

收到步骤1中的数字音频序列后,根据论文Waterschoot T V,Moonen M.A Pole-Zero Placement Technique for Designing Second-Order IIR Parametric Equalizer Filters[J].IEEE Transactions on Audio Speech&Language Processing,2007,15(8):2561-2565.中关于滤波器传输函数中参数的定义,先初始化自适应陷波算法模块的参数:

陷波器的中心频率a(n)=0,

决定陷波器带宽的参数r=0.75,

控制自适应算法的逼近步长的收敛因子收敛因子μ(n)=0.0025,

陷波器状态变量:t(n),u(n)初始化为0。

根据公式(2),将滤波器传输函数改写为:

将公式(3)写成两个滤波器级联的形式就可以得到滤波器的状态变量中u(n)跟输入输出间的关系。

根据当前陷波器的中心频率a(n)和步骤1得到的输入信号x(n),更新自适应陷波器的状态变量:t(n)、u(n)、频率变量和控制迭代收敛步长的因子μ(n),递推过程如下:

t(n+1)=u(n)-ra(n)t(n)-r2t(n-1)

u(n+1)=x(n)-ra(n)u(n)-r2u(n-1)

(取β=0.5,σ=2

同时得到抑制后信号的输出:

y(n)=u(n+1)+a(n)u(n)+u(n-1)

根据状态变量和啸叫抑制后的信号更新陷波器的中心频率:

a(n+1)=a(n)-2μ(n)y(n-1)x(n)

由于所以当a(n)的幅值过大时要将a(n)限定在[-2,2]之间。由公式(3)的级联表示和上述递推过程,最终可以确定滤波器的结构如图3。

处理完1帧后,通过移位处理,使下一帧紧接着上一帧得到的状态变量值t(n),u(n),输出值y(n),收敛因子μ(n)和陷波器中心频率估计值a(n)进行递推处理。

步骤3:将步骤2中完成声反馈抑制后的信号y(n)经过功率放大器放大后通过扬声器输出。

最后得到的结果如图4、图5。图4是未通过自适应陷波算法将音频通过扩声系统的波形,可以看到啸叫的产生过程。图5是在扩声系统中加入本发明提出的算法处理后得到的输出波形,对比图4、图5可看出通过本发明提出的自适应声反馈抑制方法,可以有效的抑制啸叫信号的产生,同时信号的失真也较小。观察图5中时间较靠前的一部分,可以看出使用本发明提出的方法,由于引入了先验误差,同时结合可变步长收敛因子,优化了自适应算法的更新步长,所以自适应更新的过渡过程很短,输出的语音几乎感觉不到啸叫声的存在,具有很好的实时性。

总之,本发明适用于需要进行声反馈抑制的场景,在算法能够相对准确的跟踪啸叫频点的前提下,加快了自适应算法的收敛速度,降低了声反馈抑制后的信号失真程度,能较好的达到声反馈抑制的效果,同时又降低了算法的处理时延,具有较好的实时性。

以上对本发明实施例所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1