语音增强算法——谱减法

谱减法

  • 一、谱减法的发展
    • 二、谱减法算法介绍
      • 传统的谱减法
      • 改进的谱减法
    • 三、谱减法的算法实现

一、谱减法的发展

Boll等人与1979年提出谱减法,在假设噪声是平稳的且原始语音和噪声不相关的前提下,谱减法能够有效地进行语音增强,而且具有运算量小、实时性好和增强效果显著的特点。但谱减法也存在一定的缺陷,使用谱减法进行语音增强会产生音乐噪声,而且音乐噪声不能通过再次利用频谱减法来消除。为了改善音乐噪声的问题并提升增强效果,很多研究者提出了改进的谱减法。Ephraim等人将谱减法与最小均方误差法相结合,提高了语音增强的效果。Berouti提出了一个重要的改进方案即对噪声功率谱的参数进行了改进,使得语音增强能力得到提升,然而参数的改进需要经验的积累,存在一定的局限性。国内也有学者提出对谱减法的改进和优化,如林琴等人在改进的谱减法基础上,设定参数去除在无声或有声期间的偶然噪声。邓利娜,黄晓革提出了谱减法与LMS滤波相结合的语音增强算法,根据人耳的特性对信号进行滤波,在很好地去除噪声的同时有效抑制了音乐噪声,取得了不错的效果。

二、谱减法算法介绍

传统的谱减法

带噪语音模型
y ( t ) = x ( t ) + n ( t ) y(t) = x(t) + n(t) y(t)=x(t)+n(t)

其中 y ( t ) y(t) y(t)表示带噪语音, x ( t ) x(t) x(t)表示纯净语音信号, n ( t ) n(t) n(t)表示噪声信号。将上式进行傅里叶变换(FFT)后就可以得到加性噪声模型的频域表达式。
Y ( k ) = X ( k ) + N ( k ) Y(k)=X(k)+N(k) Y(k)=X(k)+N(k)对于传统的无监督语音增强算法,会假设纯净语音信号与噪声信号是相互独立不相关的,即 X ( k ) X(k) X(k) N ( k ) N(k) N(k)相互独立。将上式两端平方可得:
Y ( k ) 2 = X ( k ) 2 + N ( k ) 2 + 2 R e [ X k N k ∗ ] Y(k)^2=X(k)^2+N(k)^2+2Re[X_kN_k^*] Y(k)2=X(k)2+N(k)2+2Re[XkNk]简化一下可得:
∣ Y ( k ) ∣ 2 = ∣ X ( k ) ∣ 2 + ∣ N ( k ) ∣ 2 |Y(k)|^2=|X(k)|^2+|N(k)|^2 Y(k)2=X(k)2+N(k)2通过在“静默期”估计的噪声估计值,就可以估计纯净语音。 ∣ S k ∣ = [ ∣ Y k ∣ 2 − ∣ N k ∣ 2 ] 1 / 2 |S_k|=[|Y_k|^2-|N_k|^2]^{1/2} Sk=[Yk2Nk2]1/2

改进的谱减法

引入两个参数: a a a b b b
S k ∣ = [ ∣ Y k ∣ a − b ∣ N k ∣ a ] 1 / a S_k|=[|Y_k|^a-b|N_k|^a]^{1/a} Sk=[YkabNka]1/a一般: a = 2 a=2 a=2 b > 1 b>1 b>1
除了引入参数的方法还有谱减法与LMS滤波相结合的方法,这里不再进行介绍。

三、谱减法的算法实现

定义谱减法的函数:
在这里插入图片描述
使用汉宁窗进行分帧,并进行傅里叶变换:
在这里插入图片描述
在语音的前几帧估计噪声:
在这里插入图片描述
得到噪声估计值以后便可以进行谱减操作:
在这里插入图片描述
最后对语音进行相位还原即可得到谱减法处理后的增强语音。
增强后的语音我们可以通过计算snr或pesq来进行分析谱减法语音增强性能及语音质量高低。
语音增强算法——谱减法_第1张图片
pesq语音质量评估算法可以在我上传的资源中获取。需要完整的代码可以私聊我。

你可能感兴趣的:(python,语音增强)