一、 技术解读
在语音增强的过程中,通常会使用频谱掩码(mask)来从原始信号的频谱中提取增强信号。这个过程的目标是减少噪声并提高信号的清晰度。增益 g ^ b \hat{g}_b g^b 是通过深度神经网络计算得出的,用于调整频谱的幅度。
-
增益微调:
- 通过对 DNN 产生的增益 g ^ b \hat{g}_b g^b 进行微调,以改善增强效果。
- 这种微调的灵感来源于常用于 CELP(码激励线性预测)编解码器的形式后滤波器。
-
扭曲增益的计算:
- 计算一个扭曲的增益
g
^
b
(
w
)
\hat{g}^{(w)}_b
g^b(w):
g ^ b ( w ) = g ^ b sin ( π 2 g ^ b ) \hat{g}^{(w)}_b = \hat{g}_b \sin\left(\frac{\pi}{2} \hat{g}_b\right) g^b(w)=g^bsin(2πg^b) - 这个公式的作用是:
- 对于干净频带, g ^ b \hat{g}_b g^b 基本不受影响。
- 对于噪声较大的频带,增益会被调整,类似于维纳滤波器的增益处理。
- 计算一个扭曲的增益
g
^
b
(
w
)
\hat{g}^{(w)}_b
g^b(w):
-
全局增益补偿:
- 为了避免过度衰减整个增强信号,应用全局增益补偿的方法,计算公式如下:
G = ( 1 + β ) E 0 E 1 ( 1 + β E 0 E 1 E 1 ) 2 G = \sqrt{\frac{(1 + \beta) E_0}{E_1} \left( \frac{1 + \beta E_0 E_1}{E_1} \right)^2} G=E1(1+β)E0(E11+βE0E1)2 - 其中:
- E 0 E_0 E0 是使用原始增益 g ^ b \hat{g}_b g^b 的增强信号的总能量。
- E 1 E_1 E1 是使用扭曲增益 g ^ b ( w ) \hat{g}^{(w)}_b g^b(w)时的总能量。
- β \beta β是一个超参数,设置为 0.02,使得干净频带的最大理论增益为 5.5 dB。
- 为了避免过度衰减整个增强信号,应用全局增益补偿的方法,计算公式如下:
-
最终信号的计算:
- 将最终信号按 (G) 缩放,得到感知上更干净的信号,其响度与干净信号相当。
- 后滤波后的带能量由下式给出:
X ^ b = G g ^ b ( w ) Y b \hat{X}_b = G \hat{g}^{(w)}_b Y_b X^b=Gg^b(w)Yb - 这里, X ^ b \hat{X}_b X^b 是增强后的信号, Y b Y_b Yb 是原始信号的频谱。
二、 论文翻译:一种基于感知的低复杂度实时全频带语音增强方法
2.0 摘要
近年来,基于深度学习的语音增强方法在性能上已经远远超过了传统的基于谱减法和谱估计的方法。这些新技术大多直接在短时傅里叶变换(STFT)域中操作,导致计算复杂度很高。本文提出了一种名为PercepNet的高效方法,它基于人类对语音的感知,重点关注语音的频谱包络和周期性。我们展示了高质量的实时全频带(48 kHz)语音增强,其计算复杂度不到一个CPU核心的5%。
2.1 引言
近年来,基于深度学习的语音增强方法在性能上已经远远超过了传统的基于谱减法[1]和谱估计[2]的方法。这些新技术大多直接在短时傅里叶变换(STFT)域中操作,估计幅度[3, 4, 5]或理想比率掩蔽(IRM)[6, 7]。这通常需要大量的神经元和权重,导致计算复杂度很高。这也部分解释了为什么这些方法大多限制在8或16 kHz。STFT的使用还带来了窗口长度的权衡——长窗口可能导致音乐噪声和混响效应,而短窗口则无法提供足够的频率分辨率来去除基谐之间的噪声。
这些问题可以通过使用复比率掩蔽[8]或时域处理[9, 10, 11]来缓解,但会进一步增加复杂度。我们提出了一种名为PercepNet的高效方法,它基于人类对语音信号的感知,并改进了RNNoise[12]。更具体地说,我们依赖于临界带中的音频感知(第2节)以及音调和噪声的感知,使用了一种新的非因果梳状滤波器。我们使用的深度神经网络(DNN)模型是基于感知标准进行训练的(第4节)。
我们提出了一种新的包络后滤波器(第5节),以进一步改善增强信号。PercepNet算法处理10毫秒的帧,具有40毫秒的前瞻,并可以使用仅4.1%的x86 CPU核心实时增强48 kHz的语音。我们展示了其质量显著超过了RNNoise(第6节)。
2.2 信号模型
设x(n)为干净的语音信号,由免提麦克风在嘈杂房间中捕获的信号为:
y
(
n
)
=
x
(
n
)
⋆
h
(
n
)
+
η
(
n
)
y(n) = x(n) \star h(n) + \eta(n)
y(n)=x(n)⋆h(n)+η(n)
其中,
η
(
n
)
η(n)
η(n)是房间中的附加噪声,
h
(
n
)
h(n)
h(n)是从说话者到麦克风的脉冲响应,
⋆
\star
⋆表示卷积。此外,干净的语音可以表示为
x
(
n
)
=
p
(
n
)
+
u
(
n
)
x(n) = p(n) + u(n)
x(n)=p(n)+u(n),其中
p
(
n
)
p(n)
p(n)是局部周期性成分,
u
(
n
)
u(n)
u(n)是随机成分(这里我们将诸如停顿之类的瞬态视为随机成分的一部分)。
在本工作中,我们试图计算一个增强信号
y
^
(
n
)
\hat{y}(n)
y^(n) =
p
^
(
n
)
\hat{p}(n)
p^(n) +
u
^
(
n
)
\hat{u}(n)
u^(n),使其尽可能接近干净的语音
x
(
n
)
x(n)
x(n)。将随机成分
u
(
n
)
u(n)
u(n)与环境噪声
η
(
n
)
η(n)
η(n)分离是一个非常困难的问题。幸运的是,我们只需要
u
^
(
n
)
\hat{u}(n)
u^(n)听起来像
u
(
n
)
u(n)
u(n),这可以通过过滤混合信号
u
(
n
)
u(n)
u(n)
⋆
\star
⋆
h
(
n
)
h(n)
h(n)+
η
(
n
)
η(n)
η(n)来实现,使其具有与
u
(
n
)
u(n)
u(n)相同的频谱包络。
由于
p
(
n
)
p(n)
p(n)是周期性的,而噪声假设没有强周期性,因此
p
^
(
n
)
\hat{p}(n)
p^(n)应该更容易估计。同样,我们主要需要
p
^
(
n
)
\hat{p}(n)
p^(n)具有与
p
(
n
)
p(n)
p(n)相同的频谱包络和相同的周期。我们试图构建一个增强信号,使其具有与干净信号相同的频谱包络和频率依赖的周期-随机比率。对于这两个属性,我们使用与人类感知相匹配的分辨率。我们使用20毫秒窗口和50%重叠的短时傅里叶变换(STFT)。我们使用Vorbis窗口函数[13]——它满足Princen-Bradley完美重构准则[14]——用于分析和合成,如图1所示。算法的概述如图2所示。
2.2.1 频带
大多数噪声信号具有宽频带和平滑的频谱。同样,语音的周期性和随机成分也具有平滑的频谱包络。这使得我们可以使用34个频带从0到20 kHz来表示它们的包络,这些频带根据人耳的等矩形带宽(ERB)[15]进行间隔。为了避免只有一个DFT箱的频带,我们规定最小频带宽度为100 Hz。
为了使增强信号的每个频带在感知上接近干净语音,它们的总能量和周期内容应该相同。在本文中,我们将信号
x
(
n
)
x(n)
x(n)在帧
ℓ
\ell
ℓ中的频带
b
b
b的复数值频谱表示为
x
b
(
ℓ
)
x_b(\ell)
xb(ℓ)。我们还将该频带的L2范数表示为
X
b
(
ℓ
)
X_b(\ell)
Xb(ℓ)。
2.2.2 增益
从噪声语音信号在频带(b)中的幅度,我们计算理想比率掩蔽,即需要应用于
y
b
y_b
yb的增益,使其具有与
x
b
(
ℓ
)
x_b(\ell)
xb(ℓ)相同的能量:
g
b
(
ℓ
)
=
X
b
(
ℓ
)
Y
b
(
ℓ
)
g_b(\ell) = \frac{X_b(\ell)}{Y_b(\ell)}
gb(ℓ)=Yb(ℓ)Xb(ℓ)
在语音只有随机成分的情况下,将增益
g
b
(
ℓ
)
g_b(\ell)
gb(ℓ)应用于频带
b
b
b的幅度谱,应该可以得到一个几乎与干净语音信号无法区分的增强信号。另一方面,当语音是完全周期性的,将增益
g
b
(
ℓ
)
g_b(\ell)
gb(ℓ)应用于信号会导致增强信号听起来比干净语音更粗糙;尽管能量相同,但增强信号的谐波性比干净语音低。在这种情况下,噪声特别明显,因为音调对噪声的掩蔽效果相对较小[16]。在这种情况下,我们使用下一节描述的梳状滤波器来去除基谐之间的噪声,使信号更具周期性。
2.3 音高滤波
为了重建干净语音的谐波特性,我们基于音高频率使用梳状滤波。梳状滤波可以实现比STFT(使用20毫秒帧为50 Hz)更精细的频率分辨率。我们使用基于相关的方法结合动态规划搜索[17]来估计音高周期。
2.3.1 滤波器
对于周期为T的有声音频信号,一个简单的梳状滤波器:
C
(
0
)
(
z
)
=
1
+
z
−
T
/
2
C^{(0)}(z) = 1 + z^{-T/2}
C(0)(z)=1+z−T/2
在谐波之间引入零点,将信号的噪声部分衰减约3 dB。这在[12]中提供了小但明显的质量改进。在本工作中,我们将梳状滤波扩展到多个周期,包括非因果抽头,使用以下滤波器:
C
M
(
z
)
=
∑
k
=
−
M
M
w
k
z
−
k
T
C_M(z) = \sum_{k=-M}^{M} w_k z^{-kT}
CM(z)=k=−M∑Mwkz−kT
其中M是中心抽头两侧的周期数,
w
k
w_k
wk是满足
∑
k
w
k
=
1
\sum_k w_k = 1
∑kwk=1的窗函数。使用
C
M
(
z
)
C_M(z)
CM(z),信号的噪声部分被衰减
σ
w
2
=
∑
k
w
k
2
σ²_w = \sum_k w_k^2
σw2=∑kwk2。虽然矩形窗会最小化
σ
w
2
σ²_w
σw2,但我们使用Hann窗,它将剩余噪声塑形成谐波之间的低噪声。由于音调掩蔽的行为[15],这导致更低的感知噪声。对于M = 5,我们有
σ
w
σ_w
σw = -9 dB,完整的响应如图3所示。在实际中,由于最大前瞻是有限的,我们将窗函数
w
k
w_k
wk截断到允许的
k
T
kT
kT值。滤波在时域中进行,输出表示为
p
^
(
n
)
\hat{p}(n)
p^(n),因为它近似于干净语音中的“完美”周期成分
p
(
n
)
p(n)
p(n)。其STFT表示为
p
^
b
(
ℓ
)
\hat{p}_b(\ell)
p^b(ℓ)。
2.3.2 滤波强度
梳状滤波的量很重要:滤波不足会导致粗糙感,而滤波过多会导致声音变得机械。在[12]中,梳状滤波的强度是通过启发式方法控制的。在本工作中,我们让神经网络学习最佳保留每个带中周期与随机能量比率的强度。下面的方程描述了理想的强度应该是什么。由于它们依赖于干净语音的特性,因此仅在训练时使用。
我们将干净信号的音高相干性
q
x
,
b
(
ℓ
)
q_{x,b}(\ell)
qx,b(ℓ)定义为信号与其周期成分的复数谱之间的余弦距离(为了清晰起见,省略了
ℓ
\ell
ℓ和
b
b
b):
q
x
≜
ℜ
[
p
H
x
]
∥
p
∥
⋅
∥
x
∥
q_x \triangleq \frac{\Re\left[\mathbf{p}^{\mathrm{H}}\mathbf{x}\right]}{\|\mathbf{p}\| \cdot \|\mathbf{x}\|}
qx≜∥p∥⋅∥x∥ℜ[pHx]
其中
⋅
H
\cdot^{\mathrm{H}}
⋅H表示Hermitian转置,
ℜ
[
⋅
]
\Re[\cdot]
ℜ[⋅]表示实部。同样,我们定义
q
y
q_y
qy为噪声信号的音高相干性。由于真实值
p
\mathbf{p}
p不可用,因此需要估计相干值。考虑到
p
^
\hat{\mathbf{p}}
p^中的噪声被衰减了一个因子
σ
w
2
\sigma_w^2
σw2,估计的周期信号
p
^
\hat{\mathbf{p}}
p^本身的音高相干性可以近似为:
q
p
^
=
q
y
(
1
−
σ
w
2
)
q
y
2
+
σ
w
2
q_{\hat{p}} = \frac{q_y}{\sqrt{(1 - \sigma_w^2) q_y^2 + \sigma_w^2}}
qp^=(1−σw2)qy2+σw2qy
我们定义音高滤波强度
r
∈
[
0
,
1
]
r \in [0, 1]
r∈[0,1],其中
r
=
0
r = 0
r=0表示不进行滤波,
r
=
1
r = 1
r=1表示用
p
^
\hat{\mathbf{p}}
p^替换信号。设
z
=
(
1
−
r
)
y
+
r
p
^
\mathbf{z} = (1 - r) \mathbf{y} + r \hat{\mathbf{p}}
z=(1−r)y+rp^为一个音高增强信号,我们希望
z
\mathbf{z}
z的音高相干性与干净信号匹配:
q
z
=
p
⋅
(
(
1
−
r
)
y
+
r
p
^
)
∥
p
∥
⋅
∥
(
1
−
r
)
y
+
r
p
^
∥
=
q
x
q_z = \frac{\mathbf{p} \cdot \left((1 - r) \mathbf{y} + r \hat{\mathbf{p}}\right)}{\|\mathbf{p}\| \cdot \|(1 - r) \mathbf{y} + r \hat{\mathbf{p}}\|} = q_x
qz=∥p∥⋅∥(1−r)y+rp^∥p⋅((1−r)y+rp^)=qx
解方程(7)得到
r
r
r:
r
=
α
1
+
α
r = \frac{\alpha}{1 + \alpha}
r=1+αα
其中:
α
=
b
2
+
a
(
q
x
2
−
q
y
2
)
−
b
a
\alpha = \frac{\sqrt{b^2 + a (q_x^2 - q_y^2)} - b}{a}
α=ab2+a(qx2−qy2)−b
其中
a
=
q
p
^
2
−
q
x
2
a = q_{\hat{p}}^2 - q_x^2
a=qp^2−qx2和
b
=
q
p
^
q
y
(
1
−
q
x
2
)
b = q_{\hat{p}} q_y (1 - q_x^2)
b=qp^qy(1−qx2)
在非常嘈杂的条件下,周期性估计
p
^
\hat{p}
p^在某个频带中的相干性可能低于干净语音的相干性
q
p
^
<
q
x
q_{\hat{p}} < q_x
qp^<qx。在这种情况下,我们将
r
r
r设置为1,并计算一个增益衰减项,以确保增强语音的随机成分与干净语音的水平相匹配(以牺牲周期性成分的响度为代价):
g
att
=
1
+
n
0
−
q
x
2
1
+
n
0
−
q
p
^
2
g_{\text{att}} = \sqrt{\frac{1 + n_0 - q_x^2}{1 + n_0 - q_{\hat{p}}^2}}
gatt=1+n0−qp^21+n0−qx2
其中
n
0
=
0.03
n_0 = 0.03
n0=0.03(或15 dB)限制了最大衰减到噪声掩蔽音调阈值[18]。对于正常情况
q
p
^
≥
q
x
q_{\hat{p}} \geq q_x
qp^≥qx,则
g
att
=
1
g_{\text{att}} = 1
gatt=1。
2.4 DNN模型
该模型同时使用卷积层(一个1x5层后跟一个1x3层)和GRU[19]层,如图4所示。卷积层在时间上对齐,以便使用多达M个未来的帧。为了实现40毫秒的前瞻(包括10毫秒的重叠),我们使用M = 3。
模型使用的输入特征与34个临界带相关。对于每个带,我们使用两个特征:带的幅度具有前瞻
Y
b
(
ℓ
+
M
)
Yb(ℓ + M)
Yb(ℓ+M)和音高相干性没有前瞻
q
y
,
b
(
ℓ
)
qy,b(ℓ)
qy,b(ℓ)(相干性估计本身使用完整的前瞻)。除了这68个与带相关的特征外,我们还使用音高周期
T
(
ℓ
)
T(ℓ)
T(ℓ),以及具有前瞻的音高相关性估计[20],总共70个输入特征。对于每个带
b
b
b,我们还有两个输出:增益
g
^
b
(
ℓ
)
\hat{g}_b(\ell)
g^b(ℓ)近似
g
(
a
t
t
)
b
(
ℓ
)
g
b
(
ℓ
)
g(att)_b(\ell) gb(\ell)
g(att)b(ℓ)gb(ℓ)和强度
r
^
b
(
ℓ
)
\hat{r}_b(\ell)
r^b(ℓ)近似
r
b
(
ℓ
)
rb(\ell)
rb(ℓ)。
模型的权重被限制在±1/2范围内,并量化为8位整数。这减少了内存需求(和带宽),同时通过利用矢量化减少了推理的计算复杂度。
2.4.1 训练数据
我们使用合成的干净语音和噪声混合物来训练模型,信噪比(SNR)范围从-5 dB到45 dB,并包含一些无噪声的示例。干净语音数据包括来自不同公共和内部数据库的120小时48 kHz语音,涵盖200多名说话者和20多种不同语言。噪声数据包括80小时的各种噪声类型,同样以48 kHz的采样率进行采样。
为了确保模型在混响条件下的鲁棒性,我们将噪声信号与模拟和测量到的房间脉冲响应进行卷积。受[21]的启发,目标信号包括早期反射,以便仅衰减后期混响。我们通过对语音和噪声都应用不同的随机二阶极零滤波器来提高模型的泛化能力。我们还对两个信号应用相同的随机频谱倾斜,以更好地泛化不同的麦克风频率响应。为了实现带宽独立性,我们应用了一个截止频率在3 kHz到20 kHz之间的随机低通滤波器。这使得同一个模型可以用于窄带到全带音频。
2.4.2 损失函数
我们为增益和音高滤波强度使用了不同的损失函数。对于增益,我们认为信号的感知响度与其能量的
γ
/
2
γ/2
γ/2次方成正比,其中我们使用
γ
=
0.5
γ=0.5
γ=0.5。因此,在计算指标之前,我们将增益提升到
γ
γ
γ次方。除了平方误差外,我们还使用四次方来过分强调大误差的成本(例如,完全衰减语音):
L
g
=
∑
b
(
g
b
γ
−
g
^
b
γ
)
2
+
C
4
∑
b
(
g
b
γ
−
g
^
b
γ
)
4
L_g = \sum_b (g_b^\gamma - \hat{g}_b^\gamma)^2 + C_4 \sum_b (g_b^\gamma - \hat{g}_b^\gamma)^4
Lg=b∑(gbγ−g^bγ)2+C4b∑(gbγ−g^bγ)4
其中我们使用C4=10来平衡L2和L4项。尽管简单,但损失函数(11)隐含了许多[22]中提出的改进损失函数的特性,包括尺度不变性、信噪比不变性、幂律压缩和非线性频率分辨率。对于音高滤波强度,我们使用与
L
g
Lg
Lg相同的原理,但评估增强语音的噪声成分的响度。由于强度为rb的梳状滤波器将噪声衰减一个因子
1
−
r
b
1 - rb
1−rb,我们使用强度损失:
L
r
=
∑
b
(
(
1
−
r
b
)
γ
−
(
1
−
r
^
b
)
γ
)
2
L_r = \sum_b ((1 - r_b)^\gamma - (1 - \hat{r}_b)^\gamma)^2
Lr=b∑((1−rb)γ−(1−r^b)γ)2
由于增强对
r
^
b
\hat{r}_b
r^b的值的误差不太敏感,我们没有使用四次方项。
2.5 包络后滤波
为了进一步增强语音,我们对深度神经网络(DNN)产生的增益
g
^
b
\hat{g}_b
g^b进行微调。这种调整的灵感来源于常用于CELP编解码器的形式后滤波器[23]。我们故意比干净信号中更进一步地弱化噪声较大的频带,同时过度强调干净频带以进行补偿。
具体方法是计算一个扭曲的增益:
g
^
b
(
w
)
=
g
^
b
sin
(
π
2
g
^
b
)
\hat{g}^{(w)}_b = \hat{g}_b \sin\left(\frac{\pi}{2} \hat{g}_b\right)
g^b(w)=g^bsin(2πg^b)
对于干净频带,
g
^
b
\hat{g}_b
g^b基本不受影响,而对于非常噪声的频带,则平方它(类似于维纳滤波器的增益)。为了避免过度衰减整个增强信号,我们还应用了一个全局增益补偿启发式方法,计算公式如下:
G
=
(
1
+
β
)
E
0
E
1
(
1
+
β
E
0
E
1
E
1
)
2
G = \sqrt{\frac{(1 + \beta) E_0}{E_1} \left( \frac{1 + \beta E_0 E_1}{E_1} \right)^2}
G=E1(1+β)E0(E11+βE0E1)2
其中,
E
0
E_0
E0是使用原始增益
g
^
b
\hat{g}_b
g^b的增强信号的总能量,
E
1
E_1
E1是使用扭曲增益
g
^
b
(
w
)
\hat{g}^{(w)}_b
g^b(w)时的总能量。我们使用
β
=
0.02
\beta = 0.02
β=0.02,这使得干净频带的最大理论增益为5.5 dB。将最终信号按
G
G
G缩放,结果是一个感知上更干净的信号,其响度与干净信号相当。该后滤波后的带能量由下式给出:
X
^
b
=
G
g
^
b
(
w
)
Y
b
\hat{X}_b = G \hat{g}^{(w)}_b Y_b
X^b=Gg^b(w)Yb
当通过房间内的扬声器收听增强语音时,房间的脉冲响应被重新添加到信号中,使其与房间内的任何语音融为一体。然而,当通过耳机收听时,缺乏任何混响会使增强信号听起来过于干涩和不自然。为了解决这个问题,我们强制执行一个最小衰减的能量,前提是不能超过噪声语音的能量:
X
^
b
(
r
)
(
ℓ
)
=
min
(
max
(
X
^
b
(
ℓ
)
,
δ
X
^
b
(
r
)
(
ℓ
−
1
)
)
,
Y
^
b
(
ℓ
)
)
\hat{X}^{(r)}_b (\ell) = \min \left( \max \left( \hat{X}_b (\ell), \delta \hat{X}^{(r)}_b (\ell - 1) \right), \hat{Y}_b (\ell) \right)
X^b(r)(ℓ)=min(max(X^b(ℓ),δX^b(r)(ℓ−1)),Y^b(ℓ))
其中,
δ
\delta
δ被选择为相当于混响时间
T
60
=
100
T_{60} = 100
T60=100毫秒。在将频域增强语音转换回时域后,对输出应用一个高通滤波器。该滤波器有助于消除一些剩余的低频噪声,其截止频率由说话者的估计音高[20]决定,以避免衰减基频。
2.6 实验和结果
我们使用两种平均意见得分(MOS)[24]测试来评估增强语音的质量,这些测试使用了众包方法P.808[25]。首先,我们使用[26]中提供的48 kHz嘈杂VCTK测试集来比较PercepNet与原始RNNoise[12],同时进行消融研究。该测试包括824个样本,每个样本由8名听众评分,结果为95%的置信区间为0.04。我们还提供了PESQ-WB[27]结果,作为与其他方法(如SEGAN[9])比较的参考。表1的结果不仅证明了相对于RNNoise的基本改进,还表明音高滤波和包络后滤波都有助于提高增强语音的质量。此外,主观测试清楚地显示了PESQ-WB在评估包络后滤波时的局限性——尽管主观评估显示后滤波有显著改进,但PESQ-WB认为这是一种退化。需要注意的是,由于该测试中的全频带样本,MOS结果中的绝对数值异常高。
在第二个测试中,DNS挑战[28]的组织者评估了使用PercepNet处理的盲测试样本,并向我们提供了表2中的结果。测试集包括150个没有混响的合成样本,150个有混响的合成样本,以及300个真实录音。每个样本由10名听众评分,导致所有算法的95%置信区间为0.02。由于PercepNet以48 kHz运行,挑战测试数据中的16 kHz数据在STFT域内进行了内部上采样(随后下采样),避免了任何额外的算法延迟。相同的模型参数用于挑战的16 kHz评估和我们自己的48 kHz VCTK评估,证明了该模型能够处理不同带宽的语音。质量也超过了基线[29]算法。
算法的复杂度主要由神经网络决定,因此权重的数量。对于10毫秒的帧大小和8M权重,复杂度约为800 MMACS(每帧/秒每个权重一次乘积累加)。通过将权重量化为8位,矢量化使得网络能够高效运行。对于默认的10毫秒帧大小,PercepNet在实时操作中需要移动x86核心(1.8 GHz Intel i7-8565U CPU)的5.2%。使用40毫秒的帧大小(四个内部10毫秒帧以提高缓存效率),在相同CPU核心上的复杂度降低到4.1%,输出相同。尽管其复杂度远低于DNS挑战允许的最大值,PercepNet在实时赛道中排名第二。定性地,使用ERB带而不是直接在频率箱上操作,使得算法无法在输出中产生音乐噪声(又称鸟鸣伪影)。同样,用于分析的短窗口避免了时域中的混响式模糊。相反,主要的可察觉伪影是由于一些噪声保留在基谐之间,特别是在大声的汽车噪声中。
2.7 结论
我们展示了一种高效的语音增强算法,该算法专注于语音的主要感知特性——频谱包络和周期性——以低复杂度实时产生高质量的全频带语音。所提出的PercepNet模型使用带结构来表示频谱,以及音高滤波和额外的包络后滤波步骤。评估结果表明,无论是宽带还是全频带语音,质量都有显著提高,并证明了音高滤波和后滤波的有效性。我们相信,这些结果证明了使用感知相关的参数来建模语音的好处。