精华内容
下载资源
问答
  • 针对噪声的随机性和突变性,使得传统算法抑制非平稳噪声比抑制平稳噪声难度增大的问题,提出了一种基于深度神经网络的子空间语音增强算法。该算法利用带噪的语音信号数据训练一组深度神经网络语音生成型模型(DNN训练...
  • 几种常用语音增强算法的研究,吴晓宇,,语音增强算法是语音信号处理领域一个重要分支,它通过对语音信号进行预处理,抑制或消除背景噪声,提高语音质量。本文介绍了谱减
  • 一个关于语音增强算法的代码-语音增强源码.zip 本代码来自pudn,可以给做毕设的给位同仁们提供参考,直接打开main就行了。
  • 基于卡尔曼滤波的语音增强算法
  • 变换域语音增强算法的研究_欧世峰,博士论文,主要研究语音增强在变换域的算法
  • 基于卡尔曼滤波的语音增强算法matlab仿真
  • 针对传统软、硬阈值函数去噪方法增强的语音存在失真的问题, 提出一种新阈值函数的小波包语音增强算法, 同时给出了新阈值函数和新的Bark尺度小波包分解结构。新阈值函数在小波包系数绝对值大于给定阈值的区间内, 灵活...
  • 基于小波变换语音增强算法的Matlab仿真.pdf
  • 改进最大信噪比的独立成分分析单通道语音增强算法
  • 本文提出了一种基于麦克风阵列进行移动声源方向跟踪和噪声消除的联合算法,该方法利用两个平行滤波器组构成梯度迭代的移动声源方向跟踪器,并将该声源跟踪器嵌入广义旁瓣抵消器结构中从而进行声源方向梯度迭代跟踪和...
  • 语音增强算法

    2014-12-23 17:02:10
    语音增强算法,谱减法、小波变换以及数学形态学等的语音增强算法针对信噪比、语谱图、去噪情况,分析比较
  • 在基于先验信噪比的维纳滤波语音增强算法的基础上,结合语音端点检测算法,本文提出一种新算法。新算法在语音端点检测的基础上,通过平滑处理更新噪声信号功率谱以适应噪声不稳定的环境;通过计算有声段噪声信号估计...
  • 一个语音增强的谱减法程序,MATLAB写的,对于研究语音信号处理的人有用
  • 小波包有着十分广泛的应用,可以用小波包去噪,还可以分析
  • 提出一种基于GSC的语音增强算法,该算法应用了DFT调制子带滤波器组将语音信号分解到子带进行自适应滤波,从而获得更好的增强效果以及更低的运量复杂度。同时,将范数约束自适应滤波(NCAF)算法应用于自适应噪声对消...
  • 维普资讯 http://doc.docsou.com文章编号:0 2 8 8 (o 7 0 - 0 4 0 10—6 4 2 o )1 0 4 - 3基于维纳滤波语音增强算法的改进实现白文雅,黄健群,陈智伶。论文(.石家庄军械工程学院光学与电子工程系,河北石家庄 0 0 ...

    通过对维纳滤波的介绍,实现了基本维纳滤波效果;利用两级维纳滤波和两级滤波器组滤波方法实现了语音增强,达到了良好的效果。

    维普资讯 http://doc.docsou.com

    文章编号:0 2 8 8 (o 7 0 - 0 4 0 10—6 4 2 o )1 0 4 - 3

    基于维纳滤波语音增强算法的改进实现

    白文雅,黄健群,陈智伶。

    论文

    (.石家庄军械工程学院光学与电子工程系,河北石家庄 0 0 0;2 1 50 3 .武汉士官学校,湖北武汉 4 0 7 ) 3 0 5

    【要】通过对维纳滤波的介绍,摘实现了基本维纳滤波效果;利用两级维纳滤波和两级滤波器组滤波方法实现了

    语音增强,到了良好的效果。达

    【关键词】维纳滤波;语音增强;两级维纳滤波;两级滤波嚣组滤波【中图分类号】T 1 .5 Ng 23【文献标识码】A

    I p o e aiain o e c h n e e tAlo i m sd o in r Fle i m r v d Re l to fSp e h En a c m n g rt z h Ba e n W e e i rng t

    BAIW e— a, HUANG Ja— u n y in q n,CHEN Z i l g h—i n

    (. e a m n fO t a a dEet ncE gne n,S iah a gO d ac n ier gC l g,S iah ag0 0 0,C ia 1 D pr e t pi l n l r i n ier g h i u n rn neE gne n oee h i un 50 3 hn; t o c co i jz i l jz

    2 .Wu a d a c h n Orn n e NON— o c mmiso e f e a e L sin d Ofc rAc d my P A,Wu a 3 0 5,C ia i hn 4 07 hn )

    【 src】T e p n il fWi e l r g ae it d cd ad t ai e eto inrft n s razd Abtat h r c e o e r ft i r nr u e n h bs f c fwe e l r g i ele . i ps n i en o e c ie i i

    T ru h fr e w - tg in rf trn d t o s g l r b n l rn, te p e h e h n e n s raie ho【 ut rt o sa e W e e l i g a g h i e n w - t e f t a k fti g a i e ie h se c n a c me ti l d e z

    a d t e e e ti aif i g n h f c s s t yn . s

    【 y wod

    】Winrftr g sec n acm n;tosaeWi e lr g w -t eWi e l r akft n Kg rs ee l i; pehe hn e et w - g e rft n;tos g e rft n l r g i en t n ie i a n ieb ie i

    1引言

    在许多场合下采集的语音都会不可避免地混入噪声,这常常使接收语音的可懂度和清晰度受到严重损伤。在语音识别系统中噪声将使识别率迅速下降, 因为此时从语音信号提取出来的参数被噪声干扰而发生了变化。即使信噪比 S R高达 2 B, N Od一些语音

    的共振峰却已经消失于噪声中,因此研究如何将“干

    加特性,即

    S( )S( )S ( ) = + ( 2)

    基于短时傅里叶变换 (h a Tm or rTa s S o i e Fu e rn— i

    f m,T T分析, o SF ) r短时信号段可表示为

    () (£ n[ n+ ( ) n= p一 ) ()6 n] 其中£是帧长, P是整数。频域表示为 () 3

    l P ) (L )B p, , L,= p,+ (L ) (

    () 4

    净”音从语音和噪声的混合体中提取出来是十分语

    必要的。迄今已有一些有效的技术被用于此领域来减小噪声,如谱抽取、谐波分析技术和自回归滑动平均

    ( uo R ges e a d oig A eae A M模型 A t- ers v n M v vrg, R A) i n

    其中 X(L 0)B(L ) l(L,分别是目标信号 p,, p,和, ) 9 p ( )背景噪声 b n和观测信号 Y n的短时傅里叶 n, () ()变换,它们是以£为帧间隔计算得到的,因此 y n的 ()

    SF T T幅度平方为

    等,维纳 ( ee)而 Wi r滤波器法也是语音增强的有效方 n

    法之一。

    p 0 l l (L0 Bp 0 I l (, )=X p, ) l (, )+ Y L 9 9 L 9

    (, ) p ) p 0 B(L,+ 9 (L, ) (L, ) p B p () 5

    2维纳滤波的原理…

    假设’n表示离散时间的含噪序列,, ) (则

    'n= n+ (), ) ( ) 6 n ( () 1

    式( ) 5的目标是得到 l (L )‘ p, l。从加性噪声

    b n干扰的序列中恢复目标信号 ( )一种方法是寻 () n,找一个线性滤波

    器 h n,得通过滤波操作后的序列 ( )使 () () ( ) n n *h凡达到[凡一 ( )。 ( ) n]的最小期望值,这

    就是维纳滤波( ee l r g的原理。 Winrft i ) i en维纳滤波的关

    其中, n为所需要的信号, ( )也称作“目标信号”6 n;()

    为背景噪声。假设 x n和 b n是广义平稳的不相关随 ( ) ()

    机序列,它们的功率谱密度分别是 S ( ) S (。 和 )

    种恢复目标信号 (,的方法就是利用功率谱的相// )

    【基金项目】总装备部科研预研项目

    键是构建一个线性滤波器 h n, ( )使通过滤波后的信号

    匡垒基生盎塑 曼耋基簋

    1-2059-png_6_0_0_0_0_887_1211_887.039_1211.759-1508-0-0-1508.jpg

    展开全文
  • 语音增强算法——谱减法

    千次阅读 2020-06-02 07:01:28
    邓利娜,黄晓革提出了谱减法与LMS滤波相结合的语音增强算法,根据人耳的特性对信号进行滤波,在很好地去除噪声的同时有效抑制了音乐噪声,取得了不错的效果。 二、谱减法算法介绍 传统的谱减法 带噪语音模型: y(t)=...

    一、谱减法的发展

    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来进行分析谱减法语音增强性能及语音质量高低。
    在这里插入图片描述
    pesq语音质量评估算法可以在我上传的资源中获取。需要完整的代码可以私聊我。

    展开全文
  • 语音信号处理 | 基于卡尔曼滤波的语音增强算法

    千次阅读 多人点赞 2020-05-09 21:24:17
    语音增强算法可从信号输入的通道数上分为单通道的语音增强算法与多通道的语音增强算法。单通道语音系统在实际应用中较为常见,如电话,手机等。这种情况下语音与噪声同时存在一个通道中 ,语音信息与噪声信息必须从...

    1.概述

    语音增强算法可从信号输入的通道数上分为单通道的语音增强算法与多通道的语音增强算法。单通道语音系统在实际应用中较为常见,如电话,手机等。这种情况下语音与噪声同时存在一个通道中 ,语音信息与噪声信息必须从同一个信号中得出。一般这种语音系统要求噪声比较平稳,以便在非语音段对噪声进行估计,再依据估计出来的噪声对带噪的语音段进行处理。如果系统是一个多通道的语音系统,各个通道之间存在着某些相关的特性,这些相关特性对语音增强的处理十分有利。

    单通道语音增强是语音增强的基础,本文将重点研究和实现卡尔曼滤波器,并用于语音增强领域。

    2.卡尔曼滤波原理

    维纳滤波和卡尔曼滤波都是最小均方误差意义下的最优估计。但是维纳滤波只能在平稳条件的约束下。卡尔曼滤波突破了经典维纳滤波方法的局限性,在非平稳状态下也可以保证最小均方误差估计。在卡尔曼滤波中,引入了系统状态变量和状态空间概念。从状态空间的观点看,状态比信号更广泛、更灵活,非常适合处理多变量系统。卡尔曼滤波器给出了一套在计算机上容易实时实现的最优递推滤波算法,适合处理多变量系统、时变系统和非平稳随机过程,获得了广泛的实际应用,其应用领域包括机器人导航、控制、传感器数据融合甚至包括军事方面的雷达系统以及导弹追踪等。

    本节中以下内容参考:http://www.cs.unc.edu/~welch/kalman/

    被估计的信号

    卡尔曼滤波器用于估计离散时间过程的状态变量 x ∈ ℜ n x\in ℜ^n xn。这个离散时间过程由以下离散随机差分方程描述:
    x k = A x k − 1 + B u k − 1 + w k − 1 (1) x_k=Ax_{k-1}+Bu_{k-1}+w_{k-1}\tag{1} xk=Axk1+Buk1+wk1(1)
    定义观测变量 z ∈ ℜ m z \in ℜ^m zm,得到观测方程:
    z k = H x k + v k (2) z_k=Hx_k+v_k\tag{2} zk=Hxk+vk(2)
    随机信号 w k w_k wk v k v_k vk分别表示过程激励噪声和观测噪声。假设它们为相互独立,正态分布的白色噪声:
    p ( w ) ∼ N ( 0 , Q ) (3) p(w)\sim N(0,Q)\tag{3} p(w)N(0,Q)(3)

    p ( v ) ∼ N ( 0 , R ) (4) p(v)\sim N(0,R)\tag{4} p(v)N(0,R)(4)

    实际系统中,过程激励噪声协方差矩阵 Q Q Q和观测噪声协方差矩阵 R R R可能随着每次迭代计算而变化。但在这假设他们为常数。

    当控制函数 u k − 1 u_{k−1} uk1或过程激励噪声 w k − 1 w_{k−1} wk1为零时,差分方程(1)中的 n × n n\times n n×n阶增益矩阵 A A A将过去 k − 1 k−1 k1时刻状态和现在的 k k k时刻状态联系起来。实际中 A A A可能随时间变化,但在这儿假设为常数。 n × l n\times l n×l阶矩阵 B B B代表可选的控制输入 u ∈ ℜ l u \in ℜ^l ul的增益。观测方程(2)中的 m × n m\times n m×n阶矩阵 H H H表示状态变量 x k x_k xk对观测变量 z k z_k zk的增益。实际中 H H H可能随时间变化,但在这假设为常数。

    定义 x ^ k − ∈ ℜ n \hat{x}_k^- \in ℜ^n x^kn( − ^- 代表先验, ^ \hat{} ^代表估计)为在已知第 k k k步之前状态的情况下第 k k k步的先验状态估计。定义 x ^ k ∈ ℜ n \hat{x}_k \in ℜ^n x^kn为已知观测变量 z k z_k zk时第 k k k步的后验状态估计。由此定义先验估计误差和后验估计误差:
    e k − ≡ x k − x ^ k − e_k^- \equiv x_k-\hat{x}_k^- ekxkx^k

    e k ≡ x k − x ^ k e_k \equiv x_k-\hat{x}_k ekxkx^k

    先验估计误差的协方差为:
    P k − = E [ e k − e k − T ] (5) P_k^-=E[e_k^-{e_k^-}^T]\tag{5} Pk=E[ekekT](5)
    后验估计误差的协方差为:
    P k = E [ e k e k T ] (6) P_k=E[e_k{e_k}^T]\tag{6} Pk=E[ekekT](6)
    式(7)构造了卡尔曼滤波器的表达式:先验估计 x ^ k − \hat{x}_k^- x^k和加权的观测变量 z k z_k zk及其预测 H x ^ k − H\hat{x}_k^- Hx^k之差的线性组合构成了后验状态估计 x ^ k \hat{x}_k x^k
    x ^ k = x ^ k − + K ( z k − H x ^ k − ) (7) \hat{x}_k=\hat{x}_k^-+K(z_k-H\hat{x}_k^-)\tag{7} x^k=x^k+K(zkHx^k)(7)
    式(7)中观测变量及其预测之差( z k − H x ^ k − z_k-H\hat{x}_k^- zkHx^k)被称为观测过程的残差。残差反映了预测值和实际值之间的不一致程度。

    式(7)中 n × m n\times m n×m阶矩阵 K K K叫做卡尔曼增益,作用是使式(6)中的后验估计误差协方差最小。 K K K的一种表示形式为:
    K k = P k − H T ( H P k − H T + R ) − 1 (8) K_k=P_k^-H^T(HP_k^-H^T+R)^{-1}\tag{8} Kk=PkHT(HPkHT+R)1(8)

    离散卡尔曼滤波算法

    接下来介绍离散卡尔曼滤波算法。卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计。测量更新方程负责反馈――也就是说,它将先验估计和新的测量变量结合以构造改进的后验估计。时间更新方程也可视为预估方程,测量更新方程可视为校正方程。最后的估计算法成为一种具有数值解的预估-校正算法,如下图所示:

    在这里插入图片描述

    时间更新方程为:
    x ^ k − = A x ^ k − 1 + B u k − 1 (9) \hat{x}_k^-=A\hat{x}_{k-1}+Bu_{k-1}\tag{9} x^k=Ax^k1+Buk1(9)

    P k − = A P k − 1 A T + Q (10) P_k^- = AP_{k-1}A^T+Q\tag{10} Pk=APk1AT+Q(10)

    状态更新方程为:
    K k = P k − H T ( H P k − H T + R ) − 1 (11) K_k=P_k^-H^T(HP_k^-H^T+R)^{-1}\tag{11} Kk=PkHT(HPkHT+R)1(11)

    x ^ k = x ^ k − + K k ( z k − H x ^ k − ) (12) \hat{x}_k=\hat{x}_k^-+K_k(z_k-H\hat{x}_k^-)\tag{12} x^k=x^k+Kk(zkHx^k)(12)

    P k = ( I − K k H ) P k − (13) P_k=(I-K_kH)P_k^-\tag{13} Pk=(IKkH)Pk(13)

    卡尔曼滤波器工作原理图如下:

    在这里插入图片描述

    参数选择

    一般卡尔曼滤波器只需要调整三个参数过程激励噪声协方差 Q Q Q和观测噪声协方差 R R R,其中过程激励噪声协方差 Q Q Q可表示对模型的信任程度, Q Q Q越小,信任程度越高;观测噪声协方差 R R R可表示对观测信息的信任程度, R R R越小,信任程度越高。

    参考网址:https://zhuanlan.zhihu.com/p/37750839

    3.基于卡尔曼滤波的语音增强算法

    语音模型分析

    考虑纯净语音:
    x ( k ) = s ( k ) + G w ( k ) x(k)=s(k)+Gw(k) x(k)=s(k)+Gw(k)
    上式可表述成一个被白噪声驱动的全极点线性系统输出自递归的过程,其p阶AR模型为:
    x ( k ) = ∑ i = 1 p a i ( k ) x ( k − i ) + w ( k ) x(k)=\sum_{i=1}^pa_i(k)x(k-i)+w(k) x(k)=i=1pai(k)x(ki)+w(k)
    其中, a i ( k ) , i = 1 , … , q a_i(k),i=1,\dots ,q ai(k),i=1,,q是模型的系数, w ( k ) w(k) w(k)是方差为 σ w 2 \sigma _w^2 σw2和的零均值白噪声过程, p p p是模型的阶次。

    考虑加性环境背景噪声构成的含噪语音信号:
    y ( k ) = x ( k ) + v ( k ) y(k)=x(k)+v(k) y(k)=x(k)+v(k)
    其中, v ( k ) v(k) v(k)是方差为 σ v 2 \sigma _v^2 σv2和的零均值白噪声过程。

    将上述模型表示为状态空间形式:
    X ( k ) = A X ( k − 1 ) + G w ( k ) y ( k ) = H X ( k ) + v ( k ) X(k) = AX(k-1)+Gw(k)\\y(k)=HX(k)+v(k) X(k)=AX(k1)+Gw(k)y(k)=HX(k)+v(k)
    其中
    X ( k ) = [ x ( k − p + 1 ) , x ( k − p + 2 ) , ⋯   , x ( k ) ] T X(k)=[x(k-p+1),x(k-p+2),\cdots ,x(k)]^T X(k)=[x(kp+1),x(kp+2),,x(k)]T

    H = G T = [ 0 , 0 , ⋯   , 1 ] 1 × p H=G^T=[0,0,\cdots,1]_{1\times p} H=GT=[0,0,,1]1×p

    A ( k ) = [ 0 1 ⋯ 0 ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 1 a p ( k ) a p − 1 ( k ) ⋯ a 1 ( k ) ] p × p A(k)=\begin{bmatrix} 0&1&\cdots &0\\ \vdots&\vdots&\vdots&\vdots\\ 0&0&\cdots &1\\ a_p(k)&a_{p-1}(k)&\cdots &a_1(k) \end{bmatrix}_{p\times p} A(k)=00ap(k)10ap1(k)01a1(k)p×p

    上述状态空间形式中, X ( k ) X(k) X(k) k k k时刻的状态变量, y ( k ) y(k) y(k) k k k时刻的对语音信号的观测值, A A A为状态转移矩阵, H H H为观测系统的参数, w ( k ) w(k) w(k)为过程噪声, v ( k ) v(k) v(k)为观测噪声。

    当系统参数已知时,由式 ( 9 ) ( 10 ) ( 11 ) ( 12 ) ( 13 ) (9)(10)(11)(12)(13) (9)(10)(11)(12)(13)可得系统的状态估计:
    { X ^ − ( k ) = A X ^ ( k − 1 ) P − ( k ) = A P ( k − 1 ) A T + G Q G T K ( k ) = P − ( k ) H T ( H P − ( k ) H T + R ) − 1 X ^ ( k ) = X ^ − ( k ) + K ( k ) ( y ( k ) − H X ^ − ( k ) ) P ( k ) = ( I − K ( k ) H ) P − ( k ) \begin{cases} \hat{X}^-(k)=A\hat{X}(k-1)\\ P^-(k) = AP(k-1)A^T+GQG^T\\ K(k)=P^-(k)H^T(HP^-(k)H^T+R)^{-1}\\ \hat{X}(k)=\hat{X}^-(k)+K(k)(y(k)-H\hat{X}^-(k))\\ P(k)=(I-K(k)H)P^-(k)\\ \end{cases} X^(k)=AX^(k1)P(k)=AP(k1)AT+GQGTK(k)=P(k)HT(HP(k)HT+R)1X^(k)=X^(k)+K(k)(y(k)HX^(k))P(k)=(IK(k)H)P(k)
    其中: X ^ − ( k ) \hat X^-(k) X^(k) k k k时刻的先验估计, X ^ ( k ) \hat X(k) X^(k) k k k时刻的后验估计, P − ( k ) P^-(k) P(k)为先验估计误差的协方差矩阵, P ( k ) P(k) P(k)为后验估计误差的协方差矩阵, K ( k ) K(k) K(k)为卡尔曼增益, Q Q Q R R R分别为 w ( k ) w(k) w(k) v ( k ) v(k) v(k)的协方差矩阵
    Q = E ( w ( k ) w ( k ) T ) R = E ( v ( k ) v ( k ) T ) Q=E(w(k)w(k)^T)\\ R=E(v(k)v(k)^T) Q=E(w(k)w(k)T)R=E(v(k)v(k)T)

    参数确定

    在卡尔曼滤波算法中,必须要有语音模型参数 a ^ = [ a 1 , a 2 , ⋯   , a p ] T \hat{a}=[a_1,a_2,\cdots ,a_p]^T a^=[a1,a2,,ap]T σ w 2 \sigma_w^2 σw2及噪声的方差 σ v 2 \sigma_v^2 σv2,因此我们作以下假设:

    • 语音用一个20阶的AR模型表示,即 p = 20 p=20 p=20
    • 假定一开始的语音信号中,只含有噪音信号,而无有效语音段,从而求出 σ v 2 \sigma_v^2 σv2,作为噪声的统计先验知识。本文为了方便,直接对加入的噪声求方差。

    因为语音增强中的卡尔曼系统是个时变系统,即在状态方程 中,系数 A ( k ) A(k) A(k)是时变的,因此对语音模型 a ^ \hat{a} a^ σ w 2 \sigma_w^2 σw2的计算只能采用迭代的方法进行计算。具体过程为:对一帧语音信号,直接用线性预测系数(LPC)算法求带噪语音的 a ^ \hat{a} a^ σ w 2 \sigma_w^2 σw2,将此参数提供给卡尔曼滤波模块,对带噪语音进行滤波,滤波后的信号再用LPC算法求 a ^ \hat{a} a^ σ w 2 \sigma_w^2 σw2,如此迭代循环,直到语音模型中的残差项小于某个阈值,一般考虑到计算量的问题,迭代次数多为3~6次。本文选择迭代7次

    4.程序实现

    语音数据的导入、加噪与分帧

    本文所用的纯净语音样本包含16条语音(8男8女),采样率为16000,时长约为5秒,噪声采用NOISEX-92数据库中的白噪声,采样率为199800Hz。

    %% 导入噪声数据
    load noise_data/white.mat;
    %% 读取语音
    [input, fs] = audioread('voice_data/Ch_F2.wav');
    t = (0 : 1/fs : (length(input)-1)/fs)';
    

    首先给出信噪比计算公式
    S N R ( s ( t ) , n ( t ) ) = 10 l g ∑ t s 2 ( t ) ∑ t n 2 ( t ) SNR(s(t),n(t))=10lg\frac{\sum_t s^2(t)}{\sum_t n^2(t)} SNR(s(t),n(t))=10lgtn2(t)ts2(t)
    其中: S N R SNR SNR为信噪比,单位为dB; ∑ t s 2 ( t ) \sum_t s^2(t) ts2(t)为纯净语音信号的能量; ∑ t n 2 ( t ) \sum_t n^2(t) tn2(t)为噪声能量。

    可求出噪声的缩放倍数 α \alpha α:
    α = ∑ t ( s 2 ( t ) ) 1 0 S N R 10 ∑ t n 2 ( t ) \alpha = \sqrt{\frac{\sum_t(s^2(t))}{10^{\frac{SNR}{10}\sum_tn^2(t)}}} α=1010SNRtn2(t)t(s2(t))
    新的噪声信号即可表示为 α n ( t ) \alpha n(t) αn(t),本文中加入信噪比 S N R = 5 d B SNR=5dB SNR=5dB

    %% 加噪
    SNR = 5; % 加噪信噪比
    noise = resample(white, fs, 19980);
    noise = noise(1 : length(input));
    noise = noise - mean(noise);
    signal_power = 1/length(input) * sum(input.*input); % 纯净语音能量
    noise_variance = signal_power./(10^(SNR / 10)); 
    alpha = sqrt(noise_variance) / std(noise) % 噪声缩放倍数
    noise = alpha .*noise;
    noiseInput = input + noise; % 信号相加得到带噪信号
    

    接下来分帧,本文选择帧长为0.05s,帧移为100%,另外本方法不需要进行加窗操作

    %% 分帧
    winLenSec = 0.05; % 帧长 单位:s
    overlap_rate = 1; % 帧移比例0~1
    w = floor(winLenSec * fs); % 每帧的样点数
    overlap_size = w * overlap_rate; % 帧移的样点数
    numFrames = floor((length(input) - w) / overlap_size); % 帧数
    framedSignal = zeros(numFrames,w); % 为分帧后的信号分配内存
    for i=1:numFrames
       interval = (i - 1) * (overlap_size) + (1 : w);
       framedSignal(i, :) = noiseInput(interval);%.*hamming(w); % 加窗
    end
    

    卡尔曼滤波器参数初始化

    对第3节中卡尔曼滤波器的状态估计方程的部分参数进行初始化,需要初始化的滤波器参数有:信号的AR模型系数、过程噪声方差 Q Q Q、观测噪声方差 R R R、误差协方差矩阵 P P P、初始状态估计,其中:

    • 信号的AR模型系数和过程噪声方差 Q Q Q需要在卡尔曼滤波过程中进行迭代求解,详见第3节中的参数确定。所以暂时初始化为带噪语音的AR模型系数及方差
    • 观测噪声方差 R R R参见第3节中的参数确定,直接使用噪声方差进行初始化
    • 误差协方差矩阵 P P P初始化为观测噪声方差
    • 初始状态估计使用前AR模型阶数个样点进行初始化
    %% 初始化参数
    arOrder = 20; % AR模型阶数
    numIter = 7; % 求解语音信号的AR模型参数时的迭代次数
    H = [zeros(1, arOrder - 1), 1]; % 观测增益矩阵
    R = var(noise); % 噪声方差
    [arCoeff, Q] = lpc(framedSignal', arOrder); % 每帧带噪语音的AR模型系数arCoeff和方差Q
    errCov = R * eye(arOrder); % 后验估计误差协方差矩阵
    output = zeros(1, length(noiseInput)); % 为输出信号分配内存
    output(1:arOrder) = noiseInput(1 : arOrder, 1)'; % 初始化输出信号,初始化为带噪语音样本前阶数个样本
    estOutput = noiseInput(1 : arOrder,1); % 初始化后验估计
    

    卡尔曼滤波过程

    按照第3节中卡尔曼滤波器的状态估计方程对每一帧带噪语音信号进行处理,其中包括卡尔曼滤波过程以及语音信号的AR模型参数的迭代求解。

    %% 卡尔曼滤波过程
    for k = 1:numFrames % 对每一帧进行卡尔曼滤波
    	oldOutput = estOutput; % 保存该帧迭代前的后验估计
        % 初始化开始进行卡尔曼滤波的位置
        if k == 1 
            iiStart = arOrder + 1; % 如果是第一帧,则从第arOrder+1个点开始处理
        end
        % 迭代求解语音信号的AR模型参数
        for iter = 1 : numIter
    		% 状态变换矩阵
            A = [zeros(arOrder - 1, 1), eye(arOrder - 1); fliplr(-arCoeff(k, 2 : end))]; % fliplr:左右翻转
            for ii = iiStart : w
    			% 计算先验估计
    			aheadEstOutput = A * estOutput;		
    			% 计算先验估计误差的协方差矩阵p-
    			aheadErrCov  = A * errCov * A' + H' * Q(k) * H;
    			% 计算卡尔曼增益
    			K = (aheadErrCov * H') / (H * aheadErrCov * H' + R);
    			% 计算后验估计
    			estOutput = aheadEstOutput + K * (framedSignal(k, ii) - H * aheadEstOutput);
    			% 更新输出结果
    			index = ii - iiStart + arOrder + 1 + (k - 1) * w;
    			output(index - arOrder + 1 : index) = estOutput';
    			% 计算后验估计误差的协方差矩阵p
    			errCov  = (eye(arOrder) - K * H) * aheadErrCov;
            end
            iiStart = 1;
    		if iter < numIter % 如果AR模型参数迭代还未完成,则恢复第一次迭代前的后验估计,用来进行下一次迭代
    			estOutput = oldOutput; % 不然会有吱吱声
    		end
    		% 使用LPC算法计算上述滤波结果的AR模型系数以及方差
            [arCoeff(k , :), Q(k)] = lpc(output((k - 1) * w + 1 : k * w), arOrder);
        end
    end
    output = output';
    

    结果可视化

    %% 画出结果
    figure
    subplot(311);
    plot(t, input)
    xlabel('Time/s')
    ylabel('Amlitude')
    title('Clean Speech Signal')
    
    subplot(312);
    plot(t, noiseInput)
    xlabel('Time/s')
    ylabel('Amlitude')
    title('Noise-added Signal')
    
    subplot(313);
    plot(t, output(1:length(t)))
    xlabel('Time/s')
    ylabel('Amlitude')
    title('Estimated Clean Output Signal')
    

    5.运行结果与结果分析

    运行结果

    • S N R = 5 d B SNR=5dB SNR=5dB,加入噪声为白噪声

    在这里插入图片描述

    • S N R = − 5 d B SNR=-5dB SNR=5dB,加入噪声为白噪声

    在这里插入图片描述

    • S N R = 5 d B SNR=5dB SNR=5dB,加入噪声为粉红噪声

    在这里插入图片描述

    • S N R = − 5 d B SNR=-5dB SNR=5dB,加入噪声为粉红噪声

    在这里插入图片描述

    结果分析

    由于时间比较仓促(我懒),所以本文没有使用诸如PESQ等算法对滤波结果进行语音质量评价,所以仅从结果波形上进行总结,当然结果是很明显的。从上述运行结果中,可以看出卡尔曼滤波对白噪声的滤除效果较好,能够很大程度地保留原语音信号的信息,但是对有色噪声的滤除效果较差。

    因为卡尔曼滤波的一个假设为:观测噪声是服从均值为0的高斯分布的白噪声。高斯白噪声的功率谱密度服从均匀分布,而有色噪声是指功率谱密度函数不为常数的噪声。所以对于有色噪声,卡尔曼滤波中的一个基本假设:观测噪声是服从高斯分布的白噪声,就不存在了。因此,卡尔曼滤波对有色噪声的滤除效果较差。针对有色噪声,使用粒子滤波(Particle Filter)的效果较好。

    展开全文
  • 针对语音信号在低信噪比环境下,传统谱减法残留的背景噪声较大的问题,本文提出了一种改进的基于听觉掩蔽效应语音增强算法。该算法将人耳听觉掩蔽特性与功率谱减法相结合,首先提出一种时域递归平均算法对噪声进行估计,...
  • 语音增强 这是用于存储 .m 语音增强算法的存储库。 见和详情。 语音增强算法 龚荣
  • 语音增强算法及实现

    2015-06-01 17:42:54
    AGC(自动增益控制)的代码实现,其中注释部分对AGC算法进行了详细介绍
  • 一种基于短时谱估计和人耳掩蔽效应的语音增强算法
  • 针对现有的助听器语音增强算法在非平稳噪声环境下,残留大量背景噪声的同时还引入了“音乐噪声”,致使增强语音可懂度和信噪比不理想等问题。提出了一种基于噪声估计的二值掩蔽语音增强算法,该算法利用人耳听觉感知...
  • 语音增强算法的FPGA实现.pdf
  • 基于延迟-求和的麦克风阵列语音增强算法研究.pdf 延迟-求和 麦克风阵列 语音增强
  • 为降低噪声对语音通信的干扰,提出了一种基于谱减的语音增强算法的改进方法。根据噪声频谱的Gauss统计模型修正语音增强过程中噪声频谱的估计方法,利用帧内、帧间约束估计每一个频点的先验信噪比,提出了一种简便的...
  • 针对现有的语音增强算法存在增强效果差、语音信号失真等问题,提出了稀疏低秩模型及改进型相位谱补偿的语音增强算法。首先,用稀疏低秩模型处理含噪语音的幅度谱,得到分离后的语音。接着,用归一化最小均方自适应...
  • 语音增强算法综述

    2013-03-15 12:32:37
    语音增强各种算法综述基本原理 各种应用算法说明等
  • 针对固定阈值小波包语音增强算法造成的语音失真问题,提出一种采用后验信噪比修正小波包自适应阈值的语音增强算法。该算法先用结合掩蔽效应改进的非平稳噪声估计算法估计噪声功率,确保计算出准确的节点后验信噪比;...
  • 针对语音增强算法中传统的小波阈值法的局限性,提出一种基于可调Q-因子小波变换和清浊音分离的语音增强算法。首先用过零率和短时能量法判别清音和浊音;然后在可调Q-因子小波变换下,对清、浊音采用不同的阈值处理,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,968
精华内容 9,587
关键字:

语音增强算法

友情链接: DUKAN-V1.0.zip