语音降噪-维纳滤波
维纳滤波原理
输入信号通过一个线性时不变系统之后产生一个输出信号,使得输出信号尽量逼近期望信号,使其估计误差最小化,能够最小化这个估计误差的最优滤波器称为维纳滤波器。
时频域维纳滤波器
假定输入信号
y
(
n
)
y(n)
y(n)和期望信号
d
(
n
)
d(n)
d(n),定义估计的误差信号为
e
(
n
)
e(n)
e(n)
e
(
n
)
=
d
(
n
)
−
d
^
(
n
)
=
d
(
n
)
−
h
T
y
e(n) = d(n) - \widehat{d}(n) \\=d(n) - \textbf{h}^T\textbf{y}
e(n)=d(n)−d
(n)=d(n)−hTy
其中
h
T
=
[
h
0
,
h
1
,
.
.
.
,
h
M
−
1
]
\textbf{h}^T=[h_0,h_1,...,h_{M-1}]
hT=[h0,h1,...,hM−1] 是滤波器系数向量,
y
T
=
[
h
n
,
h
n
−
1
,
.
.
.
,
h
n
−
M
+
1
]
\textbf{y}^T=[h_{n},h_{n-1},...,h_{n-M+1}]
yT=[hn,hn−1,...,hn−M+1]是输入向量。最小化
e
(
n
)
e(n)
e(n)的均方值,
J
=
E
[
e
2
(
n
)
]
=
E
(
d
(
n
)
−
h
T
y
)
2
=
E
[
d
2
(
n
)
]
+
h
T
E
[
y
y
T
]
h
−
2
h
T
E
[
d
(
n
)
y
]
=
E
[
d
2
(
n
)
]
+
h
T
R
y
y
h
−
2
h
T
r
y
d
J = E{[e^2(n)]}=E(d(n) - \mathbf{h}^T\mathbf{y})^2 \\=E{[d^2(n)]} + \mathbf{h}^TE[\mathbf{y}\mathbf{y}^T]\mathbf{h} - 2\mathbf{h}^TE{[d(n)\mathbf{y}]} \\=E{[d^2(n)]} + \mathbf{h}^TR_{yy}\mathbf{h} - 2\mathbf{h}^Tr_{\mathbf{y}d}
J=E[e2(n)]=E(d(n)−hTy)2=E[d2(n)]+hTE[yyT]h−2hTE[d(n)y]=E[d2(n)]+hTRyyh−2hTryd
其中
r
y
d
r_{\textbf{y}d}
ryd是输入和期望信号的互协方差矩阵,
R
y
y
R_{yy}
Ryy 是输入信号的自协方差矩阵。
利用矩阵求导原理,求
J
J
J对向量
h
h
h的导数,得:
∂
J
∂
h
=
−
2
r
y
d
+
2
h
T
R
\frac{\partial J}{\partial \mathbf{h}} = -2 r_{\mathbf{y}d} + 2\mathbf{h}^TR
∂h∂J=−2ryd+2hTR
另导数为0,求得
h
∗
=
R
−
1
r
y
d
h^{*} = R^{-1}r_{\mathbf{y}d}
h∗=R−1ryd
频域维纳滤波器
利用时域卷积等价于频域相乘的性质,可以得到误差的频域表达式为
E
(
w
k
)
=
D
(
w
k
)
−
D
^
(
w
k
)
=
D
(
w
k
)
−
H
(
w
k
)
Y
(
w
k
)
E(w_k) = D(w_k) - \widehat{D}(w_k) \\= D(w_k) - H(w_k) Y(w_k)
E(wk)=D(wk)−D
(wk)=D(wk)−H(wk)Y(wk)
按照时域维纳滤波器一样的推导方式,可以得到最优维纳滤波器的频域表达式为
H
(
w
k
)
=
P
d
y
(
w
k
)
P
y
y
(
w
k
)
H(w_k) = \frac{P_{dy}(w_k)}{P_{yy}(w_k)}
H(wk)=Pyy(wk)Pdy(wk)
其中
P
d
y
P_{dy}
Pdy 是
y
(
n
)
y(n)
y(n)和
d
(
n
)
d(n)
d(n)的互功率谱,
P
y
y
P_{yy}
Pyy 是
y
(
n
)
y(n)
y(n)的功率谱。
语音降噪
在语音降噪中,一般假设输入信号
y
(
n
)
y(n)
y(n)由干净语音
x
(
n
)
x(n)
x(n)和噪声信号
n
(
n
)
n(n)
n(n)组成,
y
(
n
)
=
x
(
n
)
+
n
(
n
)
y(n) = x(n) + n(n)
y(n)=x(n)+n(n)
且假设噪声和语音不相关。
利用维纳滤波方法降噪时需要计算
R
y
y
R_{yy}
Ryy或者
P
y
y
P_{yy}
Pyy,由于假设噪声和语音不相关,则
R
y
y
=
R
x
x
+
R
n
n
P
y
y
=
P
x
x
+
P
n
n
R
y
x
=
R
x
x
P
y
x
=
P
x
x
R_{yy} = R_{xx} + R_{nn} \\P_{yy} = P_{xx} + P_{nn}\\R_{yx} = R_{xx} \\ P_{yx} = P_{xx}
Ryy=Rxx+RnnPyy=Pxx+PnnRyx=RxxPyx=Pxx
最优的时频域滤波器估计可以分别表示为:
H
(
w
k
)
=
P
x
x
(
w
k
)
P
x
x
(
w
k
)
+
P
n
n
(
w
k
)
H(w_{k}) = \frac{P_{xx}(w_k)}{P_{xx}(w_k) + P_{nn}(w_k)}
H(wk)=Pxx(wk)+Pnn(wk)Pxx(wk)
h
=
R
x
x
R
x
x
+
R
n
n
\mathbf{h} = \frac{R_{xx}}{R_{xx} + R_{nn}}
h=Rxx+RnnRxx