语音降噪-维纳滤波
語音降噪-維納濾波
- 維納濾波原理
- 時頻域維納濾波器
- 頻域維納濾波器
- 語音降噪
維納濾波原理
輸入信號通過一個線性時不變系統之后產生一個輸出信號,使得輸出信號盡量逼近期望信號,使其估計誤差最小化,能夠最小化這個估計誤差的最優濾波器稱為維納濾波器。
時頻域維納濾波器
假定輸入信號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)?hTye(n) = d(n) - \widehatozvdkddzhkzd(n) \\=d(n) - \textbf{h}^T\textbf{y} e(n)=d(n)?d(n)=d(n)?hTy
其中hT=[h0,h1,...,hM?1]\textbf{h}^T=[h_0,h_1,...,h_{M-1}]hT=[h0?,h1?,...,hM?1?] 是濾波器系數向量,yT=[hn,hn?1,...,hn?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[e2(n)]=E(d(n)?hTy)2=E[d2(n)]+hTE[yyT]h?2hTE[d(n)y]=E[d2(n)]+hTRyyh?2hTrydJ = 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)]+hTRyy?h?2hTryd?
其中rydr_{\textbf{y}d}ryd?是輸入和期望信號的互協方差矩陣,RyyR_{yy}Ryy? 是輸入信號的自協方差矩陣。
利用矩陣求導原理,求JJJ對向量hhh的導數,得:
?J?h=?2ryd+2hTR\frac{\partial J}{\partial \mathbf{h}} = -2 r_{\mathbf{y}d} + 2\mathbf{h}^TR?h?J?=?2ryd?+2hTR
另導數為0,求得h?=R?1rydh^{*} = R^{-1}r_{\mathbf{y}d}h?=R?1ryd?
頻域維納濾波器
利用時域卷積等價于頻域相乘的性質,可以得到誤差的頻域表達式為
E(wk)=D(wk)?D^(wk)=D(wk)?H(wk)Y(wk)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(wk)=Pdy(wk)Pyy(wk)H(w_k) = \frac{P_{dy}(w_k)}{P_{yy}(w_k)}H(wk?)=Pyy?(wk?)Pdy?(wk?)?
其中PdyP_{dy}Pdy? 是y(n)y(n)y(n)和d(n)d(n)d(n)的互功率譜,PyyP_{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)
且假設噪聲和語音不相關。
利用維納濾波方法降噪時需要計算RyyR_{yy}Ryy?或者PyyP_{yy}Pyy?,由于假設噪聲和語音不相關,則
Ryy=Rxx+RnnPyy=Pxx+PnnRyx=RxxPyx=PxxR_{yy} = R_{xx} + R_{nn} \\P_{yy} = P_{xx} + P_{nn}\\R_{yx} = R_{xx} \\ P_{yx} = P_{xx}Ryy?=Rxx?+Rnn?Pyy?=Pxx?+Pnn?Ryx?=Rxx?Pyx?=Pxx?
最優的時頻域濾波器估計可以分別表示為:
H(wk)=Pxx(wk)Pxx(wk)+Pnn(wk)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=RxxRxx+Rnn\mathbf{h} = \frac{R_{xx}}{R_{xx} + R_{nn}}h=Rxx?+Rnn?Rxx??
總結
- 上一篇: 哈希第三方头文件uthash的使用
- 下一篇: 8000401a错误解决方式(Excel