长时延环境中的回声消除器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文中视频聊天软件采用DirectSound技术来处理声音的回放和采集。DirectSound[3]是 DirectX API的音频组件之一,提供快速的混音、硬件加速功能,并可以直接访问相关设备, DirectSound编程可以有效的降低回放和采集的延迟。声音的回放和采集均通过组件接口及其 消息机制实现,如图2示。
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
长时延环境中的回声消除器设计
傅政军 饶若楠
(上海交通大学计算机科学与工程系,上海 200030)
摘要:本文讨论了回声消除器的基本原理以及软件环境中声音信号的时延特性,并提出了一
种适用计算机软件实现回声消除器的改进的时延估计算法。实验结果表明该算法增强了回声
出现缓冲区数据未及时采集而丢失的情况;或者当程序采用其他采集和回放技术时,声音信
号在缓冲器中的排队时间无法估计,此时需要精确的时延估计方法来确定直接延迟。
图3 回声通道的冲击响应
图4 远端近端信号的互相关函数
4 延时估计器
目前时延估计有互相关估计、广义互相关法、相位谱法、参量模型法和自适应时延估计
等[4]。由于回声消除器中自适应滤波器的抽头个数较多,能够适应小范围内的信号时延误差。
图5 基于短时平均功率的互相关函数
图6 基于短时过零率的互相关函数
4.4基于过零率的延时估计器
从图4和图5中可以看出,近端信号中包含有大量的噪音,噪音的短时平均功率在无语音
时仍然很大。因此可以通过过零率的检测来消除噪音的干扰。短时过零率表示一帧语音中语
音信号波形穿过横轴(零电平)的次数。
对于一帧远端语音s(n),其过零率z(n)的计算公式如下:
R(t) =
1
N
∑ sP(n + t)rP(n)
256 i=1
(15)
图5中,图上左为近端语音信号短时功率,图上右为远端语音信号短时功率,图下为其 短时功率的互相关函数波形。互相关函数计算最大值为:3963,延迟约为495ms。由于远端 和近端信号的短时平均功率不再包含丰富的频率信息,因此可以对信号的短时平均功率进行 高倍欠采样而不影响结果。
现代回声消除系统的基本思路是采用自适应滤波器来估计回声回路的特征,人为模拟出 回声信号,在输入信号中减去这一信号,从而达到消除回声。声学回声消除的功能原理如图 1 所示,s(n)为远端语音;r(n)为近端麦克风采集的声音;r~(n)为自适应滤波器模拟的回声信 号;e(n)为回声残余。当近端静音时,设房间回声 通道的冲激响应为 h(n),用 m 维向量表示。
m
r(n) = ∑ i s(n − i)h(n,i) i =1
e(n) = r ~ (n) − r(n)
(1) (2)
(1)式可以简写为:
r(n) = sT (n)h(n)
(3)
自适应滤波器根据已知 s(n)的信息尽可能精确 地估计 r(n)。在理想状态下,当近端静音时,自适应 滤波器应中 e(n)应收敛为零。而当近端有声音时,
声学回声主要产生于麦克风与扬声器间的声学耦合,如图 1 示。通过网络传输的远端用 户声音信号经扬声器播出,直接或者在有限空间经多次反射后进入麦克风,麦克风采集的声 音信号经编码通过网络发送回远方用户,远端用户就能听到自己的回声。声学回声的特点是 延时大,多回路反射波之间的延时大。 2.2 声学回声的消除法
者作为延时的估计参数。
∑ R(t) = 1
N
s(n + i)r(n)
N i=1
n0 = max{R(t)}
(9) (10)
其中N为互相关延迟估计算法要搜索的区间范围。当延迟搜索区间较大时,需要增加近 端信号和远端信号的长度来保证结果的正确性,算法的计算量与搜索范围N的平方成正比。 实际中搜索的区间范围有500ms,需要取出队列中最近4-8秒左右的近端语音和远端语音信号 作为比较源。在8000HZ的采样频率下,500ms的声音信号数据量为4000,算法计算量相当大。
图2、DirectSound回放录音原理 以播放为例,程序中先分配一块缓冲,用需要回放的声音数据填满缓冲,然后启动回放 程序,开始不断的循环。声卡回放完一个缓冲就给程序发一个消息,程序就可以提前往该缓 冲写好数据。消息通知是通过IdirectSoundNotify接口来实现的,输入输出缓冲可以设置为硬 件缓冲或者软件缓冲,缓冲的大小也可以设置。声音采集与播放的过程类似,程序分配一块 缓冲,启动声音输入系统,开始循环,声卡写完一个缓冲就发送消息给程序,然后程序读出 缓冲区数据并存储,声卡继续填写数据。 3.2 软件环境下的回声消除器 在视频聊天软件下,回声消除器工作方式如下:程序收到声音输入缓冲区满的消息后, 回声消除器记录当前声音输入缓冲区的数据,将其加入近端语音信号r(n)的队列中,并将声 音输出缓冲区的数据加入到远端语音信号s(n)的队列中。同时回声消除器中的自适应滤波器 对刚加入的近端语音r(n)部分进行处理,得到回声残余信号e(n)。其中,回声消除器必须在 下一个声音输入缓冲区满的消息到来前完成该工作。 3.3 软件下的回声延迟分析 从图2可以看出,数据从写入声音输出缓冲后要经过一定的排队等待才能被扬声器播送。 当扬声器的声音经过空气传送到麦克风采集后,也要等待一个缓冲区才能从程序中读到该数
[Key words] Echo Cancellation, Time Delay Estimation, NLMS, Software Implementation 1. 引言
回声的处理是电视会议系统中必须解决的一个重要问题。目前大部分 IP 电话的回声消 除都是基于硬件基础上的,当应用到软件上回声消除会出现计算量过大、信号延迟不确定等 难点。本文分析了视频聊天软件系统中回声的特点、回声消除的方法及其关键技术。 2. 回声概述 2.1 回声的产生机理
因此从计算量的角度出发,本文选择计算量最小的互相关时延估计法。
4.1粗略延时估计器
由于声波的直射、散射、反射等特性,回声的产生可以看作是一个多路径时延问题,其
表达式与(1)(2)相同,近端信号看作是远端信号经过时延和回声路径的冲击响应产生。因此
回声路径的延迟估计可以通过计算近端信号和远端信号的互相关函数,从中选出绝对值最大
目前回声抵消器中使用得最广泛的自适应算法包 LMS、NLMS、RLS 等[1]。由于语音信 号的时变性,考虑计算量、收敛速度、稳定性以及稳态误差等因素, 本文最终采用 NLMS 算法。NLMS 在 LMS 的基础上增加了归一化因子而得到,其调整幅度随输入信号能量的 变化而改变,因而与 LMS 相比更为稳定。NLMS 算法的递推公式如下:
如果能够正确地估计出声音的直接延迟n0,那么式(1)(2)可以改写为:
r(n) = sT (n − n0 )h(n) e(n) = r ~ (n) − r(n)
(7) (8)
滤波器的长度可以从原来的m减小为m-n0,极大地减小了计算量。当程序在正常工作时,
可以用缓冲器长度乘排队个数来作为直接延迟的估计值。但当计算机CPU占用率过高时,会
图 1 声学回声消除器的原理
1
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
实际麦克风输入为:
r(n) = sT (n)h(n) + d(n)
(4)
此时理想状态下的 e(n)收敛为 d(n),即回声残余中将不再包含有远端语音的信息。 2.3 算法的选择
3
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
图4中,图上左为近端语音信号波形,图上右为远端语音信号波形,图下为两信号的互
Leabharlann Baidu
相关函数波形。从图中可看出,其互相关函数最大值即为延迟估计值:3963,延迟约为495ms。
4.2基于欠采样的延时估计器
e(n) = r ~ (n) − sT (n)h(n)
(5)
h(n
+
1)
=
h(n)
+
2e(n)s(n)
sT
µ (n)h(n)
+
a
(6)
(6)式中,a为一个小的正常数,其余定义同2.1节所描叙。该算法的计算量是与滤波器h(n) 的阶数m的平方成正比。 3 视频聊天软件系统中的回声延迟估计
在视频聊天软件中,涉及到视频音频的编码解码工作,CPU占用率较高[2]。另外由于 视频聊天系统的实时性要求,回声消除器必须尽量减小计算量,在最短的时间内完成工作。 3.1 Windows系统下的录音放音机制
消除器对环境的适应性。
关键词:回声消除器,时延估计,NLMS 算法,软件实现
中图分类号:TP273+.2
文献标识码:B
Echo Cancellation Implementation with Long Time Delay
Fu Zhengjun , Rao Ruonan (Dept. of Computer Science and Engineering, Shanghai Jiaotong Univ., Shanghai, 200030) [Abstract] The paper discusses some important issues,the principles of the acoustic echo cancellation and time delay for software implementation. The design of a new time delay estimation optimized for AEC is also put forward. Experiments proved the new time delay estimation enhance the adaptability of acoustic echo cancellation in the complex environment.
由于计算量过大,须在延时波动范围500ms固定的情况下减小搜索范围。因此本文提出
欠采样的互相关延时估计器,在以低于8000HZ的频率对信号进行重新采样后再计算互相关
函数。人们在日常说话时的语音信号频率范围在300Hz~3000Hz之间,因此在延时估计中采
用低于8000HZ的频率是合理的。实际运算中,使用2000HZ对近端信号和远端信号进行重采
2
http://www.elecfans.com 电子发烧友 http://bbs.elecfans.com 电子技术论坛
据。因此,远端语音信号数据从写入声音输出缓冲区,到在声音输入缓冲区被读出,时间总 共为: 缓冲器长度×排队个数+声音在空气中传播时间。
在5×5 m2大小的房间内,只考虑前2次反射的回声,回声最大时延约为20/340≈60ms。 声音以8 kHz采样,则需要60×8 = 480个滤波器抽头,在大型会议室需要有1000个左右的抽 头。而声音在缓冲器中排队的时间要往往大于声音在空气中传播的时间,为此回声消除器将 再增加几千个抽头。
原信号的有效信息,从而导致算法失效。在长延迟的情况下,算法需要进一步考虑减小计算
量,因此本文提出基于信号的短时平均功率的互相关延迟估计方法。语音信号的短时平均功
率计算方法如下
sP (n) = sP (n − 1) * 255 / 256 + s 2 (n) / 256
(13) (14)
rP (n) = rP (n − 1) * 255 / 256 + r 2 (n) / 256
在回声消除器中,并非所有的抽头都是有效的。实际中观察回声通道的冲激响应h(n), 如图3所示,很多抽头系数始终0,这一部分表示为声音的直接延迟,声音信号在缓冲器中排 队的时间可以看作是直接延迟。如图3中系数较大并不断更新的部分,只占整个滤波器的一 小部分,代表声音在空气中的直射以及反射折射过程,是回声通道中的有效冲击响应。
样,计算复杂度为原来的1/16。
∑ R(t) =
1
N /k
s(n + i *k)r(n)
N i=1
n0 = k * max{R(t)}
(11) (12)
由于声音信号的欠采样的波形保持不变,与图4类似,延迟为991个样本,时间约495ms。
4.3基于短时能量的延时估计器
欠采样算法也有一定的局限性,重新采样频率不能太低,否则欠采样的信号将不能包含
相关文档
最新文档