文献标识码: A
文章编号: 0258-7998(2013)01-0013-04
在同时存在麦克风与扬声器的场合,经常会发生扩声器与麦克风之间因电声耦合而产生声反馈的现象,其原理如图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.1 数字振荡器的实现
正弦、余弦等三角函数在各个领域常见的振荡器中得到了广泛的应用,而如何能更精确、消耗处理器指令更少、更快地产生正余弦波成为一个不得不考虑的问题。在TI公司的开发工具CCS 中用C语言调用库函数sin(double x)和cos(double x)产生正、余弦波序列,每次都会消耗4 000条左右的指令,这是不可取的,将对以后的实时处理产生很大的影响;查表法虽然只有简单的加、减操作,速度也较快,但需要消耗一定的存储空间来存储查找表,较大的表格所造成的惊人的开销往往使嵌入式系统难以承受;而数字振荡器法不但容易实现,且产生的正、余弦波频率是可编程的,可以很方便获得所需的振荡器。因此,本系统选用数字振荡器。如有一正弦序列,使用Z变换的线性性质,可得正弦序列的Z变换为:
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的采样。
在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.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.