Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475阅读目录
论文地址:https://graz.pure.elsevier.com/en/publications/acoustic-echo-cancellation-with-cross-domain-learning
具有跨域学习的声学回声消除
回到顶部### 摘要:
本文提出了跨域回声控制器(CDEC),提交给 Interspeech 2021 AEC-Challenge。该算法由三个构建块组成:(i) 时延补偿 (TDC) 模块,(ii) 基于频域块的声学回声消除器 (AEC),以及 (iii) 时域神经网络 (TD-NN)用作后处理器。我们的系统获得了 3.80 的整体 MOS 分数,而在 32 毫秒的系统延迟下仅使用了 210 万个参数。
关键字:声学回声消除、神经网络、残余回声消除
回到顶部### 1 引言
回声消除 (AEC) 在当今的 VoIP 语音通信和视频会议系统中发挥着重要作用。由于室内声学,在扬声器和耳机麦克风、听筒或任何其他用于语音通信的音频硬件之间会出现回声。根据房间的混响时间,声学回声可能会非常突出,甚至会显着降低语音清晰度和语音质量 [1]。这在免提场景中尤其是一个问题 [2]。因此,高效的 AEC 解决方案是可靠语音通信的重要组成部分。典型的 AEC 将扬声器和麦克风之间的回声脉冲响应 (EIR) 建模为线性 FIR 滤波器,并使用归一化最小均方 (NLMS) 算法 [3, 4] 自适应地调整该滤波器。许多实现需要语音活动检测器 (VAD) 在双方通话期间停止适应,即当近端和远端说话者同时说话时 [3,5]。更复杂的实现通过使用状态空间模型 [6] 或卡尔曼滤波器 [7] 来解释双方对话。然而,线性回声模型不能考虑回声路径中的非线性失真,或麦克风拾取的附加噪声。 SpeexDSP [8]、WebRTC [9] 或 PjSIP [10] 等商业 AEC 框架依赖于传统的非线性回声和噪声去除方法,例如 Wienerfilters [11]、Volterra 内核 [12] 或 Hammerstein 模型 [13]。
最近,已经提出神经网络用于非线性残余回声和噪声去除[14-19]。从深度学习的角度来看,这些任务可以看作是语音或音频源分离问题 [2,14,18-23]。尽管该研究领域近年来进展迅速 [24, 25],但大多数基于 NN 的说话人分离算法对计算的要求很高,没有因果关系,并且不能在实时应用中工作。能够进行实时处理的系统在逐帧的基础上运行。特别是,循环神经网络 (RNN),如门控循环单元 (GRU) [26] 或长短期记忆 (LSTM) [27] 网络用于模拟人类语音中的时间相关性,同时遵守实时典型 AEC 应用的约束 [2, 19, 28]。类似的架构 [29-31] 已应用于实时信号增强,作为对 Interspeech 2020 [32] 的深度噪声抑制挑战和 ICASSP AEC 挑战 [33] 的贡献。
本文介绍了我们对 Interspeech 2021 AEC-Challenge 的贡献,该挑战由三个级联模块组成:(i) 基于 PHAse 变换的广义互相关 (GCCPHAT) [4] 的时延补偿 (TDC) 模块,其中补偿近端扬声器和麦克风信号之间的延迟。 (ii) 一种频域状态空间块分区 AEC 算法 [6],它去除了线性回波分量。 (iii) 时域神经网络 (TD-NN),它可以同时去除非线性残余回声和附加噪声。我们将我们的系统称为跨域回声控制器 (CDEC),因为它同时在频域和时域中运行。我们模型的评估基于使用 ITU P.808 框架 [33] 的感知语音质量指标,该框架报告平均意见分数 (MOS)。此外,我们报告了其他指标,例如 MOSnet [34] 和 ERLE [35]。最后,我们还报告了我们的 CDEC 系统在每帧音频数据的 MAC 操作方面的计算复杂性。
回到顶部### 2 提出的系统
2.1 问题表述
在典型的 AEC 系统中,有两个输入信号可用: (i) 远端麦克风信号 x(t),由本地扬声器播放。 (ii) 近端麦克风信号 d(t),可描述为以下分量的叠加:
d(t)=x(t−Δt)∗h(t)+s(t)+n(t)+v(t) (1)
d(t)=x\left(t-\Delta_{t}\right) * h(t)+s(t)+n(t)+v(t) (1)
其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LmljwlQ-1648529302429)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0064.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scNiRxZR-1648529302430)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Main/Regular/400/0394.png?V=2.7.5)]![](https://img-blog.csdnimg.cn/img_convert/d28facf247930cdcdbd0a7a70c772c6f.png)Δt\Delta\_{t}建模为滤波器权重中的前导零。然而,更实际的做法是在 AEC 之前明确补偿此延迟,以保持建模的 EIR 较短,从而节省计算资源。虽然这种延迟可能是未知的,但我们坚持通常在实时音频处理框架中做出的假设 [8-10]。特别是,我们假设延迟不超过1s,并且至少稳定10s。
我们采用 GCC-PHAT 算法 [4] 在频域中比较远端信号 Φ(l,k)=Φ(l,k)α+(1−α)X(l,k)D(l,k)∗ (2)
\Phi(l, k)=\Phi(l, k) \alpha+(1-\alpha) X(l, k) D(l, k)^{*} (2)
其中 Δt=argmaxtF−1Φ(l)|Φ(l)| (3)
\Delta_{t}=\underset{t}{\operatorname{argmax}} \mathcal{F}^{-1} \frac{\Phi(l)}{|\Phi(l)|} (3)
其中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cZyu02RY-1648529302476)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0064.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZcUciz2-1648529302477)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/BoldItalic/400/0078.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPSnWeb9-1648529302477)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0064.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eZJGzSdO-1648529302478)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Main/Regular/400/0032.png?V=2.7.5)]![](https://img-blog.csdnimg.cn/img_convert/850fa531b013cb09e96e3ecabff2fe4e.png)2T2T 最新样本,即
x′(l)=x(t+n−2T)d′(l)=d(t+n−2T) (4)
\begin{aligned}
&\boldsymbol{x}^{\prime}(l)=x(t+n-2 T) \
&\boldsymbol{d}^{\prime}(l)=d(t+n-2 T) (4)
\end{aligned}
其中PP 个分区,即
Y(l,k)=∑p=0P−1X(l−p,k)W(p,k)e′(l)=d′(l)−F−1{Y(l)} (5)
\begin{aligned}
Y(l, k) &=\sum_{p=0}^{P-1} X(l-p, k) W(p, k) \
e^{\prime}(l) &=\boldsymbol{d}^{\prime}(l)-\mathcal{F}^{-1}{\boldsymbol{Y}(l)}
\end{aligned} (5)
其中 e(t+n−T)=e′(l,n+T) (6)
e(t+n-T)=e^{\prime}(l, n+T) (6)
其中, w(p)=F−1{W(p)},w(p,n+T)=0W(p)←F{w(p)} (7)
\begin{aligned}
\boldsymbol{w}(p) &=\mathcal{F}^{-1}{\boldsymbol{W}(p)}, \
w(p, n+T) &=0 \
\boldsymbol{W}(p) & \leftarrow \mathcal{F}{\boldsymbol{w}(p)}
\end{aligned} (7)
其中,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M60FFWr3-1648529302525)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0057.png?V=2.7.5)]![](https://img-blog.csdnimg.cn/img_convert/565171cdc9b326067de2297c5118ccd7.png)![](https://img-blog.csdnimg.cn/img_convert/0699c8bf2a37cd9e1ce32d98eee30f26.png)![](https://img-blog.csdnimg.cn/img_convert/58dc5acd3f68f22db8caaf08efeb899f.png)![](https://img-blog.csdnimg.cn/img_convert/bac94994600c352292f8d6d3eae89879.png)![](https://img-blog.csdnimg.cn/img_convert/d92409e0e1dc9c6b63cffbaf0035e388.png)![](https://img-blog.csdnimg.cn/img_convert/43c0d3f660d747ff142a5ae97ee065f6.png)W^(p,k)\hat{W}(p, k)作为阴影权重。算法 1 说明了这些权重是如何更新的。
阴影权重基于 ERLE E(l)=10log10∑k|D(l,k)|2∑k|E(l,k)|2E^(l)=10log10∑k|D(l,k)|2∑k|E^(l,k)|2 (8)
\begin{gathered}
\mathcal{E}(l)=10 \log _{10} \frac{\sum_{k}|D(l, k)|^{2}}{\sum_{k}|E(l, k)|^{2}} \
\hat{\mathcal{E}}(l)=10 \log _{10} \frac{\sum_{k}|D(l, k)|^{2}}{\sum_{k}|\hat{E}(l, k)|^{2}}
\end{gathered} (8)
其中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNYTElau-1648529302585)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0046.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ks5h7mAd-1648529302585)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0053.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXphPRxl-1648529302586)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0078.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3N6PMd23-1648529302587)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0079.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-avInbcRx-1648529302588)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0064.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-der1EsSX-1648529302589)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0065.png?V=2.7.5)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yXDhehP6-1648529302589)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0048.png?V=2.7.5)]HH 个神经元的潜在表示。请注意,此 Conv1D 层使用过去 1600 个相应信号的样本,即它看到过去 100 毫秒音频数据的上下文。每个信号都通过即时层归一化单独归一化,以解决各个级别的变化。即时层归一化类似于标准层归一化[36]。该分支中的最后一个前馈 (FF) 层使用 softplus 激活函数,以提供不受约束的掩码。
我们通过将干净的 WSJ0 数据 [37] 作为所需的近端语音 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLAHoMQh-1648529302601)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Main/Regular/400/0031.png?V=2.7.5)]![](https://img-blog.csdnimg.cn/img_convert/5f7d032513e3cce796786b7decbdfe62.png)![](https://img-blog.csdnimg.cn/img_convert/e9e8ecd70e97e450c6ffa05ae552eaef.png)![](https://img-blog.csdnimg.cn/img_convert/827dd23bd8c9abe5fadc80f3e4dfe8f4.png)![](https://img-blog.csdnimg.cn/img_convert/3418d26209edbb85e771f9ffb28c031d.png)![](https://img-blog.csdnimg.cn/img_convert/df28c4f0a57df59a74045660aaaa11eb.png)![](https://img-blog.csdnimg.cn/img_convert/16b644cb2cbf0bd820ea79a6f9addda0.png)12…36dB12 \ldots 36 dB之间的均匀分布中随机选择。噪声仅添加到模拟数据集中。
为了进一步提高鲁棒性并模拟各种传输效果,我们在模拟数据集的每个远端信号 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JJoflkII-1648529302605)(https://blog.csdn.net/2_7_5/fonts/HTML-CSS/TeX/png/Math/Italic/400/0064.png?V=2.7.5)]![](https://img-blog.csdnimg.cn/img_convert/f9dca30ee1d61a1ba028637eddb8c099.png)![](https://img-blog.csdnimg.cn/img_convert/e67b7d93bf6108151f3302564e7bedf5.png)![](https://img-blog.csdnimg.cn/img_convert/b2a9f6b9e1b3c8035e55b4ffaf9351a7.png)d(t)d(t)。我们将每个信号截断为 10 秒,以便能够将它们堆叠成批次进行训练。
3.3 CDEC训练
在训练期间,我们首先使用式2中的 GCCPHAT 估计批量延迟。 每 10 秒一次,即每个训练话语一次。接下来,我们从式5-8执行 AEC。输出回波模型 LSDR=10log10∑ts(t)2∑t[s(t)−z(t)]2 (9)
\mathcal{L}_{\mathrm{SDR}}=10 \log _{10} \frac{\sum_{t} s(t)^{2}}{\sum_{t}[s(t)-z(t)]^{2}} (9)
而我们使用 ERLE 作为 FE 场景的损失函数,即
LERLE=10log10∑td(t)2∑tz(t)2 (10)
\mathcal{L}_{\mathrm{ERLE}}=10 \log _{10} \frac{\sum_{t} d(t)^{2}}{\sum_{t} z(t)^{2}} (10)
我们将总损失函数定义为
LERLE=−LSDR−λLERLE (11)
\mathcal{L}_{\mathrm{ERLE}}=-\mathcal{L}_{\mathrm{SDR}}-\lambda \mathcal{L}_{\mathrm{ERLE}} (11)
4.3 计算复杂度
CDEC 模型的计算复杂度在四核 i5 2.5Ghz 参考系统上进行了评估。特别是,我们使用矩阵/向量库 Eigen 和 FFT 库 FFTW [39] 使用 C++ 中的单精度参考实现测量了 CDEC 系统前向传递的单帧的执行时间。 TD-NN 系统使用 210 万个参数,而 AEC 使用<span class="MathJax" id="MathJax-Element-127-Frame" tabindex="0" style="position: relative;" data-mathml='