假设
假设噪声和语音是加性的,噪声是平稳的(缓慢变换的),
基本原理
利用语音幅度减去估计出来的噪声幅度得到降噪后的语音幅度,相位使用带噪语音的相位。假定带噪语音
y
(
n
)
y(n)
y(n),纯净语音
x
(
n
)
x(n)
x(n),加性噪声
d
(
n
)
d(n)
d(n),即:
y
(
n
)
=
x
(
n
)
+
d
(
n
)
y(n)=x(n) + d(n)
y(n)=x(n)+d(n)
做傅里叶变换后:
Y
(
w
)
=
X
(
w
)
+
D
(
w
)
Y(w)=X(w) + D(w)
Y(w)=X(w)+D(w)
带噪语音写成极坐标形式为:
Y
(
w
)
=
∣
Y
(
w
)
∣
e
j
ϕ
y
(
w
)
Y(w)=|Y(w)| e^{j{\phi}_{y}(w)}
Y(w)=∣Y(w)∣ejϕy(w)
其中
n
n
n 代表采样点,
w
w
w 代表频率,
∣
Y
(
w
)
∣
|Y(w)|
∣Y(w)∣ 代表幅度谱,
ϕ
y
(
w
)
\phi_{y}(w)
ϕy(w) 代表带噪语音的相位。
幅度谱减法
假设估计的噪声的幅度谱为
D
^
(
w
)
\widehat{D}(w)
D
(w),则降噪后的语音信号谱可以表示为:
X
^
(
w
)
=
(
∣
Y
(
w
)
∣
−
∣
D
^
(
w
)
∣
)
e
j
ϕ
y
(
w
)
\widehat{X}(w)=(|Y(w)| - |\widehat{D}(w)| )e^{j{\phi}_{y}(w)}
X
(w)=(∣Y(w)∣−∣D
(w)∣)ejϕy(w)
信号的幅度谱总是非负的,因此要做一下保护,即
∣
X
^
(
w
)
∣
=
{
∣
Y
(
w
)
∣
>
D
^
(
w
)
∣
,
如果
∣
Y
(
w
)
∣
>
D
^
(
w
)
∣
0
,
其它
|\widehat{X}(w)| =\begin{cases} & |Y(w)| > \widehat{D}(w)| , \text{如果} |Y(w)| > \widehat{D}(w)|\\ & 0, \text{其它} \end{cases}
∣X
(w)∣={∣Y(w)∣>D
(w)∣,如果∣Y(w)∣>D
(w)∣0,其它
功率谱减法
通过假设噪声和语音不相关,语音是短时平稳(语音是非平稳的,当逐帧(10ms-30ms)处理时可以假设是短时平稳的),幅度谱减法可以扩展到功率谱领域,即:
∣
X
^
(
w
)
∣
2
=
{
∣
Y
(
w
)
∣
2
>
∣
D
^
(
w
)
∣
2
,
如果
∣
Y
(
w
)
∣
2
>
D
^
(
w
)
∣
2
0
,
其它
|\widehat{X}(w)|^2 =\begin{cases} & |Y(w)|^2 > |\widehat{D}(w)|^2 , \text{如果} |Y(w)|^2 > \widehat{D}(w)|^2\\ & 0, \text{其它} \end{cases}
∣X
(w)∣2={∣Y(w)∣2>∣D
(w)∣2,如果∣Y(w)∣2>D
(w)∣20,其它
上式也可以写成如下形式:
∣
X
^
(
w
)
∣
2
=
∣
H
(
w
)
∣
2
∣
Y
(
w
)
∣
2
|\widehat{X}(w)|^2=|H(w)|^2 |Y(w)|^2
∣X
(w)∣2=∣H(w)∣2∣Y(w)∣2
其中,
H
(
w
)
=
(
1
−
∣
D
^
(
w
)
∣
2
∣
Y
(
w
)
∣
2
)
H(w)=(1 -\frac{|\widehat{D}(w)|^2}{|Y(w)|^2})
H(w)=(1−∣Y(w)∣2∣D
(w)∣2)
H
(
w
)
H(w)
H(w)代表抑制函数,
0
≤
H
(
w
)
≤
1
0 \leq H(w) \leq 1
0≤H(w)≤1。
谱减法通用形式
通用形式可以表示为:
∣
X
^
(
w
)
∣
p
=
∣
Y
(
w
)
∣
p
−
∣
D
^
(
w
)
∣
p
|\widehat{X}(w)|^p=|Y(w)|^p - |\widehat{D}(w)|^p
∣X
(w)∣p=∣Y(w)∣p−∣D
(w)∣p
其中
p
p
p 是幂指数,
p
p
p = 1时为幅度谱减法,
p
p
p = 2时为功率谱减法。
谱减法存在的问题
1、相位信息使用的是带噪语音的相位
语音信号经过傅里叶变换后由实数域转换为复数域,降噪时只考虑了幅度值,忽略了相位信息,在不同的信噪比情况下,误差表现不一样。
上面两个图分别是高信噪比和低信噪比时的示意图,高信噪比时,误差小,低信噪比时,误差大。研究表明,当信噪比大于8dB时,相位差不会被感知到。
2、音乐噪声
由于估计的干净语音的幅度要大于等于0,存在半波整流的保护操作,这种非线性处理会导致频谱上存在独立的峰值,转换到时域后,听起来就是随机变化的多频音。
程序
参考链接:SpecSub Code