文献信息:Pandey A, Wang D L. A new framework for CNN-based speech enhancement in the time domain[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2019, 27(7): 1179-1188.
摘要:本文为全卷积神经网络(CNN)提出了一种新的学习机制,以解决时域中的语音增强问题。 CNN将含噪语音的时间帧作为输入,输出增强语音的时间帧。在训练时,作者添加了一个额外的操作,可将时域转换为频域。该转换对应于简单的矩阵乘法,因而可微。因此频域损失可用于时域训练。作者使用增强语音的短时傅立叶变换(STFT)幅度和纯洁语音的STFT幅度之间的平均绝对误差损失(MAE)来训练CNN。这样,模型可以利用将信号转换到频域进行分析的领域知识。由于CNN在时域上进行处理,所以避免了无效STFT问题。实验结果表明,所提出的方法显著优于其他语音增强方法。所提出的方法易于实现,且能用在需要时频掩蔽或频谱映射的相关语音处理任务中。
A 背景意义
语音增强是从语音信号中消除或衰减加性噪声的任务,并且通常涉及改善降级语音的清晰度和质量。单声道(单通道)语音增强的目的是为来自单个麦克风的录音提供一种通用且经济高效的方法。但单通道语音增强是一个非常具有挑战性的问题,尤其是在低信噪比的情况下。在过去的几年中,使用深度神经网络(DNN)进行语音增强的监督方法已成为主流。用于监督语音增强的最常用方法是使用T-F屏蔽或频谱映射。这两种方法都使用噪声信号的相位从频域在时域中重建语音信号。这意味着只能学到频域中的映射,但是从频域到时域的任务不受学习过程的约束。集成从频域到时域或相反方向的领域知识可能对语音增强的核心任务很有帮助。在时域中使用损耗函数来训练DNN。但是,这些方法使用噪声相位来重建时域信号,并且可能会遭受的无效STFT问题。
B 本文贡献
作者提出一种输入和输出时域信号,但频域中使用损失函数进行训练的模型。这使得生成的信号始终是有效信号,而不需要使用噪声信号的相位。而且神经网络在优化损失函数的过程中会学习相结构。作者在训练时在模型中添加一个额外的操作,以将时域中的估计语音信号转换到频域,然后计算纯净语音的STFT幅度和估计的STFT幅度之间的MAE损失函数。
2. 频域损失函数
给定一个时域中长度为N的实向量。可以通过将其与一个复数值离散傅里叶变换(DFT)矩阵D相乘,将其转换为频域,公式如下
考虑到实值向量,可以将其写作
其中,其中
其中
当使用
其中,α是为稳定训练而添加的小的正常数。
图1展示了频域损失计算过程。本文的模型一次处理一个2048个样本的帧。这个帧是以 16kHz采样率采样128 ms后得到的。模型输出相同长度的帧。输出的帧通过OLA(overlap-and-add) 组合,得到增强语音。将增强语音以512分帧,加汉明窗,然后分别与两个矩阵
3.模型结构
本文提出的网络结构是基于自动编码器的带有残差连接的全卷积神经网络编码器的第一层是卷积层,将通道数从1增加到64。接下来的八层中的每一层都使用跨度为2的卷积依次将输入信号的尺寸减小到一半,同时加倍或保持频道数。编码器的最终输出大小为8,带有256个通道。解码器和编码器呈镜像形式,由八个反卷积层组成,每个卷积层的跨度为2,将输入尺寸增加了一倍,从而使通道数与编码器的相应对称层中的通道数相同。解码器中每一层的输出与编码器相应的输出串联在一起。残差连接的目的是解决从编码器的最终输出重构信号苦难的问题。同时,残差连接也有助于向靠近输入层的层提供梯度,以避免了梯度消失的问题。最后y输出层是一个简单的卷积层。它将通道数从64降为1。网络中的每一层都使用参数ReLU非线性激活,除了使用Tanh的输出层。每3层应用0.2的dropout。
4. 仿真与性能评估
A 试验配置
实验所用的纯净语音来自TIMIT语音数据库,IEEE数据库,以及WSJ0 SI-84数据集。作TIMIT训练集中随机选择的2000种语音作为训练语音。 TIMIT核心测试集(由192个语音组成)用作测试集以评估与噪声有关和与非特定噪声的情况的模型。针对操作室,引擎等五种噪声训练了五个依赖于噪声的模型。并用两种未经训练的噪声进行评估。训练集通过在SNR为-5 dB和0 dB的情况下随机混入噪声前半部分构造。测试集通过在SNR为-5 dB,0 dB和5 dB时随机混入噪声后半部分来构造。5 dB是未训练的SNR条件,用于评估训练模型的SNR泛化能力。此外,作者在IEEE数据库上评估与说话者相关的性能。IEEE数据库由一位男性讲话者的720条话语组成。从中划分出560个语音,混合非语音声音形成380小时的训练语句。其余的160个语音混合来自Auditec CD的食堂噪声和含糊不清的声音混合在一起来创建测试集。最后,作者还在 WSJ0 SI-84 数据集上训练与说话者和噪声相关的模型,并评估性能。
作者训练了多种模型进行性能比较,包括AECNN-T,时域损失训练的自编码器卷积神经网络(AECNN);SEGAN-T ,时域损失训练的生成对抗网络;AECNN-RI,包含实部与虚部的频域损失函数训练的AECNN;AECNN-SM1,只包含幅度L1范数的损失函数训练的AECNN;AECNN-SM2(只包含幅度L2范数的损失函数)。
本文通过对增强语音进行客观评价来比较不同方法的语音增强性能,主要采用PESQ作为指标来评价增强语音的质量,并采用STOI作为指标来评价增强语音的可懂度。
B. 仿真结果分析
表1给出了在TIMIT数据集上训练的噪声相关模型进行比较的结果。从表中可以看出,首先,我们介绍的结果。表I列出了在-5 dB,0 dB和5 dB SNR下所有五个噪声的平均结果。有相位损失函数训练的模型(AECNN-T,SEGAN-T,或AECNN-RI)使用MSE效果更好,而无相位损失函数(训练的模型(AECNN-SM1, AECNN-SM2)。此外采用时域上重构模型(AECNN-T)显著优于频域上重构模型(SEGAN)。而且AECNN-T也优于 SEGAN-T。这说明 AECNN 比SEGAN更适合在时域进行语音增强。
图3具体对比了一个混有-5 dB嘈杂噪声的语音样本的频谱图,以及使用不同模型增强后的频谱图从图中可以看出,基于DNN的IRM估计器似乎不会使语音信号失真很多,但不能消除一些噪声,如-1.25s附近的低频噪声所示 AECNN-T可以进一步降低噪音,但仍会保留一些噪音。而使用STFT幅度损失的增强频谱图看起来最接近于纯净语音频谱图,它在降噪效果更好,且仅引入了相对可忽略的失真。
作者在IEEE数据集上进行了特定说话人但非特定噪声的模型训练,进一步评估了模型性能。表III中给出了DNN基线模型与所提方法的性能比较。在-5 dB SNR的情况下,DNN模型增强语音后,将STOI得分提高了16.6%。SNR为-5dB的语音并没有包含在训练中。在这种情况下,所提方法将STOI分数提高了23.3%,说明其显著性能提升。在其他SNR下,所提方法相对基线模型STOI提升分别为,在-2 dB时的5.5%,在0 dB的4%,在5 dB时的1.6%。
作者在WSJ0 SI-84数据集上训练了非特定噪声和非特定人模型。表IV测试用的是没有训练过的说话者的语音和没有训练过的嘈杂噪声和餐厅噪声。可以看出,所提方法产生的STOI和PESQ分数要比62层的基线GRN还高。所提方法逐帧进行增强,而GRN在整个语音上增强,能够最大程度利用上下文信息。所提方法性能更优的可能解释是它直接学习相位信息,而GRN则直接使用噪声相位信息重构信号
5. 结论
在本文中,作者提出了一种新方法来训练用于时域语音增强的全卷积神经网络。关键思想是使用频域损失来训练CNN。作者研究了频域中不同类型的损失函数,发现频域损失优于时域损失。使用频域损失可以提高客观质量和清晰度。
6. 个人总结与思考
1. 这篇文章提出了用频域上的损失来训练输出时域信号的模型,巧妙避开了估计频域掩模进行语音增强的方法存在的直接使用噪声相位产生失真的问题。这表明特定情况下损失函数和输出不直接挂钩也可能是有效的模型训练方法。
2. 这篇文章详细比较了不同网络结构,不同损失函数对网络性能的影响,包括损失函数使用的范数,是否包含相位,网络采用何种形式输入输出等。这些考虑因素在网络设计时都可以参考。