精华内容
下载资源
问答
  • 语音降噪算法

    千次阅读 2021-03-30 10:37:18
    SNR越低,降噪效果越差 1.LMS自适应滤波器、陷波器降噪...2)当用户使用蓝牙耳机或有线耳机通话时,手机端的双麦克风降噪算法往往又会失效。 3)双麦克风在工业设计上也会造成很多阻碍。两个麦克风会让声学音频路径的设计

    SNR越低,降噪效果越差
    1.LMS自适应滤波器、陷波器降噪
    2.普减法
    3.维纳滤波降噪
    4.双麦克风降噪

    双麦克风,一个放在靠近嘴巴的地方收集人声,一个放在顶端或背部收集环境音,再通过算法将人声从背景音中剥离出来,传送到手机的另一端。
    缺点:
    1)有时用户不再说话时,靠近嘴部的麦克风收集的其实还是环境噪音,对于人声剥离的计算会产生一种断断续续的状况。
    2)当用户使用蓝牙耳机或有线耳机通话时,手机端的双麦克风降噪算法往往又会失效。
    3)双麦克风在工业设计上也会造成很多阻碍。两个麦克风会让声学音频路径的设计更加复杂,在ODM和OEM角度都会增加生产设计成本。
    4)在一些使用场合中,用来收集人声的麦克风不一定会被放在人们的嘴边。例如在录音,或者应用一些App上的对讲机功能时,人习惯将手机放置在桌子上,或者拿在举例嘴略远地方。这时两个麦克风很难接收到不同的声音,让算法起不到作用。
    传统的双麦降噪有一定的局限性:
    1) .非平稳降噪不理想,地铁中的哨声或路边的噪声等非平稳噪声,双麦降噪算法处理效果差;2).鲁棒性差。当用户处于免提模式或手持手机离嘴稍远时,降噪效果不明显;3).这种传统的双麦降噪在硬件设计上有很大的局限性。
    5.AI降噪
    1)中国科技大学语音与语言信息处理国家工程实验室
    深度神经网络+单麦克风实现主动降噪的论文。具体实现方式是,建立含有噪声+人声和纯净人声的数据集,以深度神经网络为架构训练出分离噪声和人声的“语音增强回归”算法。
    在初步试验后,这种算法的结果还不错。从训练成本来看,即使用人工合成的数据,算法结果仍然表现优秀。也就是说算法的应用者不需要面对到现实世界收集数据,可能会侵犯隐私的难题。
    从应用上来说,这一算法的降噪能力并不比双麦克模式差,甚至还能克服双麦克风克服不不了的间断噪声问题,有时候人们在走路或跑动时接电话会形成偶尔出现的间断噪声,以往的双麦克风模式很难捕捉到这种噪声,但语音增强回归算法就能将人声从中剥离开来。
    优点:
    1)更鲁棒的模式,
    2)覆盖更广的噪声场景,能够实时分离人声和环境噪声,在任何噪声环境下都能提取出清晰的人声。
    3)不需要依靠多个麦克风,鲁棒性强,不受声源方向的限制。即使在用户手持通话时,手机离他的嘴很远,通话是在大仰角下进行的,他也可以毫不费力地与对方通话清楚。

    展开全文
  • 调用speex库进行语音降噪的代码,可以直接运行,直接看到降噪效果
  • 提出了一种基于仿生小波变换和模糊推理的变步长自适应滤波语音降噪算法。该算法首先用仿生小波变换法对包含噪声的语音信号进行小波分解,以分离出来的噪声信号作为自适应滤波器的输入,选择基于模糊推理变步长自适应...
  • 语音降噪算法 噪音消除

    热门讨论 2009-03-21 16:37:49
    语音降噪算法,语言噪音消除研究。嵌入式开发时噪音是一个头疼的问题
  • 关于 IMCRA+OMLSA 语音降噪算法的详细解释

    千次阅读 多人点赞 2019-05-16 18:24:39
    关于IMCRA+OMLSA语音降噪算法的详细解释概述OMLSA算法IMCRA算法 概述 IMCRA+OMLSA 算法及其一些变体是目前语音降噪中常用的算法。很多文献在解释这两种算法的时候,条理有一些混乱,使得读者难以弄清楚问题的本质...

    关于 IMCRA+OMLSA 语音降噪算法的详细解释

    概述

    IMCRA+OMLSA 算法及其一些变体是目前语音降噪中常用的算法。很多文献在解释这两种算法的时候,条理有一些混乱,使得读者难以弄清楚问题的本质。一些文献从 IMCRA 算法开始介绍,我个人觉得这样反而容易引起理解上的混乱。就好比画画,总是要先画出轮廓来,才能逐步细化。围棋也是一样,一定要先布局,才能进入到中盘。我觉得先介绍 OMLSA 算法,才能起到纲举目张的作用。所以本文打算先讲解 OMLSA 算法,再讲解 IMCRA 算法,以给读者一个明确的思路。

    OMLSA 算法

    OMLSA 算法的英文名称是 optimally modified log-spectral amplitude estimator,文献1中将其翻译为 “最优改进对数谱幅度估计”。从这个名字可以看出,该方法一定是对信号的幅度谱进行了一些操作。OMLSA 算法的计算准则实际上就是最小化实际干净语音估计出来的干净语音的差异2,这一差异如果使用公式可以表示为:

    D e l t a = E ( ∣ l o g A ( k , l ) − l o g A ^ ( k , l ) ∣ 2 )   {Delta} = E\left( \left| logA( k,l)-log\hat{A}(k,l) \right|^2 \right)\, Delta=E(logA(k,l)logA^(k,l)2)

    其中 A ( k , l ) A(k,l) A(k,l) 是干净语音信号 x x x 的频谱幅值, A ^ ( k , l ) \hat{A}(k,l) A^(k,l) 是估计出来的频谱幅值。如果使用传统的方法,那 A ^ ( k , l ) \hat{A}(k,l) A^(k,l) 可以表示为:

    A ^ ( k , l ) = G ( k , l ) ⋅ ∣ Y ( k , l ) ∣ , \hat{A}(k,l) = G(k,l)\cdot |Y(k,l)|, A^(k,l)=G(k,l)Y(k,l),

    其中 G ( k , l ) G(k,l) G(k,l) 为带噪语音的估计增益, Y ( k , l ) Y(k,l) Y(k,l) 就是含噪语音的幅度谱。但是现在OMLSA肯定不会这么简单,它会变化成一种复杂一点的形式。为了避免推导过程中使读者的关注点发生混乱,我们直接给出此时 A ^ ( k , l ) \hat{A}(k,l) A^(k,l) 的计算公式

    A ^ ( k , l ) = ( G m i n ⋅ ∣ Y ( k , l ) ∣ ) ( 1 − p ( k , l ) ) × ( G H 1 ( k , l ) ⋅ ∣ Y ( k , l ) ∣ ) p ( k , l ) \hat{A}(k,l) = (G_{\rm min}\cdot |Y(k,l)|)^{(1-p(k,l))}\times (G_{\rm H1}(k,l)\cdot |Y(k,l)|)^{p(k,l)} A^(k,l)=(GminY(k,l))(1p(k,l))×(GH1(k,l)Y(k,l))p(k,l)

    可以看出,这个公式里有三个变量: G m i n G_{\rm min} Gmin p ( k , l ) p(k,l) p(k,l) G H 1 ( k , l ) G_{\rm H1}(k,l) GH1(k,l) G m i n G_{\rm min} Gmin 表示的是语音不存在时的增益函数,一般将 G m i n G_{\rm min} Gmin 的值设为带噪信号的最小信噪比1,比如假设最小信噪比为 − 18 d B -18 \rm dB 18dB 时, G m i n G_{\rm min} Gmin 取值为 0.1257。 p ( k , l ) p(k,l) p(k,l) 是语音存在的后验概率。那么 p ( k , l ) p(k,l) p(k,l) G H 1 ( k , l ) G_{\rm H1}(k,l) GH1(k,l) 又分别怎样求呢?我们这里再次直接给出公式23

    p ( k , l ) = { 1 + q ( k , l ) 1 − q ( k , l ) ( 1 + ξ ( k , l ) ) e x p ( − γ ( k , l ) ⋅ ξ ( k , l ) 1 + ξ ( k , l ) ) } − 1 p(k,l) = \left \{ 1+\frac{q(k,l)}{1-q(k,l)} \left( 1+\xi(k,l) \right){\rm exp}(-\frac{\gamma(k,l) \cdot \xi(k,l)}{1+\xi(k,l)}) \right \}^{-1} p(k,l)={1+1q(k,l)q(k,l)(1+ξ(k,l))exp(1+ξ(k,l)γ(k,l)ξ(k,l))}1

    G H 1 ( k , l ) = ξ ( k , l ) 1 + ξ ( k , l ) e x p ( 1 2 ∫ v ( k , l ) ∞ e − x x d x ) , w i t h    v ( k , l ) = ξ ( k , l ) γ ( k , l ) 1 + ξ ( k , l ) G_{\rm H1}(k,l) = \frac{\xi(k,l)}{1+\xi(k,l)}{\rm exp} \left ( \frac{1}{2} \int_{v(k,l)}^\infty \frac{e^{-x}}{x}dx \right), {\rm with}~~v(k,l)=\frac{\xi(k,l)\gamma(k,l)}{1+\xi(k,l)} GH1(k,l)=1+ξ(k,l)ξ(k,l)exp(21v(k,l)xexdx),with  v(k,l)=1+ξ(k,l)ξ(k,l)γ(k,l)

    擦,这下突然多出来了这么多变量,抓狂。很多文献在这一步的时候,对于这些变量都没有解释清楚,这就导致了理解起来的混乱。现在来一个个梳理。 q ( k , l ) q(k,l) q(k,l) 指的是这一帧的语音不存在的先验概率4 ξ ( k , l ) \xi(k,l) ξ(k,l) 是一帧语音的先验信噪比, γ ( k , l ) \gamma(k,l) γ(k,l) 是一帧语音的后验信噪比。也就是说,只要了这三个值,我们就可以求出 p ( k , l ) p(k,l) p(k,l) G H 1 ( k , l ) G_{\rm H1}(k,l) GH1(k,l) 了。我们先来看一下 γ ( k , l ) \gamma(k,l) γ(k,l),它的表达式为:

    γ ( k , l ) = ∣ Y ( k , l ) ∣ 2 λ d ( k , l ) \gamma(k,l)= \frac{|Y(k,l)|^2}{\lambda_{d}(k,l)} γ(k,l)=λd(k,l)Y(k,l)2

    注意到这里出现了一个非常重要的变量 λ d ( k , l ) \lambda_{d}(k,l) λd(k,l),这个变量是噪声谱估计,它才是融合OMLSA和IMCRA方法的精华所在。后面我们会讲到,它是上一个时刻推导出来的。此时我们先假定它是已知的。而 ξ ( k , l ) \xi(k,l) ξ(k,l) 的表达式为:

    ξ ( k , l ) = α G H 1 2 ( k , l − 1 ) γ ( k , l − 1 ) + ( 1 − α ) max ⁡ { γ ( k , l ) − 1 , 0 } , \xi(k,l)= \alpha G_{H1}^{2}(k,l-1)\gamma(k,l-1)+(1-\alpha)\max \{ \gamma(k,l)-1,0 \}, ξ(k,l)=αGH12(k,l1)γ(k,l1)+(1α)max{γ(k,l)1,0},

    其中 α \alpha α 是权重因子,用来控制降噪和语音之间的平衡。关于这个因子的选择,有人进行过研究,在这里我们不进行探讨,只需要知道它是一个常数就可以了。 而 G H 1 ( k , l − 1 ) G_{H1}(k,l-1) GH1(k,l1) 是上一帧的对数谱增益函数,在求解本帧( l l l 帧)的时候,它是已经知道的。 γ ( k , l − 1 ) \gamma(k,l-1) γ(k,l1) 也是同样的道理。所以现在根本问题就在于求解 γ ( k , l ) \gamma(k,l) γ(k,l),而求解 γ ( k , l ) \gamma(k,l) γ(k,l) 的根本问题就在于求解 λ d ( k , l ) \lambda_{d}(k,l) λd(k,l)。那么在这里就要和IMCRA方法建立一种联系了。

    IMCRA 算法

    现在继续来讲解如何求解 λ d ( k , l ) \lambda_{d}(k,l) λd(k,l)。实际上, λ d ( k , l ) \lambda_{d}(k,l) λd(k,l) 的求解要用到上一帧的 q q q,也就是 q ( k , l − 1 ) q(k,l-1) q(k,l1)。很多文献里面,关于第 l l l 帧和第 l − 1 l-1 l1 帧的表述非常混乱。为了避免引起表述过程中的混乱,我们假定当前正处于第 l l l 帧,即将推导第 l + 1 l+1 l+1 帧的情况。首先,我们要定义一个新的变量 S f ( λ , k ) S_{f}(\lambda,k) Sf(λ,k),它表示的是在频域对每一帧含噪语音谱平滑后的功率谱值5,其表达式为:

    S f ( k , l ) = ∑ i = − ω ω b ( i ) ∣ Y ( k − i , l ) ∣ 2 , S_{f}(k,l)=\sum\limits_{i=-\omega}^{\omega}b (i)|Y(k-i,l)|^2, Sf(k,l)=i=ωωb(i)Y(ki,l)2,

    其中 b ( i ) b(i) b(i) 表示标准化窗函数,窗函数的长度为 2 ω + 1 2\omega+1 2ω+1 Y ( k − i , l ) Y(k-i,l) Y(ki,l) 表示含噪语音在时频域作短时傅里叶变换的幅度值。接下来,我们可以通过平滑求出当前帧含噪语音的功率谱:

    S ( k , l ) = α s S ( k , l − 1 ) + ( 1 − α s ) S f ( k , l ) , S(k,l)=\alpha_{s}S(k,l-1)+(1-\alpha_{s})S_{f}(k,l), S(k,l)=αsS(k,l1)+(1αs)Sf(k,l),

    其中 α s \alpha_{s} αs 为平滑参数,我们可以将其设置为 0.8, S ( k , l − 1 ) S(k,l-1) S(k,l1) 表示前一帧含噪语音的功率谱,此时它是已知的(因为是前一帧的信息,之前肯定已经求出来了)。接下来跟踪平滑功率谱 S ( k , l ) S(k,l) S(k,l) 的最小值:

    S m i n ( k , l ) = min ⁡ { S m i n ( k , l − 1 ) , S ( k , l ) } . S_{\rm min}(k,l)=\min \{ S_{\rm min}(k,l-1),S(k,l) \}. Smin(k,l)=min{Smin(k,l1),S(k,l)}.

    接下来,我们需要计算标识函数 I ( k , l ) I(k,l) I(k,l) 用于对语音存在进行粗略估计。在此之前,我们先定义两个变量:

    γ m i n ( k , l ) = ∣ Y ( k , l ) ∣ 2 B min ⁡ S min ⁡ ( k , l ) , \gamma_{\rm min}(k,l)=\frac{|Y(k,l)|^2}{B_{\min}S_{\min}(k,l)}, γmin(k,l)=BminSmin(k,l)Y(k,l)2,

    ζ ( k , l ) = S ( k , l ) B min ⁡ S min ⁡ ( k , l ) , \zeta(k,l)=\frac{S(k,l)}{B_{\min}S_{\min}(k,l)}, ζ(k,l)=BminSmin(k,l)S(k,l),

    其中 B min ⁡ = 1.66 B_{\min}=1.66 Bmin=1.66 是噪声谱最小值估计偏置补偿因子。接下来 I ( k , l ) I(k,l) I(k,l) 的定义为:

    I ( k , l ) = { 1 ,    i f   γ min ⁡ ( k , l ) &lt; γ 0   a n d   ζ ( k , l ) &lt; ζ 0     ( s p e e c h   i s   a b s e n t ) 0 ,    o t h e r w i s e   ( s p e e c h   i s   p r e s e n t ) I(k,l)=\left\{ \begin{aligned} &amp;1,~~{\rm if}~\gamma_{\min}(k,l)&lt;\gamma_{0}~{\rm and}~\zeta(k,l)&lt;\zeta_0~~~(\rm speech~is ~absent) \\ &amp;0,~~{\rm otherwise}~(\rm speech~is ~present) \end{aligned} \right. I(k,l)={1,  if γmin(k,l)<γ0 and ζ(k,l)<ζ0   (speech is absent)0,  otherwise (speech is present)

    其中 γ 0 = 4.6 \gamma_0=4.6 γ0=4.6 ζ 0 = 1.67 \zeta_0=1.67 ζ0=1.67。接下来,就要用上这个 I ( k , l ) I(k,l) I(k,l)。对功率谱频点间进行二次平滑得到平滑功率谱值:

    S ~ f ( k , l ) = { ∑ i = − ω ω b ( i ) I ( k − i , l ) ∣ Y ( k − i , l ) ∣ 2 ∑ i = − ω ω b ( i ) I ( k − i , l ) ,    i f   ∑ i = − ω ω I ( k − i , l ) ≠ 0 S ~ ( k , l − 1 ) , o t h e r w i s e \tilde{S}_f(k,l)=\left\{ \begin{aligned} &amp;\frac{\sum\limits_{i=-\omega}^{\omega}b(i)I(k-i,l)|Y(k-i,l)|^2}{\sum\limits_{i=-\omega}^{\omega}b(i)I(k-i,l)}, ~~{\rm if}~\sum\limits_{i=-\omega}^{\omega}I(k-i,l)\neq 0\\ &amp;\tilde{S}(k,l-1), {\rm otherwise} \end{aligned} \right. S~f(k,l)=i=ωωb(i)I(ki,l)i=ωωb(i)I(ki,l)Y(ki,l)2,  if i=ωωI(ki,l)̸=0S~(k,l1),otherwise

    其中 S ~ ( k , l ) \tilde{S}(k,l) S~(k,l) 表示二次平滑时,在时域采用一阶递归平滑方法得到的平滑功率谱值,其表达式为:

    S ~ ( k , l ) = α s S ~ ( k , l − 1 ) + ( 1 − α s ) S ~ f ( k , l ) \tilde{S}(k,l)=\alpha_{s}\tilde{S}(k,l-1)+(1-\alpha_{s})\tilde{S}_{f}(k,l) S~(k,l)=αsS~(k,l1)+(1αs)S~f(k,l)

    跟踪平滑功率谱 S ~ min ⁡ ( k , l ) \tilde{S}_{\min}(k,l) S~min(k,l) 的最小值:

    S ~ min ⁡ ( k , l ) = min ⁡ { S min ⁡ ( k , l − 1 ) , S ~ ( k , l ) } \tilde{S}_{\min}(k,l)=\min\{ S_{\min}(k,l-1),\tilde{S}(k,l)\} S~min(k,l)=min{Smin(k,l1),S~(k,l)}

    在此之后,我们还要定义两个变量:

    γ ~ min ⁡ ( k , l ) = ∣ Y ( k , l ) ∣ 2 B min ⁡ S ~ min ⁡ ( k , l ) \tilde{\gamma}_{\min}(k,l)=\frac{|Y(k,l)|^2}{B_{\min}\tilde{S}_{\min}(k,l)} γ~min(k,l)=BminS~min(k,l)Y(k,l)2

    ζ ~ ( k , l ) = S ( k , l ) B min ⁡ S ~ min ⁡ ( k , l ) \tilde{\zeta}(k,l)=\frac{S(k,l)}{B_{\min}\tilde{S}_{\min}(k,l)} ζ~(k,l)=BminS~min(k,l)S(k,l)

    接下来,终于到激动人心的一步,可以求先验语音不存在的概率 q ( k , l ) q(k,l) q(k,l) 了。它的计算公式如下:

    q ~ ( k , l ) = { 1 ,    i f   γ ~ min ⁡ ( k , l ) ≤ 1   a n d   ζ ~ ( k , l ) &lt; ζ ~ 0 γ 1 − γ ~ min ⁡ ( k , l ) γ 1 − 1 ,    i f   1 &lt; γ ~ min ⁡ ( k , l ) &lt; γ 1   a n d   ζ ~ ( k , l ) &lt; ζ 0 0 , o t h e r w i s e \tilde{q}(k,l)=\left\{ \begin{aligned} &amp;1,~~{\rm if}~\tilde{\gamma}_{\min}(k,l)\leq 1~{\rm and}~\tilde{\zeta}(k,l)&lt;\tilde{\zeta}_0 \\ &amp;\frac{\gamma_{1}-\tilde{\gamma}_{\min}(k,l)}{\gamma_{1}-1},~~{\rm if}~1&lt;\tilde{\gamma}_{\min}(k,l)&lt;\gamma_{1}~{\rm and}~\tilde{\zeta}(k,l)&lt;\zeta_{0}\\ &amp;0, {\rm otherwise} \end{aligned} \right. q~(k,l)=1,  if γ~min(k,l)1 and ζ~(k,l)<ζ~0γ11γ1γ~min(k,l),  if 1<γ~min(k,l)<γ1 and ζ~(k,l)<ζ00,otherwise

    其中 ζ 0 = 1.67 \zeta_{0}=1.67 ζ0=1.67 γ 1 = 3 \gamma_{1}=3 γ1=3。截止到目前为止, q ( k , l ) q(k,l) q(k,l) ξ ( k , l ) \xi(k,l) ξ(k,l) γ ( k , l ) \gamma(k,l) γ(k,l) 这三个变量都已经求出来了,那么对于当前时刻的降噪来说已经足够了。但是为了可持续发展,我们还需要递推下一个时刻 l + 1 l+1 l+1 的噪声谱估计 λ d ( k , l + 1 ) \lambda_{d}(k,l+1) λd(k,l+1)。首先使用 q ( k , l ) q(k,l) q(k,l) 来求 p ( k , l ) p(k,l) p(k,l),这个公式前面已经说过:

    p ( k , l ) = { 1 + q ( k , l ) 1 − q ( k , l ) ( 1 + ξ ( k , l ) ) e x p ( − γ ( k , l ) ⋅ ξ ( k , l ) 1 + ξ ( k , l ) ) } − 1 p(k,l) = \left \{ 1+\frac{q(k,l)}{1-q(k,l)} \left( 1+\xi(k,l) \right){\rm exp}(-\frac{\gamma(k,l) \cdot \xi(k,l)}{1+\xi(k,l)}) \right \}^{-1} p(k,l)={1+1q(k,l)q(k,l)(1+ξ(k,l))exp(1+ξ(k,l)γ(k,l)ξ(k,l))}1

    然后定义语音存在条件概率计算时变平滑参数 α ~ d ( k , l ) \tilde{\alpha}_{d}(k,l) α~d(k,l),公式如下:

    α ~ d ( k , l ) = α d + ( 1 − α d ) p ( k , l ) \tilde{\alpha}_{d}(k,l)=\alpha_{d}+(1-\alpha_{d})p(k,l) α~d(k,l)=αd+(1αd)p(k,l)

    其中 α d = 0.85 \alpha_{d}=0.85 αd=0.85。根据这里计算出来的 α ~ d ( k , l ) \tilde{\alpha}_{d}(k,l) α~d(k,l),就可以求解下一个时刻的 λ ˉ d ( k , l + 1 ) \bar{\lambda}_{d}(k,l+1) λˉd(k,l+1)

    λ ˉ d ( k , l + 1 ) = α ~ d ( k , l ) λ ˉ d ( k , l ) + [ 1 − α ~ d ( k , l ) ] ∣ Y ( k , l ) ∣ 2 \bar{\lambda}_{d}(k,l+1)=\tilde{\alpha}_{d}(k,l)\bar{\lambda}_{d}(k,l)+[1-\tilde{\alpha}_{d}(k,l)]|Y(k,l)|^2 λˉd(k,l+1)=α~d(k,l)λˉd(k,l)+[1α~d(k,l)]Y(k,l)2

    为了避免噪声谱估计的过低,需要采用一个偏置因子对噪声谱估计进行补偿,公式如下:

    λ ^ d ( k , l + 1 ) = β ⋅ λ ˉ d ( k , l + 1 ) \hat{\lambda}_{d}(k,l+1)=\beta\cdot \bar{\lambda}_{d}(k,l+1) λ^d(k,l+1)=βλˉd(k,l+1)

    到这里,就已经求出来了下一个周期的 λ ^ d ( k , l + 1 ) \hat{\lambda}_{d}(k,l+1) λ^d(k,l+1),就可以进入下一个周期的计算。

    本文的参考文件仅仅列举出来了一些中文的文献。关于 IMCRA+OMLSA 算法的英文经典文献也有很多,在此不一一列举,大家可以在网上查找。


    1. OM-LSA和小波阈值去噪结合的语音增强,刘凤增,李国辉,李博,计算机科学与探索,2011, 5(6), 541-552. ↩︎ ↩︎

    2. 针对于家居环境的语音增强系统的研究与开发,陈成斌,华南理工大学工程硕士学位论文,2014. ↩︎ ↩︎

    3. 特定人语音增强算法的研究,郭栗,上海交通大学硕士学位论文,2015. ↩︎

    4. 基于改进谱平滑策略的IMCRA算法及其语音增强,张建伟,陶亮,周健,王华彬,计算机工程与应用,2017, 53(1): 153-157. ↩︎

    5. 基于维纳过滤的IMCRA算法,吴进,赵隽,李乔深,西安邮电大学学报,2017, 22(5): 73-77. ↩︎

    展开全文
  • 语音降噪算法.docx

    2019-07-09 10:20:11
    谱减算法为最早的语音降噪算法之一,它的提出,基于一个简单的原理: 假设语音中的噪声只有加性噪声,只要将带噪语音谱减去噪声谱,就可以得到纯净语音幅度。这么做的前提是噪声信号是平稳的或者缓慢变化的。
  • 基于会议电话中的实时语音降噪算法研究.pdf
  • 一篇关于讲解语音降噪的方法的硕士论文,对于做语音信号处理很有参考意义。
  • 一种有效的自适应语音降噪算法及实现一种有效的自适应语音降噪算法及实现
  • 谱减法是最常用的一种语音增强技术,其特点是计算复杂度低、实时性强、易于实现。其缺点是在低信噪比时,极易丢失语音信号中有用信息,...本文结合谱减法和小波阈值技术的优势提出了新型算法,并有效改善语音降噪效果。
  • 本发明涉及语音降噪领域,尤其是一种双麦克风语音降噪方法。背景技术:伴随智能电视的普及,语音识别功能也越来越普及,智能语音遥控器作为人和电视语音的交互工具,起到了语音采集,传输的功能,是人机交互的一个...

    e83b93f64b0f116f9a70fc45a18c62e5.gif

    本发明涉及语音降噪领域,尤其是一种双麦克风语音降噪方法。

    背景技术:

    伴随智能电视的普及,语音识别功能也越来越普及,智能语音遥控器作为人和电视语音的交互工具,起到了语音采集,传输的功能,是人机交互的一个重要接口。

    目前的主流为单麦克语音遥控器,主要是单个麦克风对语音进行采集,并通过蓝牙传输到电视端进行语音识别,在背景噪声低或者无噪声的情况下能获得很好的语音识别效果。

    单麦克语音采集存在两个主要的缺陷,第一点:喷麦效应,单颗麦克录音时,由于麦克风口对距离人很近,人说话发出的气流声在说某些音节时会很大,比如说“朋友”、“奔跑”等词时,会产生较大的气流,导致麦克风录音时产生较强的噪声,而该噪声会影响语音识别的正确率。第二点,在外界噪声较强时,特别是外界噪声也为语音时,会导致语音识别分不清楚是谁在讲话,从而产生误识别。

    技术实现要素:

    针对现有技术存在的问题,本发明的目的在于提供一种减少语音识别的误识别的双麦克风语音降噪方法。

    为实现上述目的,本发明一种双麦克风语音降噪方法,具体为:

    1)设置前、后放置的2颗麦克风进行语音采集;前置麦克的为主麦克,主要负责语音的采集和喷麦噪声的检测;后置麦克为辅助麦克,主要负责喷麦噪声补偿和背景噪声的采集;

    2)语音输入时,前置麦克和后置麦克同时拾音,分别获取时域语音数据T1和T2;

    3)分别对前置麦克风和后置麦克风的时域语音数据进行频域加窗和傅里叶变换处理,获取频域语音数据F1和F2:

    4)对前置麦克和后置麦克的频域语音数据计算自相关谱PSD和互相关谱CPSD;

    5)采用自相关谱PSD和互相关谱CPSD运算相关性函数,用来判断前置麦克的频域语音数据和后置麦克的频域语音数据的相关性;

    6)采用相关性函数估计信噪比函数SNR,当相关性高时,气质和后置麦克的相关性高、估计信噪比函数的值高;而当相关性函数相关性低,估计信噪比函数估计值低;并用估计信噪比函数计算增益函数;

    7)采用增益函数对前置麦克风的频域语音数据进行增益调整,获得降噪后的前置麦克风的频域语音数据;降噪后的频域语音数据进行逆傅里叶变换,将频域语音数据变换成时域语音数据;最终输出降噪后的时域语音数据;

    8)分析步骤3)前置麦克的频域语音数据F1,如其属于20-4000hz 频段频域、量大而且均匀无衰减的类型,则确定频域语音数据 F1属于喷麦噪声;用后置麦克的频域语音数据F2替换原前置麦克的喷麦语音数据,完成对前置麦克喷麦噪声的修复。

    进一步,所述步骤2)中,前置麦克风和后置麦克风分别获取时域语音数据,采样率为16000hz,并分每帧128个语音数据进行处理;输出所述时域语音数据T1和T2。

    进一步,所述步骤3)中,输入是时域语音数据T1和T2,输出是频域语音数据F1和F2,公式为:

    F1=FFT(hanningwin*T1);

    F2=FFT(hanningwin*T2)。

    进一步,所述步骤4)中,自相关谱PSD的计算公式为:PSD=∑|F1|2;互相关谱CPSD计算公式为:CPSD=∑(|F1|×|F2|*);其中F1表示前置麦克的频域语音数据,F2后置麦克的频域语音数据,符号*是复数的共轭运算。

    进一步,所述步骤5)中,相关性函数Coh的公式为:

    其中CPSD是前置麦克和后置麦克频域语音数据的互相关谱,PSD1 是前置麦克频域语音数据的自相关谱,PSD2是后置麦克频域语音数据的自相关谱。

    进一步,所述步骤6)中,增益函数G的计算公式是:

    进一步,所述步骤7)中,降噪后的频域语音数据公式为: F1_new=G*F1;降噪后的时域语音数据公式为: T1_new=IFFT(F1_new)。

    进一步,所述步骤3)中,加窗运算选择的是汉宁窗,对每帧128 个乘以汉宁窗系数,用来防止后面时频转换时发生频谱混叠。

    本发明硬件上结构简单,相比之前的智能语音遥控器仅简单地增加1 路麦克就能达到很好的噪声抑制的功能。软件算法上通过相关性函数的方式抑制了背景噪声,通过检测补偿算法抑制了喷麦噪声。

    附图说明

    图1为设置于产品正面的前置麦克位置示意图;

    图2为设置于产品背面的后置麦克位置示意图;

    图3为本发明双麦克风语音降噪方法流程框架图;

    图4为背景噪声降噪效果图一;

    图5为背景噪声降噪效果图二;

    图6为背景噪声降噪效果图三;

    图7为喷麦降噪效果图一;

    图8为喷麦降噪效果图二;

    图9为喷麦降噪效果图三。

    具体实施方式

    下面,参考附图,对本发明进行更全面的说明,附图中示出了本发明的示例性实施例。然而,本发明可以体现为多种不同形式,并不应理解为局限于这里叙述的示例性实施例。而是,提供这些实施例,从而使本发明全面和完整,并将本发明的范围完全地传达给本领域的普通技术人员。

    为了易于说明,在这里可以使用诸如“上”、“下”“左”“右”等空间相对术语,用于说明图中示出的一个元件或特征相对于另一个元件或特征的关系。应该理解的是,除了图中示出的方位之外,空间术语意在于包括装置在使用或操作中的不同方位。例如,如果图中的装置被倒置,被叙述为位于其他元件或特征“下”的元件将定位在其他元件或特征“上”。因此,示例性术语“下”可以包含上和下方位两者。装置可以以其他方式定位(旋转90度或位于其他方位),这里所用的空间相对说明可相应地解释。

    如图1至图9所示,本发明一种双麦克风语音降噪方法,其中,在产品正面1设置前置麦克2,在产品背面3设置后置麦克4,采用前后放置的2 颗麦克风进行语音采集,前置麦克的为主麦克,主要负责语音的采集和喷麦噪声的检测。后置麦克为辅助麦克,主要负责喷麦噪声补偿和背景噪声的采集。

    语音输入时,前置麦克和后置麦克同时拾音,开始软件背景噪声降噪算法和喷麦语音降噪算法处理。

    1背景噪声降噪,背景噪声降噪算法处理主要利用前后2路麦克语音数据的频域相关性对主麦克语音数据的频域增益进行修正:

    1.1如附图2所示,前置麦克风和后置麦克风分别获取时域语音数据,采样率为16000hz,即每秒16000个时域语音数据,我们分每帧128 个语音数据进行处理,即每次取128个时域语音数据进行背景噪声降噪。该部分获得输出是时域语音数据T1和T2。

    1.2分别对前置麦克风和后置麦克风的时域语音数据进行频域加窗和傅里叶变换处理,获取频域语音数据。加窗运算选择的是汉宁窗,对每帧128个乘以汉宁窗系数,用来防止后面时频转换时发生频谱混叠,傅里叶变换是时域数据到频域数据的转换,具体算法实现中我们采用快速傅里叶变换(FFT),以减少硬件的负担。该部分的输入是时域语音数据T1和T2,输出是频域语音数据F1 和F2。公式为:

    F1=FFT(hanningwin*T1)

    F2=FFT(hanningwin*T2)。

    1.3对前置麦克和后置麦克的频域语音数据计算自相关谱和互相关谱,用来计算相关性函数。自相关谱(PSD)的计算公式如下(其中F1是频域语音数据):

    PSD=∑|F1|2。

    互相关谱(CPSD)计算公式如下(其中F1表示前置麦克的频域语音数据,F2后置麦克的频域语音数据,符号*是复数的共轭运算): CPSD=∑(|F1|×|F2|*)。

    该部分输入是频域麦克风数据F1和F2,输出是频域自相关谱和互相关谱。

    1.4采用自相关谱和互相关谱运算相关性函数,用来判断前置麦克的频域语音数据和后置麦克的频域语音数据的相关性。原理上,当用户对麦克说话时,前后麦克的相关性函数的值会增大,而当只有背景噪声存在时,前后麦克的相关性函数的值会减小。相关性函数Coh的公式如下(其中CPSD是前置麦克和后置麦克频域语音数据的互相关谱,PSD1是前置麦克频域语音数据的自相关谱, PSD2是后置麦克频域语音数据的自相关谱):

    该部分的输入是频域自相关谱和互相关谱,输出是前置麦克和后置麦克的互相关函数。

    1.5采用相关性函数估计信噪比函数(SNR),当相关性高时,气质和后置麦克的相关性高,因此估计信噪比函数的值高,而当相关性函数相关性低,估计信噪比函数估计值低,所有比较值已经信噪比函数的值采用的是多次实验经验值最终确定。随后,采用估计信噪比函数计算增益函数,增益函数(G)的计算公式是:

    该部分输入是前置麦克和后置麦克语音数据的频域相关性函数,输出是频域增益函数。

    1.6采用增益函数对前置麦克风的频域语音数据进行增益调整,获得降噪后的前置麦克风的频域语音数据。该部分的输入是前置麦克风的频域语音数据和增益函数,输出是降噪后的频域语音数据。公式为(其中F1是前置麦克频域语音数据,F1_new为降噪后的频域语音数据):

    F1_new=G*F1。

    1.7降噪后的频域语音数据进行逆傅里叶变换,将频域语音数据变换成时域语音数据,实际采用的是快速逆傅里叶变换变换(IFFT)。公式为(其中T1_new是降噪后的时域语音数据,F1_new是降噪后的频域语音数据):

    T1_new=IFFT(F1_new)。

    1.8最终输出降噪后的时域语音数据T1_new。

    2喷麦语音降噪算法处理,喷麦语音降噪算法主要利用喷麦噪声的频域能量特性和后置麦克不受喷麦影响的特性对喷麦语音进行降噪处理:

    2.1分析上述背景噪声降噪处理算法中的经过傅里叶变换的前置麦克的频域语音数据,如前置麦克频域语音数据符合喷麦噪声模型,则认为该部分语音属于喷麦噪声。喷麦噪声模型为频域数据 20-4000hz频段频域能量大而且均匀无衰减,具体阈值由实验获取,为经验值。

    2.2经过检测确认为喷麦语音的,用后置麦克的频域语音数据替换原前置麦克的喷麦语音数据,完成对前置麦克喷麦噪声的修复。

    本发明中通过软件算法和硬件结合的方式达到噪声抑制目的:通过前置后置双麦克的方式,从硬件上限制2路麦克的拾音方向,前置麦克拾取的语音强度大,背景噪声相对小,而后置麦克拾取的语音相对小,背景噪声相对大,而且不会包含喷麦噪声。同时软件算法利用硬件麦克拾音的差异在背景噪声的抑制上采用了频域相关性函数计算频域增益的方式,在喷麦噪声上采用了前置麦克检测加后置麦克补偿的方式,很好的解决但颗麦克风上无法规避的问题。

    本发明硬件上结构简单,相比之前的智能语音遥控器仅简单地增加1 路麦克就能达到很好的噪声抑制的功能。软件算法上通过相关性函数的方式抑制了背景噪声,通过检测补偿算法抑制了喷麦噪声。

    背景噪声效果:如图5、图6,是实际录音时的前置麦克和后置麦克录制的语音,可以看到有较强的背景噪声,如图7是降噪后的语音,可以看到经过降噪后的噪声被抑制而语音被完成的保留。

    喷麦噪声消除效果:如图7、图8,是实际录音是前置和后置麦克风录制的语音,可以看到前置麦克风在语音开始的时候有一个很大幅度的声音,是喷麦噪声,而后置麦克没有,如图9,经过喷麦降噪处理后的语音,补偿了喷麦噪声,修复了语音。

    展开全文
  • 一种便于低成本实现的自适应语音降噪算法研究一种便于低成本实现的自适应语音降噪算法研究一种便于低成本实现的自适应语音降噪算法研究
  • 语音降噪/语音增强的几种算法

    万次阅读 多人点赞 2017-05-18 17:32:10
    本文介绍几种简单的降噪算法:自适应滤波器/谱减法/维纳滤波法。

    概述:现实生活中,语音信号一般都带有噪声,在进一步处理信号前(如语音识别,语音编码),往往要对信号进行降噪,本文介绍几种简单的降噪算法:自适应滤波器/谱减法/维纳滤波法。随着信噪比的减小,降噪方法处理的效果也随之变差,也经常使得语音丢字或者波形失真。如何在低信噪比情况下,达到不错的降噪效果,是一个值得探究的问题。

    一. LMS自适应滤波器降噪

    1.1. 基本原理

    LMS自适应滤波器,利用前一刻已获得的滤波器参数,自动调节当前滤波器参数,以适应信号和噪声未知的或随机变化的统计特性,从而实现最优滤波。

    1.2. 原理概述

    输入信号序列xi(n),期望输出信号d(n),定义误差信号为:

    这里写图片描述

    其中wi为权系数。
    LMS算法的本质就是寻找最优的权系数wi,使得误差信号e(n)最小。
    经过一系列推导,得到权系数的迭代公式:

    这里写图片描述

    使用最陡下降法,那么LMS算法的关键问题就变为收敛因子 μ 和梯度因子的求解。

    (1). 收敛因子 μ 控制收敛的速率,其取值范围:

    这里写图片描述

    其中 λ 为相关矩阵的最大特征值。当它趋于无穷大,加权适矢量收敛于最优维纳解。

    (2).梯度因子

    近似计算得到梯度因子表达式:

    这里写图片描述

    因此权系数最终表达为:

    这里写图片描述

    1.3. 算法实施步骤

    1. 设定滤波器W(k)初值:
      这里写图片描述

    2. 计算滤波器实际输出的估计值:
      这里写图片描述

    3. 计算估算误差:
      这里写图片描述
    4. 更新k+1时刻滤波器系数
      这里写图片描述
    5. k变为k+1,重复步骤2-4

    1.4. MATLAB仿真结果

    这里写图片描述

    说明: 加入白噪声信号,信噪比设定为snr = 5,降噪前后的信噪比为:
    这里写图片描述

    二. LMS的自适应陷波器

    2.1. 基本原理

    自适应陷波器法适用于单色干扰噪声,如单频正弦波噪声,希望陷波器的特性理想,缺口的肩部任意窄,可马上进入平坦区域。

    2.2.原理概述

    拿有两个权系数的滤波器为例,输入信号为纯语音和单频干扰的叠加:

    这里写图片描述

    采样后,

    这里写图片描述

    其中,
    这里写图片描述

    参考输入为标准正弦波和余弦波的叠加,
    这里写图片描述;

    x1, x2可以构成任意幅度和相位的正弦波y(n)。
    通过LMS自适应系数调整,使y(n)在幅度和相位与原始输入的单频干扰相同,从而清除单频干扰信号,达到陷波效果。

    2.3. MATLAB仿真结果

    这里写图片描述

    说明:加入信噪比为snr = 5的单频噪声,滤波前后信噪比数值大小:

    这里写图片描述

    三. 基本谱减法

    Tip: 由于基本谱减法带来明显噪声残留,需要进行算法改进。

    3.1. 基本原理

    语音信号处理最常用的方法,在频域进行降噪。

    3.2. 算法步骤

    这里写图片描述

    语音信号对相位不灵敏,将谱减前的相位信息用到谱减后的信号中,在求出谱减后的幅值之后,结合相角,就能用IFFT求出谱减后的语音信号。

    3.3. MATLAB仿真结果

    这里写图片描述

    说明:加入信噪比为snr = 5的白噪声,降噪后听到明显的噪声残留。

    这里写图片描述

    所以需要在谱减法的基础上做一些改进,传统的方法包括S.F.Boll提出的方法,E.Zavarehei根据其理论写了MATLAB函数 SSBoll79。具体细节这里就先不让谈。

    四. 维纳滤波降噪

    4.1. 基本原理

    维纳滤波器降噪即设计一个数字滤波器h(n),使得输入的带噪语音信号与纯净语音信号的误差满足LMS准则

    4.2. 当输入为y(n)时,滤波器输出为:

    这里写图片描述

    根据最小均方误差准则,要使得:
    这里写图片描述

    取极小值。
    经过一系列推导,得到维纳滤波器谱估计器:
    这里写图片描述

    引入先验信噪比和后验信噪比,定义:

    这里写图片描述
    这里写图片描述

    谱估计器可以进一步写成:

    这里写图片描述
    (基于先验信噪比的维纳滤波器谱估计器)
    这里写图片描述
    (基于后验信噪比的维纳滤波器谱估计器)

    引入平滑参数得到先验信噪比和后验信噪比的关系:
    这里写图片描述

    表明由滴i-1帧的先验信噪比和第i帧的后验信噪比,就可求出第i帧的先验信噪比,一旦已知本帧的先验信噪比,就能导出本帧的维纳滤波器传递函数Hi(k)。
    这里写图片描述
    进一步可导出维纳滤波器的输出:
    这里写图片描述

    4.3. MATLAB仿真结果

    这里写图片描述
    说明: 输入信噪比为10dB的白噪声,降噪前后的信噪比:
    这里写图片描述

    参考文献

    [1]. 宋知用. Matlab在语音信号分析与合成中的应用[M]. 北京:北京航空航天大学出版社:2013.

    展开全文
  • 基于独立分量分析的单通道语音降噪算法研究基于独立分量分析的单通道语音降噪算法研究基于独立分量分析的单通道语音降噪算法研究基于独立分量分析的单通道语音降噪算法研究
  • 一种语音降噪方法与流程

    千次阅读 2020-12-24 18:11:31
    本发明涉及音频处理领域,特别涉及一种语音降噪方法。背景技术::现实生活中,语音...现在的语音降噪一般分为,传统信号处理方式:如最小均方算法、谱减法、维纳滤波法;以及神经网络方式,使用深度学习网络直接...
  • 单麦克风语音通话 3A 算法,包括回声消除 AEC、语音降噪 ANR 和自动增益控制 AGC 等。 回声消除 AEC 用于消除麦克采集到的扬声器播放的声音; 语音降噪 ANR 用于消除麦克采集到的环境噪音; 自动增益控制 AGC 则...
  • 发现很多朋友想进入语音降噪处理的大门,却很容易被铺天盖地的理论弄的很迷惑,不知道从哪里开始比较好。网上给出的参考文章大多干说理论,没有代码实现。很不利于学习。...本文给出的降噪算法的核心流...
  • 语音降噪-谱减算法(改进)过减和最小值保护最优过减因子 过减和最小值保护 谱减法的半波整流(小于0,置0)方法,会引入噪声,为了减少音乐噪声,将满足条件的频点不设置为0,而是设置为相邻几帧的最小值。 ∣Xi^(w...
  • 音频降噪算法 附完整C代码

    千次阅读 2020-12-24 11:43:56
    降噪是音频图像算法中的必不可少的。 目的肯定是让图片或语音 更加自然平滑,简而言之,美化。 图像算法和音频算法 都有其共通点。 图像是偏向 空间 处理,例如图片中的某个区域。 图像很多时候是以二维数据为主,...
  • 本文是音频处理的朋友icoolmedia(QQ:314138065)的投稿...对音频处理有兴趣的朋友可以通过下面的方式与他交流:作者:icoolmedia QQ:314138065 音视频算法讨论QQ群:374737122 原文公式较多,因此直接贴上图片。
  • LMS自适应滤波C程序,语音降噪

    热门讨论 2012-05-31 12:18:05
    LMS自适应滤波C程序,语音降噪的。 作业成果
  • QQ 团队基于开源 TensorFlow 机器学习平台实现了音频降噪、音质提升和模型优化算法,将降噪算法应用于 QQ 音视频通话场景中,为用户提供 AI 赋能的智能通讯。 前言 传统降噪方法大部分结合数学、物理原理进行...
  • 语音深度学习降噪与传统降噪

    千次阅读 2020-10-26 10:00:08
    以下只针对语音的深度学习算法, 场景对比: 目前深度学习已经广泛应用于手机,voip,对讲机,TWS蓝牙耳机,算法也一步步完善,但是在个别场景还有待提升,总体效果比传统好得多,深度学习单麦克风可以跟传统双...
  • 投稿 一个频域语音降噪算法实现及改进方法
  • 单通道降噪算法OMLSA

    2020-07-02 10:58:53
    单通道降噪算法OMLSA,可以在语音和噪声之间平衡,保留语音特征,比较好的抑制噪声,尤其是非平稳噪声。 先将一些原理介绍总结如下: https://www.cnblogs.com/xingshansi/p/6956556.html 详细的介绍了几种噪声估计...
  • 提取WebRTC音频降噪、自动增益算法源码,WebRTC ns、agc
  • 深度学习语音降噪总结

    万次阅读 2019-03-14 14:32:03
    实时语音通信发展到今天,用户对通话语音质量提出了越来越高的要求。由于终端设备的多样性以及使用场景的差异,声音问题依然存在。传统的音频处理技术从声音信号本身出发,挖掘其时频特性,作出假设,建立物理模型,...
  • 谱减法语音降噪的Python实现

    千次阅读 2019-09-04 16:05:13
    转自:... 谱减法语音降噪 #!/usr/bin/env python import numpy as np import wave import nextpow2 import math # 打开WAV文档 f = wave.open("input_file.wav...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,829
精华内容 1,531
关键字:

语音降噪算法

友情链接: lib6.zip