基于DSP的声反馈抑制系统的研究与实现

2013-08-13 08:13肖启洋张忠慧
电子技术应用 2013年1期
关键词:移频余弦增益

肖启洋,张忠慧,方 元

(南京大学 电子科学与工程学院,江苏 南京 210093)

在同时存在麦克风与扬声器的场合,经常会发生扩声器与麦克风之间因电声耦合而产生声反馈的现象,其原理如图1所示。声反馈是扩音系统中最禁忌的现象,它大大限制了系统扩声增益的提高,影响声音清晰度,导致声音出现失真,达不到扩音效果。严重的啸叫甚至可能导致扩音设备烧毁,尤其是功率放大器或音箱的高频头[1]。因此,如何有效地抑制声反馈,是扩声系统中一个非常重要的问题。

传统的抑制声反馈的方法 (如改善房间声学环境、调低音量电位器、采用均衡器拉馈点等方法)对调音员要求极高,不仅操作不便,且不能保证扩声系统音质,均为治标不治本的做法。而加入声反馈抑制器来抑制、消除啸叫则是“一劳永逸”的做法,不仅操作简单,而且抑制啸叫的能力比较明显,能够达到足够理想的扩声效果。目前市场上所见的声反馈抑制器多为国外的产品,价格十分昂贵。所以本着简单、经济实用的原则,本文介绍的系统采用 TI公司的 TMS320C6713(以下简称6713)浮点DSP处理器和移频法来进行啸叫的抑制,包括Matlab仿真和DSP系统实时实现,二者都达到了较明显、较满意的抑制效果。

1 移频法抑制声反馈

1.1 声反馈抑制器

与产生正反馈一样,产生啸叫也需同时满足幅度和相位两个条件。前者需要某频率语音信号的幅度大于此信号原先的幅度,即扩声功放的放大系数K和系统的反馈系数β的乘积不能小于1;后者需满足啸叫信号与其输入信号相位相同或相差360°的整数倍。所以理论上只要破坏二者其中一个条件即可破坏啸叫产生的条件[2]。在声反馈抑制方法中(如移频法、移相法、陷波法和压幅法等),移频法较易实现且效果良好,它是通过改善扩声系统的频率特性相应地抑制再生混响干扰,使得声源发出的声波经声场回馈到麦克风时,不会在原频谱上构成反馈,提高了扩声增益,频响特性和声音清晰度也能得到明显改善,故本系统采用了移频法来抑制啸叫。

1.2 移频法

所谓移频就是将采集到的语音信号在其所有频率成分上移动(升高或降低)某一移频数Δf,这样输出的语音信号就可以回避房间里峰点对其施加的影响,产生自激振荡的同相条件就被破坏了,从而可抑制啸叫的产生,且对原先输入的语音影响甚微。Δf一般为几赫兹,继续变化Δf固然可以提高扩声增益,但一般超过7 Hz时人耳就能察觉得到,所以在本系统中Δf取5 Hz。

图2为某一频率调制示意图,某一输入信号m(t)的频谱图如图2(b)所示,其频带宽度为 ωH,小于相乘器的频率 ω1(理想低通滤波器的截止频率),且 ω1<ω2。 输出信号 s(t)的频谱会如图2(c)所示,它是一个载频为(ω2-ω1)的上边带信号。由图2可以看到,信号m(t)经过移频器之后频率移动了(ω2-ω1),达到了移频目的[3]。

2 移频模块的设计

下面主要介绍移频所需的振荡器和滤波器两个重要模块。系统流程图如图3所示。

2.1 数字振荡器的实现

正弦、余弦等三角函数在各个领域常见的振荡器中得到了广泛的应用,而如何能更精确、消耗处理器指令更少、更快地产生正余弦波成为一个不得不考虑的问题。在TI公司的开发工具CCS中用C语言调用库函数sin(double x)和cos(double x)产生正、余弦波序列,每次都会消耗4 000条左右的指令,这是不可取的,将对以后的实时处理产生很大的影响;查表法虽然只有简单的加、减操作,速度也较快,但需要消耗一定的存储空间来存储查找表,较大的表格所造成的惊人的开销往往使嵌入式系统难以承受;而数字振荡器法不但容易实现,且产生的正、余弦波频率是可编程的,可以很方便获得所需的振荡器。因此,本系统选用数字振荡器。如有一正弦序列,使用Z变换的线性性质,可得正弦序列的Z变换为:

同理,余弦序列的Z变换为:

两种Z变换的极点都是在单位圆上的复正弦序列,即对应一个数字振荡器。很明显,从正弦、余弦序列Z变换的结果来看可以将二者分别设计为一个二阶IIR滤波器,使其系统的转移函数H(z)恰好为其 Z变换[4]。假设初始条件为 0,则由系统函数得到的正、余弦序列的差分方程分别为:

再根据“两个信号的时域的卷积等于它们各自相应的变换在频域的相乘”的性质,对以上差分方程输入单位抽样信号 δ(n),根据“δ(n)的卷积不变”性质,得其单位冲激响应为sin(nω0)和 cos(nω0)。图4就是利用数字振荡器法在6713 DSP上实现、并在CCS的示波器中显示结果。该振荡器频率为2 kHz、采样频率为40 kHz。对比二者波形图可看出,正、余弦相位差刚好为90°,证明设计结果与理论值相吻合。与查表法相比,使用振荡器产生正余弦信号时,每个数据实时地计算,明显节约了嵌入式系统中有限的系统资源。

2.2 滤波器的设计

本系统中多处用到滤波器,其中最重要的是数移频模块中的两处低通滤波器(如图2所示)。在选择滤波器时,考虑到在具有同样良好的频谱衰减特性的情况下,FIR滤波器的阶数要比IIR滤波器大得多,而IIR所需的运算量(主要指乘法和加法次数)较FIR小得多,所以本系统在此处选用IIR滤波器。

IIR滤波器中,椭圆滤波器(elliptic)通带和阻带都会出现较大起伏,且它的相频响应完全是非线性的,在接近过渡带的地方尤为突出;切比雪夫滤波器频率响应的幅频特性在通频带内存在幅度波动;而巴特沃斯滤波器的幅频响应的曲线在通带和阻带内都比较平坦,具有最平特性,且相频响应在通带内几乎是线性的,故本系统采用巴特沃斯滤波器。根据在Matlab中设计出的滤波器的参数,要在DSP开发环境下实现此滤波器,必须考虑两方面:(1)IIR的单位脉冲响应是无限长的,因而不能像实现FIR那样直接用卷积来计算,而要用递推法解差分方程;(2)根据DSP字长及精度的特点对参数进行定标、取舍、量化等处理,特别是对于定点处理器几乎是必须要考虑的,故本系统选用TI公司的浮点处理器6713以达到更精确目的。图5是向12阶巴特沃斯滤波器输入低频正弦与高频余弦叠加信号、并在DSP上运行前后的滤波效果图,可见设计的滤波器能较理想地满足任务要求。

3 DSP系统实现

DSP实现啸叫抑制阶段主要包含语音信号的采集、啸叫通道的建立、信号移频处理、语音信号的输出等部分。

3.1 系统硬件结构

6713是TI公司6000系列的一款非常经典的新型浮点DSP芯片。它最高主频可达300 MHz,处理速度高达2 400 MPIS;片上外设资源也很丰富,本系统将用到其两个多通道缓冲串口(McBSP)。6713的优异的性能使之特别适合于高精度应用,如在专业音频、数据采集、去噪、医疗和诊断图像应用等领域[5]。

图6为6713与Codec芯片 TLV320AIC23(以下简称AIC23)的连接示意图,即语音的采集(A/D转换)和回放(D/A转换)环节。AIC23是TI公司生产的一款高性能立体声音频编解码器,含有模拟/数字音频接口、控制接口、时钟管理、电源管理等部分。AIC23内部集成的模/数转换和数/模转换部件采用了先进的Sigma-Delta过采样技术,可以在 8 kHz~96 kHz的频率范围内提供 16 bit、20 bit、24 bit和 32 bit的采样。

图6 6713与AIC23连接图(主模式)

在Codec的控制环节中,根据MODE引脚电平可决定它是工作在 I2C(2线)模式还是 SPI(3线)模式,图6中此引脚接高电平,即工作在SPI模式下,此时与之连接的McBSP1也必须配置为SPI这种全双工通信的模式(此时CLKX和CLKR内部相连),这也正体现了AIC23与McBSP之间能进行无缝连接。此外,因为Codec的控制接口只是用来接收DSP发出的配置寄存器的命令(即单向,只接收数据通道),所以此SPI模式中没有串行输出数据线,即“三线”模式而非SPI传统的四线模式。CS是帧同步信号,SCLK与SDIN分别是串行数据时钟、串行输入数据线。DSP发出的控制命令是16 bit的且总是从MSB(最高位)开始。图7所示的时序图中bit[15:9]为11个AIC23寄存器的7位地址,后9位是欲配置的值,所以此处编程须注意将数据移1位。本系统将Codec配置为16 kHz采样、16 bit量化、双声道、MIC采集模拟语音信号输入、HeadPhone输出模拟语音信号。

数据通道环节中,图6中Codec芯片通过DSP的McBSP1口进行语音数据的A/D和D/A转换(即全双工的数据通道)。芯片数字音频接口部分有bit时钟信号BCLK、数据输入/输出 DIN和 DOUT、帧信号LRCIN和LRCOUT。AIC23支持多种音频接口模式,这里将其配置为主模式和与TI DSP的McBSP相兼容的DSP模式。这样,BCLK就会输出时钟信号,而LRCIN和LRCOUT就必须连接到DSP的帧同步信号FS引脚上。如图8所示,采集到的数据也是从MSB开始传输,这里将AIC23的Digital Audio Interface Format寄存器配置为先发送16 bit的左通道数据,紧接着发送16 bit的右通道数据[6]。

3.2 系统软件实现

系统主要环节的程序流程图如图9所示。移频模块中,IIR滤波器的实现可以用直接Ⅱ型实现,也可用数个二阶IIR滤波器级联而成。因为本系统中滤波器阶数较少且使用6713浮点处理器,故选用直接Ⅱ型实现。另外,由于数据的处理是一个不间断的过程,且此刻数据和前一时刻数据有着密切联系(例如滤波器),故移频函数里大部分数据需要定义为全局变量,以便具有记忆功能和间接传递参数的作用。

图9 系统程序流程图

3.3 系统运行分析

在实验室中建立一个简易的啸叫通道,即麦克风-前期放大-DSP系统-功放-音响。主观上评价可通过不断减少拾音器和扩音器之间距离或不断提高扩音器增益来感受DSP中插入移频模块前后啸叫的情况。本文所建啸叫通道在处于后者的情况下,距离为零和增益到最大位置时均不会产生啸叫,表明抑制效果十分明显。图10的上图所示为拾音器采集到的从正常语音到开始啸叫的一段波形图,在同样的环境将移频模块加入DSP中,采集到的数据如图10的下图所示。对比两图可以明显看到,啸叫得到抑制甚至是被消除,啸叫抑制效果比较理想。对采集到数据进行计算可知,系统增益提高了约6 dB。

本文详细介绍了基于声反馈抑制器中的移频法来抑制、消除啸叫的方法,并在Matlab上进行仿真和在DSP上进行实现。实验表明,此法对啸叫起到了很好的抑制、消除作用,可使系统增益提高大约6 dB,较为理想。与其他方式相比,移频法较容易实现、效果明显、既经济又实用、贴近实际,具备很高的应用价值。

[1]卢官明,宗昉.数字音频原理及应用[M].北京:机械工业出版社,2005:160-163.

[2]谢剑跃.扩声系统中声反馈的产生及抑制方法[J].音响技术,2011,20(1):32-36.

[3]樊昌信,曹丽娜.通信原理(第 6版)[M].北京:国防工业出版社,2009:86-128.

[4]林静然.基于 TI DSP的通用算法实现[M].北京:电子工业出版社,2008:96-109.

[5]三恒星科技.TMS320C6713 DSP原理与应用实例[M].北京:电子工业出版社,2009:74-87.

[6]Texas Instruments.TLV320AIC23 stereo audio Codec,8-to 96 kHz,with integrated headphone amplifier data manual(SLWS106D)[R].2002.

猜你喜欢
移频余弦增益
基于增益调度与光滑切换的倾转旋翼机最优控制
基于LFM脉冲压缩雷达的移频干扰仿真研究
基于单片机的程控增益放大器设计
基于Multisim10和AD603的程控增益放大器仿真研究
两个含余弦函数的三角母不等式及其推论
基于频谱扩展-压缩(SSC)的移频干扰分析
实施正、余弦函数代换破解一类代数问题
分数阶余弦变换的卷积定理
图像压缩感知在分数阶Fourier域、分数阶余弦域的性能比较
随机变刚度电磁支撑-转子系统的移频特性实验研究