频域噪声模型估计的话音增强方法
- 前言
- 传统的
- 神经的
- 传统和现代的碰撞
- 中西医结合的方法
- 参考文献
- 术语&缩略语
- PSD Power Spectral Density-功率谱密度
- MMSE Minimum Mean Square Error-最小均方差
- STSA log spectral amplitude estimator
- LSA Log-Spectral Amplitude
- OMLSA Optimally Modified Log-Spectral Amplitude Estimator
- iMCRA improved Minima Controlled Recursive Averaging
- SPP Speech Presence Probability
- SAP Speech Absence Probability
- IBM Ideal binary mask 理想二值掩蔽
- IRM Ideal Ratio Mask 理想比例掩蔽
- PSM Phase-Sensitive Mask
- DD Decision Directed 引导判定
- TCS Temporal Cepstrum Smoothing 时域倒谱平滑
- SDR signal-to-distortion ratio
- PESQ perceptual evaluation of quality
- STOI short-time objective intelligibility
- RIR Room Impulse Response
- MAP Maximum A Posterior
- MLLR MaximumLikelihood Linear Regression
- GMMs Gaussian Mixture Models
- HMMs Hidden Markov Models
- NAT Noise-Aware Training
前言
传统的噪声谱密度估计理论并没有随着神经网络的出现而衰退,因为经典的算法模型大大降低了运算速度,而将比较难搞的(估算)参数交给神经网络后,模型实现起来更简单实惠,所以有必要对此做一个回顾学习。噪声模型一般分为加性噪声(底噪)和卷积噪声(混响),虽然各类文档中对噪声的假设是稳态的,但实际中噪声的非稳态特性是无法回避的。维纳滤波的引入,以及自适应滤波的非监督方法,已经使得噪声抑制在234G的无线通信领域和互联网语音通信方面取得了巨大的成功,而随着数据驱动的DeepLearning+neural networks在二十一世纪的第二个次世代异军突起,随之涌现出了很多所谓的智能降噪方法,有些将神经网络应用在经典降噪算法的某些环节,也有端到端的方法实现。神经网络去噪后的数据往往是给机器识别用的,评价方法也不再是mos,而是识别率WER,所以机器是不会在乎失真的语音听上去有多么令人烦恼,而我们人类也听不到这处理后的数据,所关心的只是某个算法比另一个算法多提高了多少识别率。试用此文,学习记录一下传统的和神经的两个领域典型的降噪算法,构建一个基本的单声道语音增强知识图谱。
传统的
参考的资料太多,可以看看【3】【6】【12】,以后有空在将传统的仔细推导一下,此处只罗列最典型的几个名词算了。
谱减法
最早的参考论文Suppression of Acoustic Noise in Speech Using Spec-tral Subtraction,,上个世纪70年代的东西,奠定了频域降噪的基础。谱减法的基本思想是在非语音帧,估计噪声的幅度谱,然后在语音帧,从受噪声污染的语音幅度谱线中减去这些噪声幅度谱偏置(bias),同时利用受噪语音的相位谱,合成时域信号,完成噪声的抑制,基本的范式可以利用下图【13】来概括:
但谱减法最大的问题是所谓的音乐噪声,这主要是由于噪声谱估计的不准确造成的,所以上图中有一个“Secondary processing”。后续的维纳滤波等方法虽然优于谱减法,但也无法彻底误差。判决引导DD方法利用上一帧降噪后的信息(先验信噪比的估计)与当前帧的后验信噪比联合判决,能有效的降低音乐噪声的影响,在维纳滤波里也有用到。上面这个框图差不多也是频域降噪的基本范式。
维纳滤波
【6】里有基本推导
MMSE&MMSE-LSA
来自于论文Speech enhancement using a minimum mean-square error short-time spectral amplitude estimator和Speech Enhancement Using a Minimum Mean-Square Error Log-Spectral Amplitude Estimator 。主要作者就是Yariv Ephraim。
OMLSA && IMCRA
Optimal Speech Enhancement Under Signal Presence Uncertainty Using Log-Spectral Amplitude Estimator 和
Noise Estimation by Minima Controlled Recursive Averaging for Robust Speech Enhancement两篇论文阐述的内容 ,好像这个是经典算法的集大成者。再【14】中博主的解释比较具体和详细。在OMLSA&IMCRA学习笔记中仔细的推导了一下这些公式,本文不再赘述。
神经的
神经网络简单粗暴,设定目标,设计模型,输入数据,拟合目标。下面主要参考翻译【4】的资料,一般根据训练目标的设计分为两个范畴:
mapping-based
训练目标是一种非线性表达,定义一个映射函数
F
F
F,将受噪语音
y
(
t
)
y(t)
y(t)变换为干净的语音
s
(
t
)
s(t)
s(t):
F
:
y
(
t
)
→
s
(
t
)
F:y(t)\rightarrow s(t)
F:y(t)→s(t)由于语音数据的非稳态特性以及计算复杂度的考量,目标的学习策略通常变换到频域或者倒谱域来实现,不过近年来随着神经网络的成熟,很多时域方法也提出来了,即所谓的end-to-end,不过传统的还是在变换域需求答案。神经网络利用损失(误差)函数来拟合出原始的干净信号,MSE目标(损失)函数一般定义如下:
J
=
1
N
∑
n
=
1
N
∣
∣
F
(
y
n
)
−
x
n
∣
∣
2
\mathcal{J}=\frac{1}{N}\sum_{n=1}^N||F(y_n)-x_n||^2
J=N1n=1∑N∣∣F(yn)−xn∣∣2很显然估计的干净信号为
x
n
^
=
F
(
y
n
)
\hat{x_n}=F(y_n)
xn^=F(yn),利用原始的受噪相位信息恢复信号
s
(
t
)
^
\hat{s(t)}
s(t)^简单的分类一下具体实现手段。
堆栈自编码器或者深度玻尔兹曼机
以堆叠自编码器为例,下图摘自 论文Deep Learning-Based Feature Representation and Its Application for Soft Sensor Modeling With Variable-Wise Weighted SAE,这个编码器很像全连接网络,大致上分为非线性编码阶段和一个线性解码阶段。
用公式来描述如下:
h
(
y
)
=
g
(
W
1
y
+
b
)
x
^
=
W
2
h
(
y
)
+
b
h(y)=g(W_1y+b)\\ \hat{x}=W_2h(y)+b
h(y)=g(W1y+b)x^=W2h(y)+b
一般
g
g
g是激活函数,
W
1
W_1
W1和
W
2
W_2
W2是编解码器的权重矩阵。
LSTM-RNN
无须赘述了,这种对上下文解析超强的网络势必会提升,虽然参考文章里没有提,但可以预见attention模型也会对此有非常大的帮助。
CNN和TCN
CNN的思想是将语谱图当成图像来分析,TCN的优势和LSTM类似,可能更有利于分析这种情景。
GAN
这个想法其实也来自与图像处理,generative network (G)和 discriminative network (D)组成的对抗结构也使得降噪水平全面优于经典的额维纳滤波器【4】
masking-based
训练目标是一种掩模(mask),这个来自于干净语音和受噪声污染的语音的计算。最早应该就是IBM(ideal binary masking”)了,简单的说就是时频T-F域对语音和噪声做归类,将被噪声污染的最严重的的时频单元mask掉。ideal的说法是遵循最早的定义,即分析干净的语音和加性噪声的时频能量(幅度);后来衍生为估算信噪比SNR【2】。那么后来有了soft mask,即IRM(ideal ratio masking),直观来说会比IBM更细粒度一点,但算法复杂度也会增加。其实IRM更像频域维纳滤波方法(利用先验信噪比得出的比例系数), masking-based的方法是要学习一个回归函数,这个函数将受噪声干扰的语音频谱映射成时频掩模。假设语音频谱为
Y
(
n
,
f
)
Y(n,f)
Y(n,f),时频掩模为
M
(
n
,
f
)
M(n,f)
M(n,f),映射函数可以表示成
F
:
Y
(
n
,
f
)
→
M
(
n
,
f
)
F:Y(n,f)\rightarrow M(n,f)
F:Y(n,f)→M(n,f)IBM的
M
(
n
,
f
)
M(n,f)
M(n,f)可以用
M
b
(
n
,
f
)
=
{
1
,
if SNR(
n
,
f
) > R
0
,
otherwise
M^b(n,f)= \begin{cases} 1, & \text {if \ SNR($n$, $f$) > R} \\ 0, &\text{otherwise} \end{cases}
Mb(n,f)={1,0,if SNR(n, f) > Rotherwise
IRM的
M
(
n
,
f
)
M(n,f)
M(n,f)可以用
M
r
(
n
,
f
)
=
S
α
(
n
,
f
)
S
α
(
n
,
f
)
+
N
α
(
n
,
f
)
M^r(n,f)=\frac{S^\alpha(n,f)}{S^\alpha(n,f)+N^\alpha(n,f)}
Mr(n,f)=Sα(n,f)+Nα(n,f)Sα(n,f)【4】中对
α
\alpha
α作为一个幅度缩放因子做了解释,这个因子的选择将影响掩模的尖锐度或者T-F时频特征的动态范围,并且典型的几个取值和经典的算法是相对应的,例如
α
=
1
\alpha=1
α=1是幅度掩模;
α
=
2
\alpha=2
α=2是功率掩模,这个算子就几乎变成了频域的维纳滤波【6】;而
α
=
2
/
3
\alpha=2/3
α=2/3被解释为听觉(auditory)掩模,暂时无处可考。
传统和现代的碰撞
经典的方法其实更像西医,其算法的可解释性(interpretability)、鲁棒性(robust)和自适应(adaptive)能力是非常大的优势,并且这种自适应是非监督的,这点非常重要。而神经网络有点像我们的中医,通常是基于大数据驱动的,虽然学习能力和性能上无与伦比,但因为往往是基于监督训练模型的,受制于训练数据的覆盖(不可能),不能放之四海皆准,而且可解释性(interpretability)一直被诟病,出了问题基本无法回溯和分析,最好的办法就是将fail的case重新训练,显然这种亡羊补牢的方法有的时候是不灵的。
中西医结合的方法
这里主要是根据维纳滤波器的算法推导结论【6】,下面再重写一下: H ( ω k ) = ξ k 1 + ξ k = 1 − 1 γ k H(\omega_k)=\frac{\xi_{k}}{1+\xi_{k}}=1-\frac{1}{\gamma_{k}} H(ωk)=1+ξkξk=1−γk1其实整个经典滤波都是围绕着获取准确的先验信噪比展开的。而从webrtc分析当中也可以看出,为了得出这个信噪比,绞尽脑汁想出了各种奇葩的算法,然而还是很难给出一劳永逸的办法,瞬态噪声依旧不给力,那么能不能将这个 ξ \xi ξ交给神经网络来处理,利用神经网络超强的拟合能力来破解这个难题呢?答案是肯定的,由此孕育除了非常多的好论文,大概是论文【8】开辟了这个新思想,后续的想法如雨后春笋的出来了,实测效果也非常不错。
参考文献
1. Isolating the energetic component of speech-on-speech maskingwith ideal time-frequency segregation
2.On Ideal Binary Mask As the Computational Goal of Auditory Scene Analysis
3.懷舊篇, 單通道降噪, MMSE-STSA, MMSE-LSA 方法
4.Deep Learning for Environmentally Robust SpeechRecognition: An Overview of Recent Developments
5.A Priori SNR Estimation Based on a Recurrent Neural Network for RobustSpeech Enhancement
6.webrtc中的噪声抑制之一:频域维纳滤波
7.Speech Enhancement Using a Mixture-Maximum Model
8.A Priori SNR Estimation Based on a Recurrent Neural Network for RobustSpeech Enhancement
9.Multi-objective Learning and Mask-based Post-processing for Deep NeuralNetwork based Speech Enhancement
10.PERCEPTUALLY GUIDED SPEECH ENHANCEMENT USING DEEP NEURAL NETWORKS
11.Binary and ratio time-frequency masks forrobust speech recognition
12.webrtc中的噪声抑制之三:基于信号存在概率的递归平均噪声估计
13.Comparison of Speech Enhancement Algorithms, Siddala Vihari,. U.V.C.E., Bangalore University, Bangalore, India
14.关于 IMCRA+OMLSA 语音降噪算法的详细解释