提高声反馈抑制器频谱分辨率的算法研究

时间:2022-08-03 07:59:20

提高声反馈抑制器频谱分辨率的算法研究

【摘 要】声反馈抑制器是扩声系统中关键的一个组成部分,它能提高扩声的质量,保护扩声系统中的设备。本文介绍一种较好的方法,提高声反馈抑制器实现过程中频谱的分辨率。

【关键词】啸叫;声反馈抑制器;CZT算法

1、引言

同时使用麦克风和扬声器的通信场合,啸叫是很常见的一种声反馈现象,声反馈限制了扩声系统扩声增益的提高,严重时甚至使系统无法正常工作。声反馈的出现大大限制了系统音量的增大,达不到扩音的效果。声反馈的产生会直接导致声音出现失真。由声反馈引起的啸叫,不但损伤人耳,也使讲话、表演无法顺畅进行,严重时还可能会烧毁系统中的放大器或扬声器中的高音单元。因此,如何有效地抑制声反馈,避免啸叫的出现,是扩声系统中的一个重要课题。

2、声反馈的抑制

声反馈现象的产生原理并不复杂。它是由于传声器将扬声器重放的声音反复拾取且音量超过一定限度时,这种同频声信号被放大电路迅速积累放大,产生啸叫。声反馈产生的根本原因是信号在一个频点上面的自激振荡。

传统的声反馈抑制方法,包括改善房间声学环境、在系统中串联均衡器或移频器等。但这些方法操作不便,对音质损伤大,而且传声增益提高甚微。近年来,随着数字信号处理技术的迅速发展,出现了新一代的自动声反馈抑制器。自动声反馈抑制器克服了传统方法的缺点,具有操作简单、声音失真小、传声增益提高大等优点。

消除声反馈引起的啸叫关键是先检取出引起啸叫的单频率正弦波,然后再做陷波处理,把这个单频率的正弦波抑制掉。所以不同的算法关键在于如何检取和如何抑制。下面我介绍一种基于频谱细化算法CZT和IIR陷波器的方案来抑制声反馈,并对如何提高频谱分辨率部分做详细介绍。

本方案采用Chirp-Z变换(CZT)算法与FFT算法相结合对声反馈进行检测,使用IIR窄带陷波器构成的滤波器组对声反馈进行抑制。首先对音频信号使用FFT+CZT的算法进行频谱细化,然后根据细化分析的结果设计IIR陷波器,对发生声反馈的频点进行陷波处理。下面我对提高频谱分辨率部分做详细分析。

3、使用FFT+CZT的频谱细化算法

对全频段使用FFT分析不能获得高分辨率,这样也就不能准确定位声反馈频点的位置。所以,本方案中利用了CZT算法来提高频谱分辨率。

CZT是z变换的一种特殊形式。z变换的定义式为:

CZT是z变换的一种特殊形式。z变换的定义式为:

(3-1)

其中,Xn,{n=O,1…,N-1)是有限长序列。经典的DFT就是在单位圆上等间隔取样,

即令z=。若令zk=AW-k,k=0,1,…,M-1,则得到CZT的原理式:

X Zk =,k=0,1,…,M-1 (3-2)

其中,A=A0 ,W=W0,A0表示起始采样点面的矢量半径,表示起始采样点的相角,W0表示螺线的伸展率,表示两相邻采样点间的角度差。3-2式将采样轨迹从DFT的单位圆上的圆弧推广到单位圆内(包括单位圆上)任意一段螺线或圆弧。令A0=1,W0=1,采样点则同DFT一样落在单位圆上:再令=F1/Fs,=(Fh-F1)/Fs,则可得到频率范围在F1~Fh之间的频谱,其频率分辨率为(Fh-F1)/M。可见,CZT算法可以根据感兴趣的频率范围,任意选取Fl和Fh,而频率取样点数M的取值与N无关,可以根据所需的频率分辨率来确定。图3-1是CZT算法的原理示意图。

图3-1 CZT算法原理图

传统CZT算法计算过程如下:

第一步,选取一个最小的整数L,使其满足L≥N+M-1,同时使L等于2的整数幂,以便采用基2的FFT算法;

第二步,构造一个L点序列yn,

(3-3)

第三步,用FFT计算序列yn的L点DFT,得到Yr,r=0,1,…,L-l;

第四步,构造L点序列vn,

Vn= (3-4)

第五步,用FFT求vn的L点DFT得到序列Vr;

第六步,将Yr和Vr相乘,得到序列Gr=YrVr;

第七步,用FFT求Gr的L点IDFT得到序列gk;

第八步,求输出序列Xk=gk,k=0,1,…,M-1。

由于音频信号的频率范围在300Hz至3400Hz,并且本项目组决定将N定为512,因此,可以事先将,512个点和L点vr算出并存放在存储器中,简化了第二步计算过程,省略了第四、五步;

第二,对音频信号进行检测,仅需要频谱的幅度信息。因此,只需在第八步后, 将Xk取共轭复数的乘积(功率谱的平方),即=颚2=颚2,k=0,1,…,M-1作为最终结果。由W的定义式 W=W0(其中W0=1),注意到W=1,从而有颚=1。因此,可简化为=颚2=颚2,k=0,1,…,M-1。也即在第七步得到gk后,可以直接取gk的前M点计算出结果,省略了第八步。

经过优化,可以省略第四步、五步和第八步,运算量大大减少。但是,如果仅仅使用CZT算法代替FFT算法进行频谱分析,将无法发挥前者的优势,原因显而易见:在本系统中,若单独使用CZT,则仍然只能将频谱分析范围设置为整个频带。根据CZT算法频率分辨率的公式,要想提高分辨率,则只能增加频率采样点数M,但M的增加必然导致运算量的大幅度提升。因此,可以使用FFT算法对频谱进行粗分析,利用得到的信息来设定CZT算法的频带范围,这样不但减小了CZT算法的运算量,又能保证较高的频率分辨率。

图3-3 频谱分析示意图

3-3所示,它不将频带分段,直接使用FFT算法对每帧信号进行频谱粗分析,如果检测到疑似声反馈频点Fc存在,则令CZT算法中的Fl=Fc-512,Fh=Fc+512,M=N=1024。因此,该方案在整个频带具有统一的最高频率分辨率,D3=(Fh-F1)/M=1024/1024=lHz。

4、结论

通过仔细研究,FFT+CZT的算法运算量及复杂度相对合理,仿真及现实效果满意,适合应用于实际声反馈抑制系统中。

参考文献:

[1]声反馈抑制技术及应用. 蔡以松.《电声技术》.2003.12.

[2]数字声反馈抑制器的应用. 赵晖《音响技术》.2000.5.

[3]声反馈抑制器的使用. 仰亮.《音响技术》. 2010.4.

[4]一款适合家用卡拉OK的简易声反馈抑制器电路.何亚宁 . 《电声技术》.2000.1.

作者简介:

刘金凤:(1982.9-),女,河北唐山人,本科,助理讲师,现任教于湖南水利水电职业技术学院,研究方向:单片机应用技术。

向志军:(1975.10-),男,湖南宁乡人,本科,讲师,现任教于湖南水利水电职业技术学院,研究方向:单片机应用技术、语音信号处理。

课题项目:

本文为湖南省高等学校科学研究项目《基于FPGA的声反馈抑制器设计与实现》项目研究成果,项目编号:10C0220

上一篇:园林工程中大树移植的有效方法与养护措施 下一篇:园林专业计算机辅助设计教学之我见