本发明涉及到实时语音通信、人机交互过程中的回声处理技术,特别涉及到一种频域自适应回声消除方法。
背景技术:
在实时语音通信过程中,通信终端扬声器发出的声音,总会被该终端的麦克风拾取到,若是不处理就发送出去,对方总能听到自己说话的声音;在人机交互领域,由于交互终端发出的声音又被麦克风拾取回去,同时拾取了控制者的说话声,若在麦克风拾取信号中不消除交互终端发出的声音,那么交互终端在识别控制者说话声音时将引入很强的干扰,降低了识别的成功率,最终造成交互困难。
针对实时语音通信过程中的回声干扰问题,现有技术也提出了一些技术方案,回声消除可以在时域或频域进行,由于在时域进行回声消除的复杂度较高,通常都是在频域进行回声消除,典型的频域回声消除方法如中国专利申请“一种用于消除声学回声的自适应滤波器及滤波方法”(申请号:201410073711.1)中所提出一种用于回声消除的自适应滤波方案。该技术方案是一种频域自适应滤波方法,利用远端信号x(n)作为参考信号,通过自适应滤波对传播路径h(n)进行系统估计,并利用估计的系统参数w(n)对参考信号进行滤波,进而消除终端麦克风采集到的信号d(n)中的回声得到残差信号e(n)。一方面将e(n)作为滤波结果直接输出,另一方面利用e(n)对自适应滤波器系数进行迭代控制。该方案中在对滤波器系数进行迭代控制时,自适应滤波器每迭代r次对滤波器系数限制参数进行一次更新,其中r是预先设定的固定值。
现有方案的问题在于:一方面,自适应滤波器系数的更新与滤波效果(残留信号)没有关联起来,且没有根据回声强度实时调整自适应步长因子,不能很好的保证在各种不同的话音状态下回声消除的精确度。
技术实现要素:
为了解决现有技术中存在的上述问题,本发明提出了一种频域自适应回声消除方法,以实现在各种话音状态下有效的自适应回声消除。
为了实现上述目的,本发明采用了以下技术方案:
一种频域自适应回声消除方法,包括:
根据发音单元的参考信号x(k)通过自适应滤波器估计回声信号y(k);
根据所述y(k)和麦克风拾取的信号d(k)计算残留信号e(k):
e(k)=d(k)-y(k)
计算频域参考信号x(f)的功率谱xpow(f);
计算频域残留信号e(f)的功率谱epow(f);
其中,e(f)=fft[0m个0,e(k)];
计算所述e(f)的共轭残留信号e*(f)与所述x(f)的相关功率谱xepow(f);
xepow(f)=||x(f)·e*(f)||2
计算x(f)与e*(f)的相关系数cohxe(f);
计算所有频点的cohxe(f)的平均值cohxeaver;
其中,所述f为频点数量;
将cohxeaver作为自适应滤波器在各频点的自适应步长因子,更新自适应滤波器系数
其中,所述k为时刻,k=1,2……m,m为所述自适应滤波器长度;所述f为频点;wk+1(f)为频点f的更新后的自适滤波器系数;wk(f)为频点f的更新前的自适应滤波器系数。
进一步的,所述估计回声信号y(k)包括:
将扬声器单元的参考信号x(k)转换为频域参考信号x(f);
x(f)=fft[x(k-m),...,x(k),...,x(k+m-1)]
估计频域回声信号y(f),
对所述y(f)进行快速傅立叶逆变换获得y(k);
y(k)=ifft[y(f)]
其中,所述ifft为快速傅立叶逆变换,
进一步,所述更新自适应滤波器系数包括:
对所述频域残留信号e(f)进行归一化处理,获得归一化后的频域残留信号enor(f);
根据所述enor(f)更新自适应滤波器系数。
本发明的技术方案将残留信号与参考信号之间的相关系数作为自适应步长因子,对各话音状态均可进行极大限度的回声消除。通话状态通常分为四种,远端单讲、近端单讲、双端讲话、双端静默。对远端单讲状态,麦克风拾取的是回声信号,在自适应滤波器的初始阶段,自适应滤波器有一个收敛过程,残留信号与麦克风拾取的回声信号强度相当,那么参考信号与残留信号直接的相关性很强,则对应的自适应步长因子也较大,当自适应滤波器进入稳定状态时,残留信号几乎为0,此时回声信号与残留信号的相关性非常弱,仅对自适应滤波器系数进行微调。对近端单讲状态,残留信号为麦克风拾取的本端话音,参考信号为0,此时计算出的相关系数为0,无需对自适应滤波器进行更新,而实际上此时并没有回声,确实不需进行回声消除。双端静默状态,残留信号与参考信号都很弱,相关系数也会很小。同时,本发明技术方案中针自适应步长因子,处理后频点之间仍保持原有的数据关系。本发明的技术方案能有效的提高回声消除的精确度。
附图说明
图1本发明频域自适应回声消除方法流程图。
具体实施方式
为了更好的说明本发明的技术方案,下面结合附图对本发明的具体实施方式进行详细描述。
具体实施例
本实施例为本发明频域自适应回声消除方法的一种优选实施方式。
参见图1,本实施例的频域自适应回声消除方法流程如图1所示,包括:
s1、根据发音单元的参考信号x(k)通过自适应滤波器估计回声信号y(k);
作为本实施例的一种优选实现方案,本步骤还可以经一部包括:
s101、将扬声器单元的参考信号x(k)转换为频域参考信号x(f)。
x(f)=fft[x(k-m),...,x(k),...,x(k+m-1)]
s102、估计频域回声信号y(f),
其中,w(f)为当前的自适应滤波器系数;
s103、根据所述y(f)获得所述y(k):
y(k)=ifft[y(f)]
其中,所述fft为傅立叶变换,所述ifft为傅立叶逆变换;
本是实例中,本步骤也可以通过其他方式对回声信号进行估计,本发明对此没有限制。
s2、根据所述y(k)和麦克风拾取的信号d(k)计算残留信号e(k):
e(k)=d(k)-y(k)
残留信号e(k)作为滤波消除回声干扰后的结果输出。
s3、计算频域参考信号x(f)的功率谱xpow(f):
xpow(f)=||x(f)||2
s4、计算频域残留信号e(f)的功率谱epow(f):
epow(f)=||e(f)||2
其中,e(f)=fft[0m个0,e(k)];
s5、计算所述e(f)的共轭残留信号e*(f)与所述x(f)的相关功率谱
xepow(f);
xepow(f)=||x(f)·e*(f)||2
s6、计算x(f)与e*(f)的相关系数cohxe(f);
s7、计算所有频点的cohxe(f)的平均值cohxeaver;
其中,所述f为频点数量;
s8、将cohxeaver作为自适应滤波器的自适应步长因子μ(f),更新自适应滤波器系数;
本实施例中,
本实施例中,本步骤可以根据所述x(f)、所述e(f)和所述cohxe(f)直接更新自适应滤波器系数:
其中,所述k为时刻,k=1,2……m,m为所述自适应滤波器长度;所述f为频点;wk+1(f)为频点f的更新后的自适滤波器系数;wk(f)为频点f的更新前的自适应滤波器系数。
作为本实施例的一种优选实现方案,本步骤还可以包括:
s801、对所述频域残留信号e(f)进行归一化处理,获得归一化后的频域残留信号enor(f);
s802、根据所述enor(f)更新自适应滤波器系数。
其中,所述k为时刻,k=1,2……m,m为所述自适应滤波器长度;所述f为频点;wk+1(f)为频点f的更新后的自适滤波器系数;wk(f)为频点f的更新前的自适应滤波器系数。
更新后的自适应滤波器系数wk+1(f)将用于消除下一个时刻麦克风拾取信号d(k+1)中的回声信号y(k+1)以得到下一时刻的残留信号e(k+1)。
双端讲话状态时,自适应滤波器是需要更新的,且参考信号与残留信号的相关性很强,但作为反馈信号的残留信号包含有本端话音,若直接反馈到自适应滤波器系数,势必会造成滤波器发散,本优选实现方案首先将频域残留信号进行归一化处理,再利用归一化后的频域残留信号来更新自适应滤波器系数,能很好地解决滤波器发散的问题。
需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。