一种基于神经网络双讲检测的回声消除方法及系统与流程



1.本发明涉及音频处理技术领域,尤其涉及一种基于神经网络双讲检测的回声消除方法及系统。


背景技术:



2.声学回声消除(acoustic echo cancelling,aec)算法是一种语音信号处理及语音通讯领域的常用算法之一,广泛用于语音通讯与智能语音人机交互等应用中。在语音通讯中,主要是为解决全双工通话过程中任何一端说话人听到自己说话声(回声)的问题。使用回声消除算法可以在近端提前进行去回声处理,之后再送达远端,这样远端说话人将不再听到自己的说话声。在智能语音人机交互过程中,为了防止智能设备自己播放的音乐或者说话声对语音识别构成干扰,也需要使用回声消除算法提前将自已播放的声音去除,以防止误识别和提高识别率。
3.现有的aec方法中,通常利用自适应线性滤波器去估计回声信号,然后根据估计的回声信号抵消掉通信系统中的回声信号。为了提升aec方法中线性自适应滤波器的效果,通常增加双讲检测模块(double-talkdetection,dtd),来配合自适应线性滤波器。双讲检测模块用于检测通信双方的讲话状态,例如,通信双方同时讲话时为双讲状态。相关技术中,在通信的一端,通过检测本端语音信号(即近端语音信号)和另一端的语音信号(即远端语音信号),来确定是否为双讲状态。
4.但是现有的双讲检测方案鲁棒性差、检测准确率不高的问题,使得回声消除效果不理想;此外,仅通过线性自适应滤波器对回声信号进行消除,得到的信号中仍然有线性残留回声与非线性残留回声信号,会影响最终的回声消除效果。
5.因此,有必要提供一种基于神经网络双讲检测的回声消除方法及系统来解决上述技术问题。


技术实现要素:



6.为解决上述之一技术问题,本发明提供的一种基于神经网络双讲检测的回声消除方法,包括输入信号处理、线性自适应滤波处理、非线性后处理、rnn双讲检测和输出信号处理。
7.具体的,输入信号处理:采集近端的麦克风信号和远端的参考信号,并以数字信号流形式进行传输;将麦克风信号和参考信号分别存储至输入缓冲区中,所述输入缓冲区将信号分块为若干数据块,所述数据块包括麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n);其中l=1,2,3,

表示数据块序号,n=0,1,2,

,n表示每个数据块样点序号,n是每个数据块样点总数。
8.具体的,rnn双讲检测:通过递归神经网络rnn对麦克风信号与参考信号进行人声检测,并利用有限状态机控制给出双讲检测状态结果db_flag(l),其中,所述双讲检测状态结果db_flag(l)包括:只有远端有人声的远端单讲状态far_talk_only,只有近端有人声的
近端单讲状态near_talk_only和远端近端都有人声的远近端双讲状态doble_talk;所述双讲检测状态结果db_flag(l)用于对线性自适应滤波处理和非线性后处理进行反馈调节。
9.具体的,线性自适应滤波处理:接收麦克风信号数据块d
l
(n)、参考信号数据块x
l
(n)并进行逐点数据处理;数据处理通过nlms算法进行,并通过双讲检测状态结果db_flag(l)进行自适应调节,得到自适应更新后的滤波器系数通过滤波器系数计算自适应更新后的残差信号e
l
(n)。
10.具体的,非线性后处理:用于进一步去残差信号e
l
(n)中线性残留回声与非线性残留回声信号;得到aec输出信号数据块out
l
(n)。
11.具体的,输出信号处理:将去除回声后的aec输出信号数据块out
l
(n)存入输出缓冲区,并进行数据合并,得到连续的音频数据流进行输出。
12.作为更进一步的解决方案,所述线性自适应滤波处理通过如下步骤进行:
13.接收麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n),初始化滤波器系数向量
14.其中,表示第l号参考信号数据块第n点的参考信号向量;表示当前x
l
(n)对应的滤波器系数向量;t表示当前向量的转置,l为初始化时设定的滤波器长度,的初始化值均设置为0;
15.通过上一帧第n点的滤波器系数估计当前帧第n点的回声信号
[0016][0017]
通过估计的回声信号计算当前帧第n点估计的残差信号e
l
(n):
[0018][0019]
计算参考信号能量e
l,x
(n):
[0020]el,x
(n)=x
l
(n)
t
x
l
(n)
[0021]
计算可变步长因子μ
l
(n);
[0022]
更新估计的回声信号与估计的残差信号e
l
(n)的自相关函数与互相关函数:
[0023][0024][0025]
其中,r
dd
(n)为回声信号自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数,其中,α为遗忘系数,r
dd
(n)和r
de
(n)的函数初始值设置为0;
[0026]
进行rnn双讲检测,得到双讲检测状态结果db_flag(l);
[0027]
根据双讲检测状态结果db_flag(l)、上一帧第n点的滤波器系数可变步长因子μ
l
(n)、参考信号向量x
l
(n)、残差信号e
l
(n)和参考信号能量e
l,x
(n)对滤波器系数进行滤波器系数自适应更新;
[0028]
通过自适应更新后的滤波器系数计算自适应更新后的残差信号e
l
(n);
[0029]
将自适应更新后的残差信号e
l
(n)作为线性自适应滤波输出结果,通过上述步骤对数据块内各点进行逐点处理,得到数据块的残差信号输出:[e
l
(n),n=0,1,2,

,n]。
[0030]
作为更进一步的解决方案,所述可变步长因子μ
l
(n)通过如下公式计算:
[0031][0032]
其中,ε为正则化因子;μ0为最大的自适应步长常数;r
dd
(n)为回声信号的自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数。
[0033]
作为更进一步的解决方案,滤波器系数自适应更新通过如下公式计算:
[0034][0035]
其中,db_flag(l-1)表示rnn双讲检测模块给出的前一帧双讲检测状态信息对应的双讲检测状态结果;far_talk_only表示仅有远端人声讲话;else表示当双讲检测结果不为far_talk_only时,停止更新滤波器;ε为正则化因子。
[0036]
作为更进一步的解决方案,所述非线性后处理通过如下步骤进行:
[0037]
通过短时傅里叶变换(stft)对数据块l的残差信号e
l
(n)和估计的回声信号进行频域处理,得到频域子带的残差信号复数谱se(l,k)、回声信号复数谱残差信号能量谱pe(l,k)与回声信号其中,k表示频域离散采样点序号,k=0,1,...,n
b-1;nb为频域子带总数;
[0038]
通过如下公式得到残差信号e
l
(n)中残留回声的能量谱p
res
(l,k):
[0039][0040]
其中,与为上一个数据块l-1最后样点n计算得到的相关函数值;
[0041]
通过增益函数g(l,k)对复数谱se(l,k)进行加权处理,得到最终输出信号复数谱so(l,k):
[0042]
so(l,k)=g(l,k)
·
se(l,k)
[0043]
其中,g(l,k)为增益函数,pe(l,k)为残差信号能量谱;
[0044]
将最终输出信号复数谱so(l,k)通过istft短时傅里叶逆变换,得到时域的aec输出信号数据块out
l
(n)。
[0045]
作为更进一步的解决方案,所述增益函数g(l,k)通过维纳滤波器,并施以最大抑制量约束得到:
[0046]
g(l,k)=max(g
wiener
(l,k),min_g(l,k))
[0047]
min_g(l,k)=linear(max_attenu(l,k))
[0048]
其中,g
wiener
(l,k)为第l数据块第k个子带对应的维纳滤波输出,max_attenu(l,k)表示第l数据块第k个子带对残留回声的最大抑制量,linear()为线性函数;
[0049]
所述最大抑制量max_attenu(l,k)根据双讲检测状态结果进行设置:
[0050]
当db_flag(l-1)==doble_talk时,最大抑制量max_attenu(l,k)为:
[0051]
max_attenu(l,k)=db(min_gain(l,k))-3
[0052][0053]
其中,db()为线性增益转换为db值的函数,ε为正则化因子,p
res
(l,k)为残留回声的能量谱,pe(l,k)为残差信号能量谱。
[0054]
当db_flag(l-1)==far_talk_only时,最大抑制量max_attenu(l,k)设置为预设值,所述预设值用于加大抑制:
[0055]
当db_flag(l-1)==near_talk_only时,不进行残留回声抑制,设定max_attenu(l,k)=0。
[0056]
作为更进一步的解决方案,所述递归神经网络rnn通过提取出mfcc特征进行学习,并使用dense层和gru层实现人声存在概率估计,最后输出人声存在概率。
[0057]
作为更进一步的解决方案,所述递归神经网络rnn中的权重系数通过训练数据进行预处理得到,所述训练数据通过如下步骤得到:提前录制好近端人声语音数据、使用远端人声单讲数据进行aec处理得到aec残留数据和环境噪声数据;将近端人声语音数据分别与aec残留数据和环境噪声数据进行混合,得到带噪语音信号;根据近端人声语音数据进行标注,得到带噪语音信号中的人声存在位置标签;将带噪语音信号和人声存在位置标签作为训练样本,并对递归神经网络rnn进行预训练,得到中的权重系数。
[0058]
作为更进一步的解决方案,所述双讲检测状态结果db_flag(l)通过延时单元z-1
进行延时输出,所述延时单元z-1
将数据进行一个单位时长进行延时,从而使线性自适应滤波处理与非线性后处理得到上一帧的双讲检测状态结果db_flag(l-1)。
[0059]
一种基于神经网络双讲检测的回声消除系统,运行在硬件设备上,所述硬件设备包括信号采集器、输入缓冲器、线性自适应滤波模块、非线性后处理模块、rnn双讲检测模块和延时模块;并通过如上任一项所述的一种基于神经网络双讲检测的回声消除方法来实现对回声信号的消除。
[0060]
与相关技术相比较,本发明提供的一种基于神经网络双讲检测的回声消除方法具有如下有益效果:
[0061]
1、本发明通过使用双讲检测结果控制线性前处理中自适应滤波器的更新与否;当检测到远端无人声信号时,停止更新自适应滤波器。防止双讲状态或是远端仅存在环境噪声时自适应滤波器由于受到扰动偏离稳定点而发散;
[0062]
2、本发明通过使用双讲检测结果控制非线性后处理中对于回声的最大抑制量,在检测到近端与远端人耳同时讲话时,结合人耳的听觉掩蔽效应估算出能够掩蔽残留回声所需的最大抑制量。在保留近端有用信号失真度小的同时,残留回声也得到有效抑制;在检测到仅有远端人耳信号单讲时,提升对残留回声信号的抑制,使得残留回声能被彻底去除干净;
[0063]
3、本发明通过神经网络技术进行远端、近端人声双讲检测,有效解决了现有的双讲检测方案鲁棒性差、检测准确率不高的问题;使用有限状态机控制远端、近端人声检测状态,提升鲁棒性。
附图说明
[0064]
图1为本发明实施例提供的一种基于神经网络双讲检测的回声消除方法的较佳流程图;
[0065]
图2为本发明实施例提供的一种基于神经网络双讲检测的回声消除方法的原理图;
[0066]
图3为本发明实施例提供的线性自适应滤波处理的较佳流程示意图;
[0067]
图4为本发明实施例提供的rnn双讲检测的较佳流程示意图;
[0068]
图5为本发明实施例提供的rnn双讲检测模型训练的较佳流程示意图;
[0069]
图6为本发明实施例提供的构建训练样本的较佳流程示意图。
具体实施方式
[0070]
下面结合附图和实施方式对本发明作进一步说明。
[0071]
如图1与图2所示,本实施例提供的一种基于神经网络双讲检测的回声消除方法,包括输入信号处理、线性自适应滤波处理、非线性后处理、rnn双讲检测和输出信号处理。
[0072]
具体的,输入信号处理:采集近端的麦克风信号和远端的参考信号,并以数字信号流形式进行传输;将麦克风信号和参考信号分别存储至输入缓冲区中,所述输入缓冲区将信号分块为若干数据块,所述数据块包括麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n);其中l=1,2,3,

表示数据块序号,n=0,1,2,

,n表示每个数据块样点序号,n是每个数据块样点总数。
[0073]
具体的,如图4所示,rnn双讲检测:通过递归神经网络rnn对麦克风信号与参考信号进行人声检测,并利用有限状态机控制给出双讲检测状态结果db_flag(l),其中,所述双讲检测状态结果db_flag(l)包括:只有远端有人声的远端单讲状态far_talk_only,只有近端有人声的近端单讲状态near_talk_only和远端近端都有人声的远近端双讲状态doble_talk;所述双讲检测状态结果db_flag(l)用于对线性自适应滤波处理和非线性后处理进行反馈调节。
[0074]
具体的,线性自适应滤波处理:接收麦克风信号数据块d
l
(n)、参考信号数据块x
l
(n)并进行逐点数据处理;数据处理通过nlms算法进行,并通过双讲检测状态结果db_flag(l)进行自适应调节,得到自适应更新后的滤波器系数通过滤波器系数计算自适应更新后的残差信号e
l
(n)。
[0075]
具体的,非线性后处理:用于进一步去残差信号e
l
(n)中线性残留回声与非线性残留回声信号;得到aec输出信号数据块out
l
(n)。
[0076]
具体的,输出信号处理:将去除回声后的aec输出信号数据块out
l
(n)存入输出缓冲区,并进行数据合并,得到连续的音频数据流进行输出。
[0077]
需要说明的是:如图1所示,本实施例所提供的一种基于神经网络双讲检测的回声消除方法,将麦克风信号与参考信号作为声学回声消除问题的输入信号,此处麦克风信号与参考信号认为是已经经过模数转换(a/d)的数字信号流。在声学回声消除问题中,常常提到的近端与远端人声信号分别对应于麦克风信号与参考信号中的人声信号。
[0078]
麦克风信号与参考信号将经过输入缓冲区得到分块待处理的输入信号数据块。两路原始音频将会被输入主处理流程输入缓冲区,输入缓冲区将连续的输入数据流分为等长
的数据块,以备后续处理。分块的麦克与参考音信号经过线性自适应滤波处理后,输出的信号为已去除线性回声的麦克风信号。非线性后处理模块用于进一步去除麦克风信号中线性残留回声与非线性残留回声信号。非线性后处理模块常用的方法有基于相关性残留回声估计法、结合非线性模型建模类似volterra滤波的方法或是神经网络的方法,这里为说明问题以相关性残留回声估计方法为例。非线性后处理模块的输出信号为已经去除了线性回声与非线性残留回声的信号。
[0079]
本实施例还使用rnn神经网络双讲检测用于提升前述线性自适应滤波模块与非线性后处理模块的稳定性进而提升回声消除系统的整体性能。rnn神经网络双讲检测输入信号为非线性后处理模块的输出信号与参考音数据块信号。rnn神经网络双讲检测模块使用两路独立的递归神经网络(recursive neural network,rnn)分别对两路输入进行人声检测获得人声检测标志(1表示检测到人声说话,0表示当前为噪声信号或未检测到人声说话)。然后基于一个状态机控制获得双讲检测结果并输出。双讲检测模块结果将被线性自适应滤波模块与非线性后处理模块用到。去除回声后的麦克信号块将进入输出缓冲区重新得到连续的音频数据流进行输出。
[0080]
作为更进一步的解决方案,如图3所示,所述线性自适应滤波处理通过如下步骤进行:
[0081]
接收麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n),初始化滤波器系数向量
[0082]
其中,表示第l号参考信号数据块第n点的参考信号向量;表示当前x
l
(n)对应的滤波器系数向量;t表示当前向量的转置,l为初始化时设定的滤波器长度,的初始化值均设置为0;
[0083]
通过上一帧第n点的滤波器系数估计当前帧第n点的回声信号
[0084][0085]
通过估计的回声信号计算当前帧第n点估计的残差信号e
l
(n):
[0086][0087]
计算参考信号能量e
l,x
(n):
[0088]el,x
(n)=x
l
(n)
t
x
l
(n)
[0089]
计算可变步长因子μ
l
(n);
[0090]
需要说明的是:可变步长因子μ
l
(n)根据线性滤波输出的残差中残留回声大小自动调整步长,用于加快滤波器收敛速度、防近端人声说话时造成滤波器的扰动。
[0091]
更新估计的回声信号与估计的残差信号e
l
(n)的自相关函数与互相关函数:
[0092][0093]
[0094]
其中,r
dd
(n)为回声信号自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数,其中,α为遗忘系数,r
dd
(n)和r
de
(n)的函数初始值设置为0;
[0095]
进行rnn双讲检测,得到双讲检测状态结果db_flag(l);
[0096]
根据双讲检测状态结果db_flag(l)、上一帧第n点的滤波器系数可变步长因子μ
l
(n)、参考信号向量x
l
(n)、残差信号e
l
(n)和参考信号能量e
l,x
(n)对滤波器系数进行滤波器系数自适应更新;
[0097]
通过自适应更新后的滤波器系数计算自适应更新后的残差信号e
l
(n);
[0098]
将自适应更新后的残差信号e
l
(n)作为线性自适应滤波输出结果,通过上述步骤对数据块内各点进行逐点处理,得到数据块的残差信号输出:[e
l
(n),n=0,1,2,

,n]。
[0099]
作为更进一步的解决方案,所述可变步长因子μ
l
(n)通过如下公式计算:
[0100][0101]
其中,ε为正则化因子(防止分母为0);μ0为最大的自适应步长常数;r
dd
(n)为回声信号的自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数。
[0102]
作为更进一步的解决方案,滤波器系数自适应更新通过如下公式计算:
[0103][0104]
其中,db_flag(l-1)表示rnn双讲检测模块给出的前一帧双讲检测状态信息对应的双讲检测状态结果;far_talk_only表示仅有远端人声讲话;else表示当双讲检测结果不为for_talk_omly时,停止更新滤波器;ε为正则化因子。
[0105]
作为更进一步的解决方案,非线性后处理基于相关性原理估算出残差中的残留回声并结合人耳听觉掩蔽效应控制双讲阶段最大残留回声抑制量,有效防止近端人声信号损伤失真。同时对于仅有远端人声单讲时,给予加大回声抑制量,彻底去除残留回声。所述非线性后处理通过如下步骤进行:
[0106]
通过短时傅里叶变换(stft)对数据块l的残差信号e
l
(n)和估计的回声信号进行频域处理,得到频域子带的残差信号复数谱se(l,k)、回声信号复数谱残差信号能量谱pe(l,k)与回声信号其中,k表示频域离散采样点序号,k=0,1,

,n
b-1;nb为频域子带总数;
[0107]
通过如下公式得到残差信号e
l
(n)中残留回声的能量谱p
res
(l,k):
[0108][0109]
其中,与为上一个数据块l-1最后样点n计算得到的相关函数值;
[0110]
通过增益函数g(l,k)对复数谱se(l,k)进行加权处理,得到最终输出信号复数谱so(l,k):
[0111]
so(l,k)=g(l,k)
·
se(l,k)
[0112]
其中,g(l,k)为增益函数,pe(l,k)为残差信号能量谱;
[0113]
将最终输出信号复数谱so(l,k)通过istft短时傅里叶逆变换,得到时域的aec输出信号数据块out
l
(n)。
[0114]
作为更进一步的解决方案,所述增益函数g(l,k)通过维纳滤波器,并施以最大抑制量约束得到:
[0115]
g(l,k)=max(g
wiener
(l,),min_g(l,k))
[0116]
min_g(l,k)=linear(max_attenu(l,k))
[0117]
其中,g
wiener
(l,k)为第l数据块第k个子带对应的维纳滤波输出,max_attenu(l,k)表示第l数据块第k个子带对残留回声的最大抑制量,linear()为线性函数;
[0118]
所述最大抑制量max_attenu(l,k)根据双讲检测状态结果进行设置:
[0119]
根据人耳听觉掩蔽特性,当两个同频率的声音同时出现时,能量较大的声音会掩蔽掉能量较小的声音,这样人耳感知的声音将是较大能量的声音。据此,当db_flag(l-1)==doble_talk时,最大抑制量max_attenu(l,k)为:
[0120]
max_attenu(l,k)=db(min_gain(l,k))-3
[0121][0122]
其中,db()为线性增益转换为db值的函数,ε为正则化因子,p
res
(l,k)为残留回声的能量谱,pe(l,k)为残差信号能量谱。
[0123]
当db_lag(l-1)==far_talk_only时,即只有远端人声单讲时,需要加大对残留回声的抑制,彻底去除残留回声,获得更好的用户体验,故需要设置更大的抑制量,最大抑制量max_attenu(l,k)设置为预设值,所述预设值用于加大抑制,这个抑制量比db_lag(l-1)==doble_talk时的抑制量还打,其具体值为经验值,是预设的。
[0124]
当db_flag(l-1)==near_talk_only时,不进行残留回声抑制,设定max_attenu(l,k)=0。
[0125]
需要说明的是:使用上述最大回声抑制db量可以有效防止对近端语音损伤,同时保留对残留回声的有效抑制功能。
[0126]
作为更进一步的解决方案,如图5所示,所述递归神经网络rnn(recursive neural network,rnn)通过提取出mfcc特征进行学习,并使用dense层和gru层实现人声存在概率估计,最后输出人声存在概率。
[0127]
作为更进一步的解决方案,如图6所示,所述递归神经网络rnn中的权重系数通过训练数据进行预处理得到,所述训练数据通过如下步骤得到:提前录制好近端人声语音数据、使用远端人声单讲数据进行aec处理得到aec残留数据和环境噪声数据;将近端人声语音数据分别与aec残留数据和环境噪声数据进行混合,得到带噪语音信号;根据近端人声语音数据进行标注,得到带噪语音信号中的人声存在位置标签;将带噪语音信号和人声存在位置标签作为训练样本,并对递归神经网络rnn进行预训练,得到中的权重系数。
[0128]
作为更进一步的解决方案,所述双讲检测状态结果db_flag(l)通过延时单元z-1
进行延时输出,所述延时单元z-1
将数据进行一个单位时长进行延时,从而使线性自适应滤波
处理与非线性后处理得到上一帧的双讲检测状态结果db_flag(l-1)。
[0129]
一种基于神经网络双讲检测的回声消除系统,运行在硬件设备上,所述硬件设备包括信号采集器、输入缓冲器、线性自适应滤波模块、非线性后处理模块、rnn双讲检测模块和延时模块;并通过如上任一项所述的一种基于神经网络双讲检测的回声消除方法来实现对回声信号的消除。
[0130]
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

技术特征:


1.一种基于神经网络双讲检测的回声消除方法,其特征在于,包括输入信号处理、线性自适应滤波处理、非线性后处理、rnn双讲检测和输出信号处理;输入信号处理:采集近端的麦克风信号和远端的参考信号,并以数字信号流形式进行传输;将麦克风信号和参考信号分别存储至输入缓冲区中,所述输入缓冲区将信号分块为若干数据块,所述数据块包括麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n);其中l=1,2,3,...表示数据块序号,n=0,1,2,...,n表示每个数据块样点序号,n是每个数据块样点总数;rnn双讲检测:通过递归神经网络rnn对麦克风信号与参考信号进行人声检测,并利用有限状态机控制给出双讲检测状态结果db_flag(l),其中,所述双讲检测状态结果db_flag(l)包括:只有远端有人声的远端单讲状态far_talk_only,只有近端有人声的近端单讲状态near_talk_only和远端近端都有人声的远近端双讲状态doble_talk;所述双讲检测状态结果db_flag(l)用于对线性自适应滤波处理和非线性后处理进行反馈调节;线性自适应滤波处理:接收麦克风信号数据块d
l
(n)、参考信号数据块x
l
(n)并进行逐点数据处理;数据处理通过nlms算法进行,并通过双讲检测状态结果db_flag(l)进行自适应调节,得到自适应更新后的滤波器系数通过滤波器系数计算自适应更新后的残差信号e
l
(n);非线性后处理:用于进一步去残差信号e
l
(n)中线性残留回声与非线性残留回声信号;得到aec输出信号数据块out
l
(n);输出信号处理:将去除回声后的aec输出信号数据块out
l
(n)存入输出缓冲区,并进行数据合并,得到连续的音频数据流进行输出。2.根据权利要求1所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述线性自适应滤波处理通过如下步骤进行:接收麦克风信号数据块d
l
(n)和参考信号数据块x
l
(n),初始化滤波器系数向量其中,表示第l号参考信号数据块第n点的参考信号向量;表示当前x
l
(n)对应的滤波器系数向量;t表示当前向量的转置,l为初始化时设定的滤波器长度,的初始化值均设置为0;通过上一帧第n点的滤波器系数估计当前帧第n点的回声信号估计当前帧第n点的回声信号通过估计的回声信号计算当前帧第n点估计的残差信号e
l
(n):计算参考信号能量e
l,x
(n):e
l,x
(n)=x
l
(n)
t
x
l
(n)计算可变步长因子μ
l
(n);更新估计的回声信号与估计的残差信号e
l
(n)的自相关函数与互相关函数:
其中,r
dd
(n)为回声信号自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数,其中,α为遗忘系数,r
dd
(n)和r
de
(n)的函数初始值设置为0;进行rnn双讲检测,得到双讲检测状态结果db_flag(l);根据双讲检测状态结果db_flag(l)、上一帧第n点的滤波器系数可变步长因子μ
l
(n)、参考信号向量x
l
(n)、残差信号e
l
(n)和参考信号能量e
l,x
(n)对滤波器系数进行滤波器系数自适应更新;通过自适应更新后的滤波器系数计算自适应更新后的残差信号e
l
(n);将自适应更新后的残差信号e
l
(n)作为线性自适应滤波输出结果,通过上述步骤对数据块内各点进行逐点处理,得到数据块的残差信号输出:[e
l
(n),n=0,1,2,...,n]。3.根据权利要求2所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述可变步长因子μ
l
(n)通过如下公式计算:其中,ε为正则化因子;μ0为最大的自适应步长常数;r
dd
(n)为回声信号的自相关函数;r
de
(n)为回声信号与残差信号e
l
(n)的互相关函数。4.根据权利要求3所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,滤波器系数自适应更新通过如下公式计算:其中,db_flag(l-1)表示rnn双讲检测模块给出的前一帧双讲检测状态信息对应的双讲检测状态结果;far_talk_only表示仅有远端人声讲话;else表示当双讲检测结果不为far_talk_only时,停止更新滤波器;ε为正则化因子。5.根据权利要求1所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述非线性后处理通过如下步骤进行:通过短时傅里叶变换(stft)对数据块l的残差信号e
l
(n)和估计的回声信号进行频域处理,得到频域子带的残差信号复数谱s
e
(l,k)、回声信号复数谱残差信号能量谱p
e
(l,k)与回声信号其中,k表示频域离散采样点序号,k=0,1,...,n
b-1;n
b
为频域子带总数;通过如下公式得到残差信号e
l
(n)中残留回声的能量谱p
res
(l,k):其中,与为上一个数据块l-1最后样点n计算得到的相关函数值;
通过增益函数g(l,k)对复数谱s
e
(l,k)进行加权处理,得到最终输出信号复数谱s
o
(l,k):s
o
(l,k)=g(l,k)
·
s
e
(l,k)其中,g(l,k)为增益函数,p
e
(l,k)为残差信号能量谱;将最终输出信号复数谱s
o
(l,k)通过istft短时傅里叶逆变换,得到时域的aec输出信号数据块out
l
(n)。6.根据权利要求5所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述增益函数g(l,k)通过维纳滤波器,并施以最大抑制量约束得到:g(l,k)=max(g
wiener
(l,k),min_g(l,k))min_g(l,k)=linear(max_attenu(l,k))其中,g
wiener
(l,k)为第l数据块第k个子带对应的维纳滤波输出,max_attenu(l,k)表示第l数据块第k个子带对残留回声的最大抑制量,linear()为线性函数函数;所述最大抑制量max_attenu(l,k)根据双讲检测状态结果进行设置:当db_flag(l-1)==doble_talk时,最大抑制量max_attenu(l,k)为:max_attenu(l,k)=db(min_gain(l,k))-3其中,db()为线性增益转换为db值的函数,ε为正则化因子,p
res
(l,k)为残留回声的能量谱,p
e
(l,k)为残差信号能量谱;当db_flag(l-1)==far_talk_only时,最大抑制量max_attenu(l,k)设置为预设值,所述预设值用于加大抑制:当db_flag(l-1)==near_talk_only时,不进行残留回声抑制,设定max_attenu(l,k)=0。7.根据权利要求1所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述递归神经网络rnn通过提取出mfcc特征进行学习,并使用dense层和gru层实现人声存在概率估计,最后输出人声存在概率。8.根据权利要求7所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述递归神经网络rnn中的权重系数通过训练数据进行预处理得到,所述训练数据通过如下步骤得到:提前录制好近端人声语音数据、使用远端人声单讲数据进行aec处理得到aec残留数据和环境噪声数据;将近端人声语音数据分别与aec残留数据和环境噪声数据进行混合,得到带噪语音信号;根据近端人声语音数据进行标注,得到带噪语音信号中的人声存在位置标签;将带噪语音信号和人声存在位置标签作为训练样本,并对递归神经网络rnn进行预训练,得到中的权重系数。9.根据权利要求1所述的一种基于神经网络双讲检测的回声消除方法,其特征在于,所述双讲检测状态结果db_flag(l)通过延时单元z-1
进行延时输出,所述延时单元z-1
将数据进行一个单位时长进行延时,从而使线性自适应滤波处理与非线性后处理得到上一帧的双讲检测状态结果db_flag(l-1)。10.一种基于神经网络双讲检测的回声消除系统,其特征在于,运行在硬件设备上,所述硬件设备包括信号采集器、输入缓冲器、线性自适应滤波模块、非线性后处理模块、rnn双讲检测模块和延时模块;并通过如权利要求1至权利要求9中任一项所述的一种基于神经网
络双讲检测的回声消除方法来实现对回声信号的消除。

技术总结


本发明提供一种基于神经网络双讲检测的回声消除方法及系统,涉及音频处理技术领域。本发明通过使用双讲检测结果控制线性前处理中自适应滤波器的更新与否;当检测到远端无人声信号时,停止更新自适应滤波器。防止双讲状态或是远端仅存在环境噪声时自适应滤波器由于受到扰动偏离稳定点而发散;通过使用双讲检测结果控制非线性后处理中对于回声的最大抑制量,在检测到近端与远端人耳同时讲话时,结合人耳的听觉掩蔽效应估算出能够掩蔽残留回声所需的最大抑制量。在保留近端有用信号失真度小的同时,残留回声也得到有效抑制;在检测到仅有远端人耳信号单讲时,提升对残留回声信号的抑制,使得残留回声能被彻底去除干净。使得残留回声能被彻底去除干净。使得残留回声能被彻底去除干净。


技术研发人员:

姜黎 龚永康 胡奎 孙江涛

受保护的技术使用者:

杭州芯声智能科技有限公司

技术研发日:

2022.07.27

技术公布日:

2022/12/8

本文发布于:2024-09-21 20:48:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/38491.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   回声   数据   滤波器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议