一、技术解读
1.1 数据处理的方式
使用3带有限脉冲响应(FIR)滤波器组和离散余弦变换(DCT)调制,将全频带(48kHz)信号分解为子带,并且只处理宽带(16kHz)信号,最终全频带信号通过平均增益控制合成。
1.1.1 信号分解与DCT调制
在信号处理的初始阶段,使用带通FIR滤波器将全频带信号分解为多个子带。具体来说,使用带通滤波器获得宽带信号 d d d和 x x x,其中 d h d_h dh 表示信号的剩余高频带(8至16kHz和16至24kHz)。这种分解方式使得模型能够专注于特定频率范围内的信号,减少计算复杂性。
接下来,对每个子带信号应用离散余弦变换(DCT),将时间域信号转换为频率域信号。DCT的计算公式为:
Y
k
=
∑
n
=
0
N
−
1
y
[
n
]
cos
[
π
N
(
n
+
1
2
)
k
]
Y_k = \sum_{n=0}^{N-1} y[n] \cos\left[\frac{\pi}{N}\left(n + \frac{1}{2}\right)k\right]
Yk=n=0∑N−1y[n]cos[Nπ(n+21)k]
其中,
Y
k
Y_k
Yk是DCT系数,
N
N
N 是信号的长度,
k
k
k 是DCT的频率索引。DCT能够有效地表示信号的能量集中性,为后续的信号处理提供了重要的频域特征。
DCT技术介绍参考:DCT 和 FFT 的对比:短时傅里叶变换与短时离散余弦变换的实现
1.1.2 数据集与信号来源
- 在实验中,使用Librispeech中的train-clean-100和train-clean-360数据集(采样率为16kHz),以及DNS-Challenge中的语音和噪声数据(采样率分别为16kHz和48kHz)。
- 回声信号则来自AEC-Challenge提供的所有合成回声信号和真实的远端单讲录音,涵盖了多种声音设备和回声信号延迟。通过与模拟房间脉冲响应(RIR)卷积生成了模拟回声数据,使用HYB方法生成了20,000个RIRs。
- 训练集包含860小时的数据,其中460小时为模拟回声,400小时为真实录制的回声,开发集和测试集分别包含30小时和15小时的数据,确保了数据集之间没有重叠。
1.1.3 信号处理参数
在信号处理过程中,设置了帧长和帧移,分别为20ms和10ms,这导致整体算法延迟为30ms。
1.2 GCC-PHAT
广义互相关与相位变换(GCC-PHAT)是一种用于时间延迟估计(TDE)的技术,广泛应用于声学回声消除和多通道信号处理。GCC-PHAT结合了互相关和相位信息,能够在噪声和回声环境中提供高精度的延迟估计。通过计算信号之间的互相关函数,GCC-PHAT能够识别信号的相似性,从而估计它们之间的时间延迟。同时,它强调相位信息而抑制幅度信息,增强了在噪声环境中对信号延迟的估计精度。这使得GCC-PHAT在AEC系统中能够准确估计回声信号的延迟,从而有效消除回声,提高语音通信的质量。
GCC-PHAT技术介绍:回声消除延时估计的一些方法,时域互相关和广义互相关(GCC-PHAT)
1.3 MDF和wRLS
在实现线性声学回声消除时,MDF(最小失真滤波器)和wRLS(加权递归最小二乘法)是两种常用的自适应滤波器。它们各自具有不同的原理和应用场景,适用于不同的信号处理需求。
其它常见自适应滤波器:深入理解 LMS 算法:自适应滤波与回声消除
1.3.1 MDF(最小失真滤波器)
MDF旨在最小化输出信号的失真,通过自适应调整滤波器的系数来估计近端语音和声学回声路径。MDF的基本思想是通过最小化误差信号的能量来优化滤波器的系数。其误差计算公式为:
e
(
n
)
=
d
(
n
)
−
w
T
(
n
−
1
)
x
(
n
)
e(n) = d(n) - \mathbf{w}^T(n-1) \mathbf{x}(n)
e(n)=d(n)−wT(n−1)x(n)
其中:
- e ( n ) e(n) e(n)是当前时刻的误差信号。
- d ( n ) d(n) d(n) 是期望信号(目标信号)。
- w ( n − 1 ) \mathbf{w}(n-1) w(n−1) 是在时刻 n − 1 n-1 n−1 的滤波器系数向量。
- x ( n ) \mathbf{x}(n) x(n) 是当前时刻的输入信号向量。
MDF的目标是最小化以下代价函数:
J
(
w
)
=
E
{
e
2
(
n
)
}
J(\mathbf{w}) = E\{e^2(n)\}
J(w)=E{e2(n)}
通过最小化该代价函数,可以得到滤波器系数的更新公式:
w
(
n
)
=
w
(
n
−
1
)
+
μ
⋅
e
(
n
)
⋅
x
(
n
)
\mathbf{w}(n) = \mathbf{w}(n-1) + \mu \cdot e(n) \cdot \mathbf{x}(n)
w(n)=w(n−1)+μ⋅e(n)⋅x(n)
其中,
μ
\mu
μ是步长因子,控制更新的速度。尽管MDF在处理线性回声方面表现良好,但在噪声干扰较大的情况下可能效果不佳,因为它对噪声的敏感性较高。
1.3.2 wRLS(加权递归最小二乘法)
wRLS是一种能够快速适应信号变化的自适应滤波器。与传统的RLS算法相比,wRLS通过引入权重来提高对不同信号成分的适应性,尤其在动态环境中表现出色。wRLS的基本原理是通过最小化加权平方误差来更新滤波器的系数。
首先,计算当前时刻的误差
e
(
n
)
e(n)
e(n):
e
(
n
)
=
d
(
n
)
−
w
T
(
n
−
1
)
x
(
n
)
e(n) = d(n) - \mathbf{w}^T(n-1) \mathbf{x}(n)
e(n)=d(n)−wT(n−1)x(n)
接下来,计算权重因子
w
(
n
)
w(n)
w(n),通常是根据输入信号的特性动态调整的:
w
(
n
)
=
1
σ
2
+
ϵ
(
n
)
w(n) = \frac{1}{\sigma^2 + \epsilon(n)}
w(n)=σ2+ϵ(n)1
其中,
σ
2
\sigma^2
σ2 是信号的方差,
ϵ
(
n
)
\epsilon(n)
ϵ(n)是与输入信号相关的某种度量(如噪声或干扰)。
然后,计算增益向量
k
(
n
)
\mathbf{k}(n)
k(n):
k
(
n
)
=
P
(
n
−
1
)
x
(
n
)
w
(
n
)
+
x
T
(
n
)
P
(
n
−
1
)
x
(
n
)
\mathbf{k}(n) = \frac{\mathbf{P}(n-1) \mathbf{x}(n)}{w(n) + \mathbf{x}^T(n) \mathbf{P}(n-1) \mathbf{x}(n)}
k(n)=w(n)+xT(n)P(n−1)x(n)P(n−1)x(n)
其中,
P
(
n
−
1
)
\mathbf{P}(n-1)
P(n−1)是在时刻
n
−
1
n-1
n−1的协方差矩阵。
协方差矩阵的更新公式为:
P
(
n
)
=
1
w
(
n
)
(
P
(
n
−
1
)
−
k
(
n
)
x
T
(
n
)
P
(
n
−
1
)
)
\mathbf{P}(n) = \frac{1}{w(n)} \left( \mathbf{P}(n-1) - \mathbf{k}(n) \mathbf{x}^T(n) \mathbf{P}(n-1) \right)
P(n)=w(n)1(P(n−1)−k(n)xT(n)P(n−1))
最后,更新滤波器系数
w
(
n
)
\mathbf{w}(n)
w(n):
w
(
n
)
=
w
(
n
−
1
)
+
k
(
n
)
e
(
n
)
\mathbf{w}(n) = \mathbf{w}(n-1) + \mathbf{k}(n) e(n)
w(n)=w(n−1)+k(n)e(n)
1.4 输入数据处理
1.4.1 输入特征的构成
输入特征 w ∈ R 3 × n w \in \mathbb{R}^{3 \times n} w∈R3×n 包含三个信号的堆叠:
- d ( n ) d(n) d(n):麦克风捕获的信号(观测信号),包含近端语音、声学回声和背景噪声。
- e ( n ) e(n) e(n):误差信号,通过自适应滤波器生成,表示期望信号与实际输出之间的差异。
- y ( n ) y(n) y(n):线性回声的估计,基于远端信号和麦克风信号生成。
1.4.2 短时傅里叶变换(STFT)
对输入特征 w w w进行短时傅里叶变换(STFT),将时域信号转换为频域表示。STFT 通过将信号分成短时间帧并对每一帧进行傅里叶变换来实现。经过 STFT 处理后,得到复数谱 W = W r + j W i W = W_r + jW_i W=Wr+jWi,其中:
- W r W_r Wr 是实部。
- W i W_i Wi 是虚部。
- 变换后的张量 W W W的维度为 W ∈ R 6 × T × F W \in \mathbb{R}^{6 \times T \times F} W∈R6×T×F,其中:
- 6 6 6 是信号的总通道数(每个信号的实部和虚部)。
- T T T是帧数(时间维度)。
- F F F 是频率箱(频率维度)。
1.4.3 数据压缩与解压缩
在处理过程中,使用某种方法对
w
w
w进行压缩,具体方法可能参考文献 [14] 中的内容。数据压缩通常是为了减少数据的维度或存储需求,以便于后续处理。
在 GFTNN 后处理滤波器的最后一层之后,对压缩后的数据进行解压缩,以恢复到适合后续处理的形状。这一过程确保了模型能够有效利用所有可用的信息进行信号处理。
1.4.4 GFTNN 编码器
GFTNN 编码器由 4 个 GConv 层组成,每个卷积层的输入和输出通道相同,除了第一个 GConv 层需要根据输入信号的通道数进行选择(在给定示例中为 6)。使用
1
×
1
1 \times 1
1×1卷积层连接浅层和深层特征表示,以增强特征的表达能力。
编码器的输出张量维度为
R
C
×
T
×
F
R^{C \times T \times F}
RC×T×F,其中
C
C
C 表示通道维度,
T
T
T 表示帧数,
F
F
F 表示频率箱。这种结构使得模型能够有效地提取和重建信号特征,为后续的解码和信号恢复奠定了基础。
1.4.5 实部/虚部解码器
实部/虚部解码器由 4 个 TrGConv 层组成,每个转置卷积层的输入和输出通道相同,除了最后一个 TrGConv 层的输出通道需要为 1,用于估计干净近端谱的实部和虚部。
通过这种输入数据处理流程,模型能够有效地从混合信号中提取清晰的近端语音信号,并在复杂的声学环境中实现高效的回声消除和语音增强。
1.5 损失函数的理解与应用
在基于 GFTNN 的后处理滤波器中,损失函数的设计对于模型的性能至关重要。我们的损失函数结合了功率律压缩相位感知(PLCPA)损失、语音活动检测(VAD)信息以及回声加权系数,以实现更好的语音增强和回声抑制效果。本节将详细介绍损失函数的组成部分及其意义,并通过一个示例来帮助理解。
1.5.1 PLCPA 损失
PLCPA 损失主要由幅度损失 L m a g L_{mag} Lmag和相位损失 L p h a L_{pha} Lpha 组成,定义如下:
幅度损失
L m a g ( t , f ) = ∣ ∣ S ( t , f ) ∣ p − ∣ S ^ ( t , f ) ∣ p ∣ 2 L_{mag}(t, f) = \left| |S(t, f)|^p - |\hat{S}(t, f)|^p \right|^2 Lmag(t,f)= ∣S(t,f)∣p−∣S^(t,f)∣p 2
- 解释:该损失度量了真实信号 (S(t, f)) 和估计信号 (\hat{S}(t, f)) 的幅度之间的差异。通过引入幂次 (p),可以增强对幅度差异的敏感性。
相位损失
L p h a ( t , f ) = ∣ ∣ S ( t , f ) ∣ p e j ϕ ( S ( t , f ) ) − ∣ S ^ ( t , f ) ∣ p e j ϕ ( S ^ ( t , f ) ) ∣ 2 L_{pha}(t, f) = \left| |S(t, f)|^p e^{j\phi(S(t,f))} - |\hat{S}(t, f)|^p e^{j\phi(\hat{S}(t,f))} \right|^2 Lpha(t,f)= ∣S(t,f)∣pejϕ(S(t,f))−∣S^(t,f)∣pejϕ(S^(t,f)) 2
- 解释:该损失度量了真实信号和估计信号在相位上的差异。相位信息对于语音信号的感知质量至关重要,因此相位损失的引入有助于提高语音的自然性。
1.5.2 VAD 损失
VAD 损失 (L_{vad}) 定义为:
L
v
a
d
=
CrossEntropy
(
P
,
P
ˉ
)
L_{vad} = \text{CrossEntropy}(P, \bar{P})
Lvad=CrossEntropy(P,Pˉ)
- 解释:其中 P ˉ ∈ R T × 1 \bar{P} \in \mathbb{R}^{T \times 1} Pˉ∈RT×1 是基于短时能量阈值的近端语音活动标签, P ∈ R T × 2 P \in \mathbb{R}^{T \times 2} P∈RT×2是 VAD 模块的估计状态。交叉熵损失用于评估 VAD 模块的性能,确保模型能够准确检测语音活动。
1.5.3 回声加权系数
为了根据回声的强度调整损失,我们引入回声加权系数
W
e
c
h
o
(
t
,
f
)
W_{echo}(t, f)
Wecho(t,f):
W
e
c
h
o
(
t
,
f
)
=
∣
Z
(
t
,
f
)
∣
2
∣
Z
(
t
,
f
)
∣
2
+
∣
S
(
t
,
f
)
∣
2
W_{echo}(t, f) = \frac{|Z(t, f)|^2}{|Z(t, f)|^2 + |S(t, f)|^2}
Wecho(t,f)=∣Z(t,f)∣2+∣S(t,f)∣2∣Z(t,f)∣2
- 解释:该系数根据回声信号 (Z(t, f)) 和近端语音信号 (S(t, f)) 的功率比来调整不同频率箱的损失权重。当某个 TF-bin 的回声分量较大时,该 TF-bin 的均方误差(MSE)权重也会变大,从而增强对回声的抑制。
加权幅度损失
结合幅度损失和相位损失,我们得到加权幅度损失 (L_{echo}):
L
e
c
h
o
=
1
T
∑
t
1
F
(
∑
f
L
m
a
g
(
t
,
f
)
(
1
+
W
e
c
h
o
(
t
,
f
)
)
+
L
p
h
a
(
t
,
f
)
)
L_{echo} = \frac{1}{T} \sum_{t} \frac{1}{F} \left( \sum_{f} L_{mag}(t, f)(1 + W_{echo}(t, f)) + L_{pha}(t, f) \right)
Lecho=T1t∑F1
f∑Lmag(t,f)(1+Wecho(t,f))+Lpha(t,f)
- 解释:通过加权幅度损失,模型能够在回声较强的情况下,自动调整损失的权重,从而更有效地抑制回声。
1.5.4 VAD 信息的利用
为了进一步提高回声抑制量并确保感知质量,我们利用 VAD 信息如下:
W
v
a
d
(
t
)
=
G
S
(
P
t
)
⋅
W
f
i
x
W_{vad}(t) = GS(P_t) \cdot W_{fix}
Wvad(t)=GS(Pt)⋅Wfix
L
m
a
s
k
=
1
T
∑
t
1
F
∣
∣
S
(
t
,
f
)
∣
p
−
∣
S
^
(
t
,
f
)
∣
p
⋅
W
v
a
d
(
t
)
∣
2
L_{mask} = \frac{1}{T} \sum_{t} \frac{1}{F} \left| |S(t, f)|^p - |\hat{S}(t, f)|^p \cdot W_{vad}(t) \right|^2
Lmask=T1t∑F1
∣S(t,f)∣p−∣S^(t,f)∣p⋅Wvad(t)
2
- 解释:这里, G S GS GS是 Gumbel SoftMax,用于生成连续可微的近似。固定权重 W f i x = [ 0 , 1 ] 1 × 2 W_{fix} = [0, 1]^{1 \times 2} Wfix=[0,1]1×2 和 W v a d ∈ R T × 1 W_{vad} \in \mathbb{R}^{T \times 1} Wvad∈RT×1用于调整损失。 L m a s k L_{mask} Lmask 可以惩罚某些帧的 VAD 错误判断,从而减少近端过度抑制。
1.5.5 最终损失函数
最终在提交的系统中使用的损失函数为:
L
f
i
n
a
l
=
L
e
c
h
o
+
0.2
⋅
L
m
a
s
k
+
0.1
⋅
L
v
a
d
L_{final} = L_{echo} + 0.2 \cdot L_{mask} + 0.1 \cdot L_{vad}
Lfinal=Lecho+0.2⋅Lmask+0.1⋅Lvad
- 解释:通过组合不同的损失项,模型能够综合考虑幅度、相位、VAD 信息和回声抑制,从而实现更好的语音增强效果。
1.6 对去回声模型(AEC)的有益结论
在声学回声消除(AEC)系统的研究与应用中,多个实验结果和观察为我们提供了重要的见解。以下是对去回声模型(AEC)的有益结论的梳理,这些结论将有助于指导未来的研究和模型设计。
-
使用自适应滤波器(线性AEC)是有益的。
- 原因:自适应滤波器能够有效处理回声和噪声,提供稳定的基线性能。与直接使用神经网络进行AEC相比,自适应滤波器在复杂声学环境中表现更佳。
-
用 L e c h o L_{echo} Lecho 替换 L p l c p a L_{plcpa} Lplcpa 提升了 PESQ 和 ERLE。
- 原因:通过回声加权的均方误差(MSE)损失函数能够更好地适应回声的特性,从而提高语音的感知质量和回声抑制效果。这种损失函数的设计使得模型在处理回声时更加有效。
-
使用组合输入 DEY 优于其他组合(如 DX 和 EX)。
- 原因:DEY 组合包含了更多相关信息 d ( n ) d(n) d(n)、 e ( n ) e(n) e(n) 和 y ( n ) y(n) y(n),使得神经网络能够更有效地学习到信号之间的关系,减少不相关输入组合对性能的影响。
-
在 ST-NE 场景中,参考信号 x ( n ) x(n) x(n) 与麦克风信号 d ( n ) d(n) d(n) 可能完全不相关。
- 原因:当输入信号包含不相关的信息时,神经网络很难找到一致的规则来处理这些输入,导致性能下降。因此,选择相关的输入组合是关键。
-
使用 GFTNN 后处理滤波器中的 TDE 模块可以提高语音的感知质量。
- 原因:TDE 模块能够有效地检测和补偿信号中的时间延迟,从而减少回声对语音信号的干扰,提升语音的清晰度和可懂度。
-
wRLS 相比 MDF 在两级框架中的线性 AEC 算法表现更好。
- 原因:wRLS(加权递归最小二乘法)具有更好的收敛性,能够更快地适应信号变化,从而提高回声消除的效果。
-
较大的模型 GFTNN-VAD-L 通常表现更优越。
- 原因:更复杂的模型能够捕捉更多的特征和模式,从而在处理复杂信号时表现出更好的性能。
-
VAD 模块未必导致 PESQ 的提升,但能有效区分语音帧和非语音帧。
- 原因:VAD 模块的引入可以防止对非语音帧的过度抑制,从而在情感剪辑等场景中保持更好的感知质量。
-
当 x ( n ) x(n) x(n)与 d ( n ) d(n) d(n) 不相关时,复值神经网络会造成失真。
- 原因:复值结构在处理不相关信号时可能引入额外的复杂性和失真,因此在这种情况下,使用实值结构更为有效。
二、全文翻译:基于回声感知损失的多任务深度残差回声抑制
2.0 摘要
本文介绍了西北工业大学音频、语音和语言处理小组(ASLP@NPU)参加2022年ICASSP回声消除挑战赛(AEC Challenge)的参赛作品。
我们采用了一种混合方法,将线性回声消除(AEC)与神经网络后处理滤波器级联。前者用于处理线性回声分量,而后者用于抑制剩余的非线性回声分量。我们使用门控卷积F-T-LSTM神经网络(GFTNN)作为骨干网络,并通过多任务学习(MTL)框架塑造后处理滤波器,其中采用了语音活动检测(VAD)模块作为辅助任务,与回声抑制一起进行,目的是避免过度抑制导致语音失真。
此外,我们采用了一种基于回声的损失函数,其中均方误差(MSE)损失可以根据信号与回声比(SER)针对每个时频二元(TF-bin)进行优化,从而进一步抑制回声。广泛的消融研究表明,神经网络后处理滤波器中的时延估计(TDE)模块可以带来更好的感知质量,并且具有更好收敛性的自适应滤波器将为后处理滤波器带来一致的性能提升。
此外,我们发现使用线性回声作为我们神经网络后处理滤波器的输入比直接使用参考信号更好。在2022年ICASSP AEC挑战赛中,我们的方法在词准确率(WAcc)上排名第一(0.817),在平均主观评分(MOS)和最终得分上排名第三(分别为4.502和0.864)。
关键字: 声学回声消除、噪声抑制、多任务学习
2.1 引言
当麦克风和扬声器在实时通信(RTC)系统中耦合时,麦克风会拾取到期望的近端语音信号加上不想要的扬声器信号,从而产生烦人的声学回声。声学回声已成为RTC中语音质量评价差的主要来源之一。作为RTC中不可或缺的模块,声学回声消除(AEC)旨在从近端麦克风信号中移除这种不愉快的声学回声,同时最小化近端说话者语音的失真。更具挑战性的是,一个完整的AEC系统可能还需要考虑噪声抑制,因为在实际声学环境中噪声是不可避免的。此外,AEC对于下游任务如语音识别也是必不可少的。
基于数字信号处理(DSP)的线性回声消除已经在RTC中使用很长时间,它通过自适应滤波器估计近端语音或声学回声路径。这些算法通常给出近端语音的估计值和通过取消获得的线性回声的估计值。后处理算法通常用于进一步移除线性AEC算法无法完全移除的残余回声。然而,这些方法在存在噪声干扰的情况下,特别是在回声抑制方面仍然不够有效。
最近深度学习在AEC方面的进步显示了巨大潜力,这归功于深度神经网络(DNN)强大的非线性建模能力。一些神经AEC方法尝试直接使用神经网络而不使用任何传统的DSP模块。具体来说,Zhang和Wang将AEC表述为一个监督的语音分离问题,其中采用了双向长短期记忆(LSTM)网络来预测麦克风信号的幅度掩模。Westhausen等人通过采用远端信号作为额外信息扩展了双信号变换LSTM网络(DTLN)。Zhang等人将原本为语音增强而设计的具有优越性能的深度复卷积递归网络(DCCRN)与频时LSTM(F-T-LSTM)网络结合起来,以更好地学习频带之间的关系,有效抑制回声。相比之下,其他方法有效地结合了DSP和神经网络,不损失传统信号处理处理混合信号的线性分量的优势。作为一个典型方法,Wang等人将基于自适应滤波器的线性回声消除器与基于深度前馈顺序记忆网络(DFSMN)的后处理滤波器级联。Peng等人采用多个滤波器同时进行线性回声消除和时延估计(TDE),进一步与门控复卷积递归神经网络(GCCRN)后处理滤波器级联。这两种方法在最近的AEC挑战赛系列中显示出优越的性能。
最近,随着实时通信和在线协作的爆炸性增长,超宽带和全频带语音信号的处理变得越来越流行。然而,对语音信号的更多频带特别是高频分量的建模更具挑战性。最新的2022年ICASSP AEC挑战赛特别关注全频带语音的AEC。更具挑战性的是,下游语音识别的性能也被视为挑战指标。换句话说,AEC性能是通过人类和机器听觉感知来衡量的,即人类的主观听力评分和机器语音识别准确率。
在本文中,我们介绍了我们西北工业大学团队参加2022年ICASSP AEC挑战赛的作品。我们提交了一种结合线性AEC和神经网络后处理滤波器的混合方法。具体来说,受我们最近工作的启发,我们提出了一个门控卷积F-T-LSTM神经网络(GFTNN)作为后处理滤波器。更重要的是,我们通过多任务学习(MTL)框架塑造我们的神经网络后处理滤波器,其中采用了语音活动检测(VAD)模块作为辅助任务,与回声抑制一起进行。MTL框架旨在避免过度抑制并有利于语音识别准确率。
此外,我们采用了一种基于回声的损失函数,其中均方误差(MSE)损失可以根据信号与回声比(SER)针对每个时频二元(TF-bin)进行优化,从而进一步抑制回声。通过广泛的消融研究,我们还发现TDE模块可以带来更好的感知质量,并且具有更好收敛性的自适应滤波器将为后处理滤波器带来一致的性能提升。此外,使用线性回声作为我们神经网络后处理滤波器的输入比直接使用参考信号更好。根据挑战赛的官方结果,我们的方法在词准确率(WAcc)上排名第一(0.817),在平均主观评分(MOS)和最终得分上排名第三(分别为4.502和0.864)。
2.2 提出的方法
2.2.1 问题表述
我们在图1中展示了所提出的AEC算法的主要架构。麦克风信号
d
(
n
)
d(n)
d(n)由近端语音
s
(
n
)
s(n)
s(n)、声学回声
z
(
n
)
z(n)
z(n)和背景噪声
v
(
n
)
v(n)
v(n)组成:
d
(
n
)
=
s
(
n
)
+
z
(
n
)
+
v
(
n
)
d(n) = s(n) + z(n) + v(n) \quad
d(n)=s(n)+z(n)+v(n)
其中
n
n
n指的是时间样本索引。这里的
z
(
n
)
z(n)
z(n)是通过远端信号
x
(
n
)
x(n)
x(n)与回声路径卷积得到的,由扬声器引起的潜在非线性失真。AEC任务旨在在已知
x
(
n
)
x(n)
x(n)的前提下,从
d
(
n
)
d(n)
d(n)中分离出
s
(
n
)
s(n)
s(n)。误差信号
e
(
n
)
e(n)
e(n)和线性回声
y
(
n
)
y(n)
y(n)是使用
x
(
n
)
x(n)
x(n)和
d
(
n
)
d(n)
d(n)通过自适应滤波器生成的。
D
,
E
,
X
D, E, X
D,E,X和
Y
Y
Y分别是
d
,
e
,
x
d, e, x
d,e,x和
y
y
y的频域表示。注意图1中的虚线是根据不同配置可选的,将在第3节中进行比较。具体来说,附加在后处理滤波器上的VAD模块被用作辅助任务。
2.2.2 分割与合成
为了将我们的模型限制在合理的大小和复杂性内,我们在这里使用3带有限脉冲响应(FIR)滤波器组和离散余弦变换(DCT)调制将全频带(48kHz)信号分解为子带,并且只处理宽带(16kHz)信号,最终全频带信号通过平均增益控制合成。
如图2(a)所示,对于全频带信号
d
f
u
l
l
d_{full}
dfull和
x
f
u
l
l
x_{full}
xfull,我们使用带通滤波器获得宽带信号
d
d
d和
x
x
x,其中
d
h
d_h
dh表示信号(8至16kHz和16至24kHz)的剩余高频带。每帧的平均增益
g
(
t
)
g(t)
g(t)计算如下:
g
(
t
)
=
min
(
∑
b
a
S
^
(
t
,
f
)
∑
b
a
D
(
t
,
f
)
,
∑
d
c
S
^
(
t
,
f
)
∑
d
c
D
(
t
,
f
)
)
g(t) = \min\left(\frac{\sum_{b}^{a} \hat{S}(t, f)}{\sum_{b}^{a}D(t, f)}, \frac{\sum_{d}^{c} \hat{S}(t, f)}{\sum_{d}^{c} D(t, f)}\right) \quad
g(t)=min(∑baD(t,f)∑baS^(t,f),∑dcD(t,f)∑dcS^(t,f))
其中
t
t
t是帧索引,
f
f
f表示频率箱索引,
{
a
=
11
,
b
=
81
}
\{a = 11, b = 81\}
{a=11,b=81}和
{
c
=
121
,
d
=
161
}
\{c = 121, d = 161\}
{c=121,d=161}覆盖了0.5至4kHz和6至8kHz的频率范围。
在图1中的AEC系统流程中,我们使用广义互相关与相位变换(GCC-PHAT)实现TDE模块,并使用MDF和wRLS实现线性AEC。具体来说,我们对不同的自适应滤波器进行了比较,稍后在第3节中详细解释。子带合成的过程如下:
S
^
f
u
l
l
(
t
,
f
)
=
S
Y
N
(
S
^
(
t
,
f
)
,
g
(
t
)
⋅
D
h
(
t
,
f
)
)
\hat{S}_{full}(t, f) = SYN \left( \hat{S}(t, f), g(t) \cdot Dh(t, f) \right) \quad
S^full(t,f)=SYN(S^(t,f),g(t)⋅Dh(t,f))
其中
S
^
,
S
^
f
u
l
l
\hat{S}, \hat{S}_{full}
S^,S^full和
D
h
D_h
Dh分别是
s
^
,
s
^
f
u
l
l
\hat{s}, \hat{s}_{full}
s^,s^full和
d
h
d_h
dh的频域表示。SYN代表RTC场景中常用的子带合成方法。
2.2.3 GFTNN后处理滤波器
图2(b)、(c)、(d)和(e)展示了所提出的基于GFTNN的后处理滤波器的四个子模块,分别为GConv、TrGConv、VAD和FTLSTM。
∗
r
*_r
∗r/
∗
i
*_i
∗i表示频域中某个信号的实部/虚部。输入特征的虚线框表示某个信号可能不被使用。在本文中,我们探索了三种类型的组合,即DX、EX和DEY。
以DEY为例,输入特征
w
∈
R
3
×
n
w \in \mathbb{R}^{3 \times n}
w∈R3×n,其中3表示三个信号——
d
(
n
)
d(n)
d(n)、
e
(
n
)
e(n)
e(n)堆叠与
y
(
n
)
y(n)
y(n)。对输入特征
w
w
w进行短时傅里叶变换(STFT),我们得到复数谱
W
=
W
r
+
j
W
i
W = W_r + jW_i
W=Wr+jWi,其中
W
∈
R
6
×
T
×
F
W \in \mathbb{R}^{6 \times T \times F}
W∈R6×T×F。
T
T
T表示帧数,
F
F
F表示频率箱。我们使用[14]中的方法压缩
w
w
w并在GFTNN后处理滤波器的最后一层之后对其进行解压缩。
GFTNN编码器由4个GConv层组成,每个Conv2d层的输入和输出通道相同,除了第一个GConv层需要根据输入信号(在给定示例中为6)进行选择。1×1卷积层用于连接浅层和深层特征表示,这被证明是有益的。FTLSTM层(FTLSTMs)定义在[9]中。编码器和FTLSTMs的输出张量维度为
R
C
×
T
×
F
R^{C \times T \times F}
RC×T×F,其中
C
C
C表示通道维度。
实部/虚部解码器由4个TrGConv层组成,每个Transpose-Conv2d层的输入和输出通道相同,除了最后一个TrGConv层的输出通道需要为1,用于估计干净近端谱的实部/虚部。
⊕
\oplus
⊕表示conv1×1输出与前一个TrGConv层输出的连接。
受[21]的启发,我们使用由LSTM实现的norm层作为我们的VAD模块。但与[21]不同,我们的结构在通道轴上递归,导致了一个因果VAD模块。VAD模块的具体细节可以在图2(d)和表1中找到,其中
⊗
\otimes
⊗表示张量
G
∈
R
T
×
1
×
4
×
C
G \in \mathbb{R}^{T \times 1 \times 4 \times C}
G∈RT×1×4×C和张量
H
∈
R
T
×
4
×
4
×
C
H \in \mathbb{R}^{T \times 4 \times 4 \times C}
H∈RT×4×4×C的逐点乘积。F-LSTM遵循我们之前工作中定义的细节。
2.2.4 损失函数
我们的损失函数基于功率律压缩相位感知(PLCPA)损失和VAD信息。如[22]所述,PLCPA对自动语音识别(ASR)准确率和感知质量都有益。它主要由两部分组成——幅度损失
L
m
a
g
L_{mag}
Lmag和相位损失
L
p
h
a
L_{pha}
Lpha,定义如下:
L
m
a
g
(
t
,
f
)
=
∣
∣
S
(
t
,
f
)
∣
p
−
∣
S
^
(
t
,
f
)
∣
p
∣
2
L_{mag}(t, f) = \left| |S(t, f)|^p - |\hat{S}(t, f)|^p \right|^2
Lmag(t,f)=
∣S(t,f)∣p−∣S^(t,f)∣p
2
L
p
h
a
(
t
,
f
)
=
∣
∣
S
(
t
,
f
)
∣
p
e
j
ϕ
(
S
(
t
,
f
)
)
−
∣
S
^
(
t
,
f
)
∣
p
e
j
ϕ
(
S
^
(
t
,
f
)
)
∣
2
L_{pha}(t, f) = \left| |S(t, f)|^p e^{j\phi(S(t,f))} - |\hat{S}(t, f)|^p e^{j\phi(\hat{S}(t,f))} \right|^2 \quad
Lpha(t,f)=
∣S(t,f)∣pejϕ(S(t,f))−∣S^(t,f)∣pejϕ(S^(t,f))
2
VAD损失
L
v
a
d
L_{vad}
Lvad定义为
L
v
a
d
=
CrossEntropy
(
P
,
P
ˉ
)
L_{vad} = \text{CrossEntropy}(P, \bar{P}) \quad
Lvad=CrossEntropy(P,Pˉ)
其中
P
ˉ
∈
R
T
×
1
\bar{P} \in \mathbb{R}^{T \times 1}
Pˉ∈RT×1是基于短时能量阈值的近端语音活动标签,
P
∈
R
T
×
2
P \in \mathbb{R}^{T \times 2}
P∈RT×2是VAD模块的估计状态。基于回声的损失:先前的研究[23]表明,使用多个损失,如SI-SNR和MSE,通过超参数调整每个损失的权重是有益的。在我们的方法中,我们使用回声功率的比例调整不同TF-bins的权重。因此,我们得到了定义为
W
e
c
h
o
(
t
,
f
)
=
∣
Z
(
t
,
f
)
∣
2
∣
Z
(
t
,
f
)
∣
2
+
∣
S
(
t
,
f
)
∣
2
W_{echo}(t, f) = \frac{|Z(t, f)|^2}{|Z(t, f)|^2 + |S(t, f)|^2} \quad
Wecho(t,f)=∣Z(t,f)∣2+∣S(t,f)∣2∣Z(t,f)∣2
的回声加权系数。加权幅度损失
L
m
a
g
L_{mag}
Lmag,我们得到
L
e
c
h
o
=
1
T
∑
t
1
F
(
∑
f
L
m
a
g
(
t
,
f
)
(
1
+
W
e
c
h
o
(
t
,
f
)
)
+
L
p
h
a
(
t
,
f
)
)
L_{echo} = \frac{1}{T} \sum_{t} \frac{1}{F} \left( \sum_{f} L_{mag}(t, f)(1 + W_{echo}(t, f)) + L_{pha}(t, f) \right) \quad
Lecho=T1t∑F1
f∑Lmag(t,f)(1+Wecho(t,f))+Lpha(t,f)
当某个TF-bin的回声分量较大时,这个TF-bin的MSE权重也会变大,无需手动调整。SER越低,越有可能抑制回声;SER越高,回声的权重就越小。为了进一步提高回声抑制量并确保感知质量,我们利用VAD信息如下。
W
v
a
d
(
t
)
=
G
S
(
P
t
)
⋅
W
f
i
x
W_{vad}(t) = GS(P_t) \cdot W_{fix}
Wvad(t)=GS(Pt)⋅Wfix
L
m
a
s
k
=
1
T
∑
t
1
F
∣
∣
S
(
t
,
f
)
∣
p
−
∣
S
^
(
t
,
f
)
∣
p
⋅
W
v
a
d
(
t
)
∣
2
L_{mask} = \frac{1}{T} \sum_{t} \frac{1}{F} \left| |S(t, f)|^p - |\hat{S}(t, f)|^p \cdot W_{vad}(t) \right|^2\quad
Lmask=T1t∑F1
∣S(t,f)∣p−∣S^(t,f)∣p⋅Wvad(t)
2
我们使用GS(Gumbel SoftMax)作为arg max的连续可微近似。固定权重
W
f
i
x
=
[
0
,
1
]
1
×
2
W_{fix} = [0, 1]^{1 \times 2}
Wfix=[0,1]1×2和
W
v
a
d
∈
R
T
×
1
W_{vad} \in \mathbb{R}^{T \times 1}
Wvad∈RT×1。
L
m
a
s
k
L_{mask}
Lmask可以惩罚某些帧的VAD错误判断,从而减少近端过度抑制。我们最终在提交的系统中使用的损失函数是
L
f
i
n
a
l
=
L
e
c
h
o
+
0.2
⋅
L
m
a
s
k
+
0.1
⋅
L
v
a
d
L_{final} = L_{echo} + 0.2 \cdot L_{mask} + 0.1 \cdot L_{vad} \quad
Lfinal=Lecho+0.2⋅Lmask+0.1⋅Lvad
2.3 实验
2.3.1 数据集
在我们的实验中,我们使用了Librispeech中的train-clean-100和train-clean-360,采样率为16kHz,以及DNS-Challenge中的语音数据,采样率分别为16kHz和48kHz,作为近端信号和参考信号。对于噪声信号,我们使用了DNS-Challenge中的噪声数据,采样率分别为16kHz和48kHz。对于回声信号,我们使用了AEC-Challenge提供的所有合成回声信号和真实的远端单讲录音,涵盖了各种声音设备和回声信号延迟。此外,我们还使用Librispeech和DNS数据集通过与模拟房间脉冲响应(RIR)卷积来模拟回声数据。我们使用[27]中描述的HYB方法而不是图像方法来生成20,000个RIRs。数据生成方案和RIRs的具体配置,如房间大小,描述在[9]中。
训练集总共有860小时的数据,其中460小时的数据带有模拟回声,400小时的数据带有真实录制的回声。开发集和测试集与训练集的生成方法相同,分别包含30小时和15小时的数据。这些数据集之间的源数据没有重叠。
2.3.2 性能指标
回声抑制性能通过回声返回损耗增强(ERLE)(定义在方程(10)中)和宽带感知语音质量评估(WB-PESQ)[28]来评估单讲(ST)期间和双讲(DT)期间。AECChallenge还提供了基于ITU-T建议P.831、P.832和P.808[29]的平均主观评分(MOS)结果。官方排名基于反映MOS和语音识别WAcc的得分。
E R L E = 10 log 10 ( ∑ n d f u l l 2 ( n ) ∑ n s ^ f u l l 2 ( n ) ) ERLE = 10 \log_{10} \left( \frac{\sum_{n} d^2_{full}(n)}{\sum_{n} \hat{s}^2_{full}(n)} \right) \quad ERLE=10log10(∑ns^full2(n)∑ndfull2(n))
2.3.3 实验设置
窗口长度和跳跃大小分别为20ms和10ms,导致整体算法延迟为30ms。我们对每个信号应用320点STFT以产生复数谱。我们生成的数据块大小设置为10s。超参数 p p p设置为0.5用于 L m a g L_{mag} Lmag和 L p h a L_{pha} Lpha。我们在表2中比较了具有不同配置的不同模型。这里 L c m s e L_{cmse} Lcmse指的是[14]中使用的损失函数, L p l c p a = L m a g + L p h a L_{plcpa} = L_{mag} + L_{pha} Lplcpa=Lmag+Lpha。DX意味着我们直接将麦克风信号和近端语音信号输入网络,而不使用任何基于DSP的线性AEC。*-M/W意味着分别使用MDF/wRLS作为自适应滤波器。所有神经模型都使用Adam优化器[30]进行训练,训练60个周期,初始学习率为1e-4,如果在开发集上2个周期内没有损失下降,则学习率减半。卷积核以(1, 2)的步幅移动。编码器/解码器中每层的输出通道数对于GFTNN和GFTNNVAD为80,对于GFTNN-VAD-L为128。提交模型(GFTNN-VAD-L)的总参数大小为4.7912M。在Intel® Xeon® Platinum 8163 CPU@2.50GHz四核机器上测试,我们提交模型的总实时因子(RTF)为0.1706,其中GFTNN后处理滤波器为0.1306,DSP部分(包括子带分解、自适应滤波器和合成)为0.04。一些处理过的音频剪辑可以在我们的演示页面1上找到。
2.3.4 结果与分析
从表2中,我们首先看到使用自适应滤波器(线性AEC)是有益的——直接使用神经网络进行AEC会导致性能较差(比较DX与EX/DEY)。我们还注意到,用
L
e
c
h
o
L_{echo}
Lecho替换
L
p
l
c
p
a
L_{plcpa}
Lplcpa在PESQ和ERLE上都有了很大的提升,这证明了通过回声加权MSE是非常有益的。与[31]一致,用DEY替换输入信号EX在每种场景中都导致了PESQ和ERLE的提升。在ST-NE场景的真实录音中[16],参考信号
x
(
n
)
x(n)
x(n)可能与麦克风信号
d
(
n
)
d(n)
d(n)完全不相关。
这意味着,如果输入信号包含X(如DX和EX),神经网络AEC的性能可能会受到影响,因为与DSP方法不同,神经网络很难找到这些不相关输入组合的一致规则。这也解释了为什么输入组合DEY比其他两种组合的性能更好。子带分解和合成过程中的失真使PESQ的上限为4.35。当SER=+∞和SNR=+∞时,即干净信号,使用GFTNN后处理滤波器中的TDE模块可以提高语音的感知质量(PESQ>=4.3)。比较我们两级框架中的两种线性AEC算法(DEY-W与DEY-M),由于其更好的收敛性,wRLS比MDF表现更好。最后,较大的模型GFTNN-VAD-L通常表现更优越。我们使用这个模型处理盲测剪辑,并提交给挑战赛。
我们想进一步解释三个观察结果。首先,用DEY-W替换DEY-M几乎导致ERLE下降了20dB,尽管PESQ有所改善。事实上,当ERLE大于60dB时,主观听力性能没有明显差异。其次,VAD模块并没有导致更好的PESQ,但我们发现,由于使用了VAD模块,盲测集中的许多情感剪辑没有被过度抑制。这些剪辑上更好的感知听力性能表明,网络可以有效地学习区分语音帧和非语音帧。最后,我们发现当
x
(
n
)
x(n)
x(n)与
d
(
n
)
d(n)
d(n)不相关时,复值神经网络会对估计的
s
^
(
n
)
\hat{s}(n)
s^(n)造成失真。因此,在本文中,我们不再使用复值结构。
官方发布的盲测集结果在表3中显示,我们的方法在WAcc上绝对提高了0.158,在得分上提高了0.112。换句话说,我们的系统在WAcc上排名第一,在平均主观评分(MOS)和最终得分上排名第三。
2.4 结论
本文介绍了我们提交给2022年ICASSP AEC挑战赛的线性AEC+神经网络后处理滤波器系统。借助特别设计的网络结构GFTNN、带有VAD的多任务学习和基于回声的损失函数,我们提出的AEC系统能够实现更好的回声消除和噪声抑制性能,同时确保近端语音不会被过度抑制。我们提交的系统在挑战赛中排名第三,具有良好的主观质量(MOS)和语音识别准确率(WAcc)。在未来的工作中,我们将探索我们的基于回声的加权损失是否可以转移到相关任务,如目标说话者提取(TSE),并探索更多的级联方案。
标签:LOSS,MULTI,语音,滤波器,回声,VAD,ECHO,AEC,信号 From: https://blog.csdn.net/qq_34941290/article/details/144348766