关键词:声学回声消除器,自适应滤波器,归一化最小均方(NLMS),块频域(BFDAF),分区块频域(PBFDAF)
原文来自Symetrix AEC tutorial guide
声学回声问题
声学回声消除器在免提电话、移动电话、车载套件、桌面通信、音视频会议、语音控制、桌面听写、语音识别等应用中是必需的。在所有这些应用中,声学回声抵消器解决的问题如图1所示。
在该图中,显示了通信信道(例如音频会议)的一方。接收到的语音或音频信号(Rout)通过扬声器播放,以便本地会议室的所有用户都能听到远端用户的讲话。本地用户的语音由一个或多个麦克风采集,通过通信信道传送给远端用户。这种音频通话的问题是,通过扬声器播放的语音信号Rout及其在房间边界(图1中的灰色线)的反射信号也将被本地麦克风收集,并与本地用户的语音一起传输给远端用户,远端用户会听到被延迟的自己的声音。在通信链中出现的回声,会让远端用户感觉到被自己的回声打断,迫使他们停止讲话,直到回声消失,这个过程被反复重复。当延迟足够大时,特别是在移动通信和VOIP中,这种回声会极大降低通信质量。
声学回声消除器
通过声学回声抵消器可以显著地减少上述声回波问题(图1所示)。AEC的主要功能是估计本地扬声器到本地麦克风的包括了反射路径的声学传输函数。通过估计的声学传输函数过滤传入的语音信号,得到图1中回波信号的估计y(n)。然后从麦克风信号d(n)中减去这个估计的回声y(n)得到无回声的信号e(n),e(n)=d(n)-y(n),将信号e(n) 而非麦克风信号d(n)通过信道传输到远端。最好的情况下,当估计的y(n)是准确的,就可以完全消除回声。G.167标准中建议,实际的回声消除器应该实现40至45 dB范围内的回声降低。
声回波消除器通常采用可调的(或自适应的)有限冲击响应(FIR)滤波器来估计声学回波路径。使用自适应算法调整FIR系数以最小化误差信号(图1中的Sout)。自适应滤波器的输入(参考)信号是远端语音(Rin),而期望信号是近端语音(Sin)。在滤波器收敛后,自适应滤波器系数会有一个与本地扬声器和传声器之间的脉冲响应相近的脉冲响应。滤波器响应包括:扬声器前的DA转换器
驱动扬声器的功率放大器
扬声器的频率响应
包含房间边界外反射的声学路径
麦克风响应
麦克风后面的前置放大器
麦克风后的AD转换器
由于这种声脉冲响应可以持续几百毫秒,所以声回波抵消器通常需要较长的自适应FIR滤波器。G.167假定了电话会议应用的平均混响时间为400毫秒,免提电话的平均混响时间为500毫秒。在8kHz或16kHz的采样频率下,回声消除器采用几千个系数的自适应滤波器,这在实践中是很常见的。在如此长系数的滤波器中进行实时自适应和滤波具有一定的难度,因此必须采用先进且有效的信号处理算法,以满足计算复杂度和加快自适应滤波器的收敛速度。本文对其中的几种算法进行了研究。在声学脉冲响应较短的简单应用中,可以使用时域算法,例如归一化最小均方(NLMS)或其变体。对于更复杂的环境,频域滤波器如块频域自适应滤波器或其分区版本是更好的方案。时域和频域自适应滤波器算法将在第六章详细讨论。
AEC组成
自适应滤波器是声学回声消除器中最重要的组成部分,但AEC必须包括其他几个部分才能正常工作。例如,如果在没有远端语音信号的情况下(远端说话人没有讲话)或者当通话双方同时讲话时(Double-Talk),自适应滤波器将发散,系数将被破坏。在详细介绍自适应滤波器算法之前,本节将讨论商业AECs中通常包含的其他必要组成部分。图2显示了声回波消除器的不同组成部分及其彼此之间的关系。下面对每个组成部分进行简短描述。
远端语音检测器(FESD):FESD分析传入的语音信号Rin并确定远端扬声器处于活动状态的时间。FESD的判决指向中央控制单元(CU)块,该块生成一个控制命令,该命令启用或禁用自适应滤波器系数的自适应。仅当远端扬声器处于活动状态而本地扬声器未处于活动状态(No Double-Talk)时,才允许自适应滤波器进行自适应。在这种情况下,也有回声要消除。
近端语音检测器(NESD):NESD分析本地麦克风信号Sin,并确定本地扬声器处于活动状态的时间。 FESD的决定也直接指向中央控制单元(CU)模块。 当仅本地扬声器处于活动状态时,CU生成控制命令以禁用滤波器系数的自适应。 在这种情况下,也没有必要通过自适应滤波器对远端语音进行滤波以计算估计的回声y(n),因为没有要消除的回声。CU生成的信号会禁用滤波过程,因此会降低运行AEC软件处理器的功耗。
双端通话检测器(DTD):DTD分析多个信号,以确定通话双方同时通话的时间点。DTD的决定被引导到CU,当检测到双端通话时,CU生成控制命令来禁用滤波器系数的自适应,这里必须将已经自适应获得的系数冻结,否则将会发散。
控制单元(CU):在控制单元中分析FESD、NESD 、DTD的输出,该控制单元向自适应滤波器生成控制命令,以定义滤波器是否应计算回声、更新滤波器或不执行这两个操作。
非线性处理器(NLP):当两个扬声器均未激活时,或者当残余信号电平足够低时,控制单元会生成一条命令,以激活位于残余路径中的NLP,以输出一个合适的信号进一步降低回声。
降噪单元(NR):当通信设备在嘈杂的声学环境中运行或使用廉价的内部原件产生噪声时,降噪单元必不可少。NR单元清除麦克风信号中的噪音,从而提高语音质量并能降低语音控制和语音识别系统中的识别错误率。
自动增益控制(AGC):无论输入的声级如何,AGC单元都将其输出的声级保持在预定义值。为了提高信噪比,Rout信号在发送到通信信道之前首先通过AGC。这对于避免扬声器远离麦克风、扬声器麦克风位置不断变化造成通信质量下降非常重要。另一个自动增益控制单元也可用于Sout端,以自动调整扬声器的声音。
AEC指标
通常需要比较AECs的几个实现的性能,或者测试特定实现是否符合某个标准,如G.167。这就引出了评估回声消除器性能时应该进行测量哪些量的问题。本节总结了AEC性能的最重要指标。
AEC处理延迟:AEC内部处理不同信号可能导致的额外延迟。G.167建议在端到端数字通信系统(例如,宽带电话会议)的每个语音传输方向上最多延迟16 ms。对于连接到PSTN的免提电话,此最大值减少为2 ms,对于移动无线电系统,此最大延迟为10毫秒。
加权终端耦合损耗—Single-Talk:这是远端用户在讲话而近端用户不在讲话时的回声减少量。 通过首先重置所有AEC系数并在Rin输入端施加信号来测量该量,然后测量Sout处的相应电信号,将其设为Sout1。然后启用AEC使能足够长的时间。除了由于Rin信号引起的扬声器声音外,没有其他信号施加到麦克风。完全收敛后,进行Sout的第二次电测量,设为Sout2。 Sout2和Sout1之间的差异(以dB为单位)是Single-Talk耦合损耗。 对于不同的数字和模拟系统,G.167要求40至45 dB的耦合损耗。
加权终端耦合损耗—Double-Talk:类似于单个通话情况,该量是当通信系统的两个用户同时通话时的回声减少量。通过首先重置所有AEC系数并在Rin输入端施加信号来进行测量,然后测量Sout处的相应电信号,将其设为Sout1。 然后启用AEC使能足够长的时间。完全收敛后,在Sin处施加一个模拟近端用户语音的信号2秒钟,并冻结AEC的系数,然后对Sout进行第二次电气测量,将其设为Sout2。 Sout2和Sout1之间的差异(以dB为单位)是Double-Talk耦合损耗。对于不同的应用,G.167需要25至30 dB的耦合损耗。
初始收敛时间:该量是从启用AEC的1秒后达到的耦合损耗的数量。这是通过首先重置所有AEC系数,然后启用自适应来测量的。在Rin处施加信号并启动计时器。计时器到达1s时刻冻结AEC系数。启用AEC自适应之前的Sout与1s自适应之后的Sout之差就是耦合损耗。对于所有应用场景,G-167要求该耦合损耗至少为20 dB。
其他值得关注的指标是恢复时间,回声路径变化时的终端耦合损耗以及回声路径变化后的恢复时间。其他指标可以参阅G.167。
回声消除器的自适应滤波器
如前所述,自适应滤波器是回声消除器中最重要的组成部分。AEC的大多数性能特征,也直接与用于实现AEC滤波器的自适应滤波算法有关。在这个部分,讨论AECs中最常用的自适应算法。仅考虑有限脉冲响应横向滤波器。为了更好的理解,下面给出自适应滤波器的框图。
自适应滤波器的一般框图(如图3所示)。自适应滤波器是图中虚线框,由两部分组成,滤波器部分和更新部分。滤波器部分的功能是计算输入信号x(n)与滤波器系数的卷积,从而得到输出信号y(n)。滤波系数的设定由更新部分连续调整。更新部分(图3中标记“自适应算法”)负责调整滤波器系数,以使滤波器的输出y(n)尽可能接近期望信号d(n)。在大多数情况下,更新部分会以较小的步长更改滤波器系数,以最小化误差信号e(n)的某个函数,该函数定义为期望信号d(n)与滤波器输出y(n)之差,e(n)= d(n)- y(n)。在AEC应用中,信号x(n)是应用于Rin输入的远端语音,期望信号d(n)是麦克风信号Sin,滤波器输出y(n)是估计的回声。自适应滤波的误差信号是从Sout??通过网络传输的无回声信号(见图1)。
A 时域和频域自适应滤波器
滤波和系数更新都能以逐个样本(sample-per-sample)或以样本块(block process)的形式执行。在前一种方法中,每当输入样本x(n)到达时,就会调用自适应滤波器函数以计算滤波器输出并更新所有滤波器系数。在后者中,在缓冲区中缓存L个样本块,并调用了自适应滤波器函数来处理整个缓冲区,从而产生L个输出样本,并在每个缓冲区已满的样本中更新所有滤波器系数。逐个样本和块处理被证明具有相同的性能和计算复杂度。在block process的情况下,可以完全在频域中执行滤波和系数更新功能。这是通过首先在数据缓冲区上应用傅立叶变换并通过在频域中进行复杂的元素乘法来执行滤波(卷积)和更新(相关)来实现的。然后,使用逆傅立叶变换将结果转换回时域。该过程可以高效实现很长的自适应滤波器,例如,通常在回声消除器中使用的自适应滤波器。
对于较长的自适应滤波器而言,频域自适应滤波器比其时域滤波器具有更高的计算效率,但这是有代价的。频域自适应滤波器比时域滤波器消耗更多的内存。此外,频域滤波器在信号路径中引入延迟,即缓冲延迟(采样缓冲样本的时间)和处理延迟(处理缓冲区样本,并且结果仅可用于以下块的输出)。内存使用量的增加不可避免,因为需要将FFT表以及一些数据保存在内存中。延迟问题可以通过减小块长度(每个块处理的样本数)来解决,但这减少了通过在频域中执行卷积和相关运算而节省的计算量。??更好的解决方案是将滤波器分为较小的部分,以允许使用较小的块长度,同时保持计算节省量几乎不变。传统的频域自适应算法通常称为块频域自适应滤波器(BFDAF),而分区版本的自适应算法称为分区BFDAF(PBFDAF)。关于PBFDAF,存在已经申请专利的频域算法,该算法提供零延迟(仅通过时域滤波器实现),例如非均匀分区频域自适应滤波器。
B 资源需求
为了说明使用频域自适应滤波器时需要多少内存和消耗多少计算量,NLMS和BFDAF算法的内存使用量和计算复杂度(分别使用不同的滤波器长度)参考图4和图5。图5假设每个加法、乘法或除法消耗相等的处理周期来计算的。因此,纵轴是使用相应算法处理一个输入样本所需的计算次数。但这并不是所有处理器的最佳表示。例如,典型的16位定点DSP在一个周期内执行一次乘法和一次加法运算,但需要16或32个周期来计算一次除法运算。然而,这些图给出了一个通用的相对定量图,用于比较时域和频域自适应滤波器的资源需求。
C 收敛速度和回声抑制
至此,时域和频域自适应滤波器算法的资源需求问题得到了解释。针对这两类滤波器,本小节研究了回波抵消器的两个最重要的性能指标:收敛速度和回声回波增强。下面给出的结果是使用运行在PC上的AEC软件获得的。在一个中等大小的房间里,通过笔记本扬声器在Rin输入处播放语音片段(采样率22.05 kHz),并将产生的Sout信号记录到波形文件中,以作进一步分析。使用时域和频域滤波器进行一些实验。在每个实验中,使用不同的自适应滤波算法,同时保持其他实验参数(滤波器长度、输入信号、房间、扬声器和麦克风位置等)不变。为了在不同的算法之间进行公平的比较,我们选择了为给定输入信号提供稳定系统的每个滤波器的最快收敛常数??。所有的自适应滤波器都使用C/C++实时版本的自适应信号处理工具箱设计和实现的。
图6给出了上述1024个系数的BFDAF算法的实验结果。在本实验中,选取1024个样本以取得最大效率,并将适应常数设为0.03/1024。结果表明,BFDAF自适应滤波器在应用输入语音并使滤波器自适应的那一刻起,在1秒前就可以很容易地实现20dB以上的回波抑制。图6底部的回声回波损耗增强(ERLE)图表明,当麦克风信号有足够的空间来降低回波时,BFDAF很容易实现40dB的回波降低。请注意,ERLE图是麦克风信号和残余信号与时间的比率图,仅当有足够的回波被消除时才有意义。
图7示出了具有1024个系数的NLMS算法的相同实验的结果。实验发现,对于同一输入语音信号,最大自适应常数为0.012/1024。结果表明,具有上述参数的NLMS自适应滤波器在满足G.167关于收敛速度和回声回波损耗增强(ERLE)的建议方面存在较大的困难。这是长的NLMS滤波器的典型性能。对于较短的过滤器,NLMS算法性能良好,但随着滤波器长度的增加,收敛速度和最终失调量都会增大。最后值得一提的是,离线进行同样的实验,NLMS AEC在奔腾III 500MHz笔记本电脑上处理同样的7秒语音片段大约需要3秒。与上述参数相同的BFDAF算法只需0.11秒。将BFDAF的块大小从1024减少到128,处理时间将增加到1.2秒。用8个分区的BFDAF自适应滤波器进行了同样的实验,每个系数长度128和块长度128。PBFDAF的性能与BFDAF算法相似,在同一台奔腾500MHz笔记本电脑上进行的离线实验耗时0.45秒。
AEC总结
声学回声消除器中,最重要的组成部分是自适应滤波器。许多应用中,必须使用数千个系数的自适应滤波器来满足所需的回声降低。当使用简单的时域算法(如NLMS算法)来实现这种长的自适应滤波器时,AEC的性能不理想,并且需要大量的计算能力。另一方面,在频域实现自适应滤波器,降低了计算复杂度,提高了AEC性能。这是以增加内存需求和引入处理延迟来实现的。
参考Symetrix AEC tutorial guide
ITU-T Recommendation G.167, Acoustic Echo Controllers, International Telecommunication Union. 1993.
如果觉得《aec一pc_什么是AEC声学回声消除器?》对你有帮助,请点赞、收藏,并留下你的观点哦!