精华内容
下载资源
问答
  • 先验信噪比估计

    千次阅读 2019-09-30 17:41:14
    先验信噪比估计 很多降噪算法如维纳滤波、MMSE估计器等都依赖先验信噪比(priori SNR)信息 定义先验信噪比(priori SNR)、后验信噪比(posteriori SNR)如下 ξk(n)=E{Ak2(n)}λd(k,n)(1) \xi_{k}(n)=\frac{E\left\{A_{k...

    先验信噪比估计

    很多降噪算法如维纳滤波、MMSE估计器等都依赖先验信噪比(priori SNR)信息

    定义先验信噪比(priori SNR)、后验信噪比(posteriori SNR)如下
    ξk(n)=E{Ak2(n)}λd(k,n)(1) \xi_{k}(n)=\frac{E\left\{A_{k}^{2}(n)\right\}}{\lambda_{d}(k, n)}\tag1

    γk(n)=Yk2(n)λd(k,n)(2) \gamma_k(n)=\frac{{Y_{k}^{2}(n)}}{\lambda_{d}(k, n)}\tag2

    上式中的Ak(n)A_{k}(n)为目标信号的幅度谱、λd(n)\lambda_d(n)为噪声的功率谱,这里先假定噪声平稳且可以在无语音段估计得到。

    假设噪声和语音不相关且为加性噪声,则ξk\xi_k可以写成下式
    ξk(n)=E{Ak2(n)}λd(k,n)=E{Yk2(n)λd(k,n)}λd(k,n)=E{Yk2(n)}λd(k,n)1=E{λk(n)1}(3) \begin{aligned}\xi_{k}(n)&=\frac{E\left\{A_{k}^{2}(n)\right\}}{\lambda_{d}(k, n)}\\&=\frac{E\left\{Y_{k}^{2}(n)-\lambda_d(k,n)\right\}}{\lambda_{d}(k, n)}\\&=\frac{E\left\{Y_{k}^{2}(n)\right\}}{\lambda_{d}(k, n)}-1\\&=E\left\{\lambda_{k}(n)-1\right\}\end{aligned}\tag3

    一般所说的SNR就是指先验信噪比,维纳滤波器就是关于先验信噪比的函数
    W=ξ1+ξ(4) W=\frac{\xi}{1+\xi}\tag4
    后验信噪比也叫瞬时信噪比,如谱减公式中用到的就是后验信噪比
    A2=Y2λd=1λd(γ1)(5) \begin{aligned}A^2&=|Y|^2-\lambda_d\\&=\frac{1}{\lambda_d}(\gamma-1)\end{aligned}\tag5
    因为谱减法是直接使用瞬时信噪比,因此会更容易产生音乐噪声,当然,也有很多的改进方法减小音乐噪声的影响。

    合并(1)、(3)两式得到以下形式
    ξk(n)=E{12Ak2(n)λd(k,n)+12[γk(n)1]}(6) \xi_k(n)=E\begin{Bmatrix}\frac{1}{2}\frac{A_{k}^{2}(n)}{\lambda_{d}(k, n)}+\frac{1}{2}[\gamma_k(n)-1]\end{Bmatrix}\tag6
    这里还有一个烦人的期望符号EE,还是老方法,用一阶递归平滑代替时间平均,则估计得到的ξk(n)\xi_k(n)为下式:
    ξk^(n)=αA^k2(n1)λd(k,n1)+(1α)max(γk(n)1,0)(7) \hat{\xi_k}(n)=\alpha\frac{\hat{A}_k^2(n-1)}{\lambda_d(k,n-1)}+(1-\alpha)max(\gamma_k(n)-1,0)\tag7
    其中A^k2(n1)\hat{A}_k^2(n-1)表示上一帧的幅度估计值。

    (7)式就是著名的判决引导(Dicision-Directed)公式,被广泛用在了降噪算法的大街小巷里

    例如,webrtc的单通道降噪算法源码里可以看到如下模块

    // Compute prior and post SNR based on quantile noise estimation.
    // Compute DD estimate of prior SNR.
    // Inputs:
    //   * |magn| is the signal magnitude spectrum estimate.
    //   * |noise| is the magnitude noise spectrum estimate.
    // Outputs:
    //   * |snrLocPrior| is the computed prior SNR.
    //   * |snrLocPost| is the computed post SNR.
    static void ComputeSnr(const NoiseSuppressionC *self,
                           const float *magn,
                           const float *noise,
                           float *snrLocPrior, float *logSnrLocPrior,
                           float *snrLocPost) {
        size_t i;
    
        for (i = 0; i < self->magnLen; i++) {
            // Previous post SNR.
            // Previous estimate: based on previous frame with gain filter.
            float previousEstimateStsa = self->magnPrevAnalyze[i] /
                                         (self->noisePrev[i] + 0.0001f) * self->smooth[i];
            // Post SNR.
            snrLocPost[i] = 0.f;
            if (magn[i] > noise[i]) {
                snrLocPost[i] = magn[i] / (noise[i] + 0.0001f) - 1.f;
            }
            // DD estimate is sum of two terms: current estimate and previous estimate.
            // Directed decision update of snrPrior.
            snrLocPrior[i] = 2.f * (
                    DD_PR_SNR * previousEstimateStsa + (1.f - DD_PR_SNR) * snrLocPost[i]);
            logSnrLocPrior[i] = logf(snrLocPrior[i] + 1.0f);
        }  // End of loop over frequencies.
    }
    
    展开全文
  • 先验信噪比单通道语音增强算法在信噪比较高时能有效地去除噪声,但在信噪比较低时语音高次谐波失真较为严重。针对此提出了一种基于谐波重构的先验信噪比估计算法,对增强后的信号加权求平方,进行功率谱的二次谱处理...
  • 噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大...
          原文转载于:https://user.qzone.qq.com/314138065/blog/1442843834      非常感谢。
         噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE(最小均方误差)算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大。这个结论其实通过验证可以得出,先验信噪比是影响噪声抑制的主要参数,后验信噪比是辅助参数。

           那么先验信噪比与后验信噪比它们之间又有什么关系,这里做一个分析。
           先看下面的一个公式:
     
          这里k为帧数,m为频率,先验信噪比等于纯净语音信号的功率(X)除以噪声信号的功率(D),假设语音信号是平稳的,且噪声与语音信号不相关,则等于带噪语音功率(Y)减去噪声功率(D)后除以噪声功率,最后化简为先验信噪比等于后验信噪(gamma)比减去1。

          另外,根据统计学中的先验信噪比与后验信噪比的关系,已知:

          这里,我们发现,第二个公式跟第一个是很像的,如果我们把这两个公式中的值分别只取一半进行中和一下,可以得到第三个公式:

          再扩展下,如果这里的权重1/2变成一个变量a,上式就变为:

          这个公式就是知名的判决引导法公式,很多降噪算法就使用这个公式进行先验信噪比的估计!

    参考文献:https://user.qzone.qq.com/314138065/blog/1442843834
    展开全文
  • 一种基于改进非因果先验信噪比的语音增强算法,戴荣涛,严勤,本文提出一种改进的非因果先验信噪比估计的最小对数均方误差的短时谱估计算法。算法用倒谱平滑来改进先验信噪比估计,由于非因果
  • 噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大...

    噪声抑制算法中,谱减算法用的是后验证信噪比,维纳滤波器使用的是先验信噪比,MMSE算法既用到了先验信噪比,也用到了后验信噪比,那么,自然提出一个问题,在降噪过程中,先验信噪比与后验信噪比到底那个作用比较大。这个结论其实通过验证可以得出,先验信噪比是影响噪声抑制的主要参数,后验信噪比是辅助参数。

     
    那么先验信噪比与后验信噪比它们之间又有什么关系,这里做一个分析。中间如有不清楚的地方,可以到群(374737122)内寻求帮助。
     
    先看下面的一个公式:
    这里k为帧数,m为频率,先验信噪比等于纯净语音信号的功率(X)除以噪声信号的功率(D),假设语音信号是平稳的,且噪声与语音信号不相关,则等于带噪语音功率(Y)减去噪声功率(D)后除以噪声功率,最后化简为先验信噪比等于后验信噪(gamma)比减去1。
     
    另外,根据统计学中的先验信噪比与后验信噪比的关系,已知:
    这里,我们发现,第二个公式跟第一个是很像的,如果我们把这两个公式中的值分别只取一半进行中和一下,可以得到第三个公式:

    再扩展下,如果这里的权重1/2变成一个变量a,上式就变为:

    这个公式就是知名的判决引导法公式,很多降噪算法就使用这个公式进行先验信噪比的估计!
     
    本文来自于icoolmedia,有对相关算法感兴趣的朋友,欢迎加入音视频算法讨论QQ群(374737122)里一起交流!
    展开全文
  • 算法采用非因果先验信噪比估计法来估计先验信噪比,并引入无语音概率的思想,对增益函数进行改进。实验结 果表明,相比传统MMSE-LSA算法,改进算法能更好地抑制残留噪声,提高语音的信噪比,增强效果更好。
  • 本章提出了一种语音增强算法,该算法以基于先验信噪比估计的维纳滤波法为基础。通过计算无声段的统计平均得到初始噪声功率谱,并平滑处理初始噪声功率谱和带噪语音功率谱,更新了噪声功率谱;最后,考虑了某频率点处...

    一、简介

    本章提出了一种语音增强算法,该算法以基于先验信噪比估计的维纳滤波法为基础。通过计算无声段的统计平均得到初始噪声功率谱,并平滑处理初始噪声功率谱和带噪语音功率谱,更新了噪声功率谱;最后,考虑了某频率点处噪声急剧增大的情况,做了相关验证,该算法能有效地抑制变化范围不大或是稳定的噪声,但是对实际中的变化范围很广的噪声效果不是很好。
    1、语音增强概述
    1.1 语音增强的相关概念
    嵌在语音系统中,语音信号不可避免的会受到周围噪声的干扰,从而影响语音的质量与可懂度。
    语音增强:其实就是带噪语音中提取尽可能纯净的语音,改善语音质量和可懂度,提高噪声环境下语音通信系统的性能。
    噪声都随机产生的,不可能完全消除。语音增强的目标是:减弱噪声、消除背景噪声、改进语音质量、使听着乐于接受,提高语音可懂度。
    1.2 语音增强的相关算法
    由于噪声来源众多,特性各不相同。语音增强处理系统的应用场合千差万别。
    因此,不存在一种可以通用于各种噪声环境的语音增强算法。针对不同的环境,采取不同的语音增强算法。
    语音增强算法按处理方式可以分为:基于语音周期性的增强算法,基于全极点模型的增强算法,基于短时谱估计的增强算法,基于信号子空间的增强算法和
    基于HMM的增强算法。
    从目前的发展来看,基于短时谱估计的方法是最有效的方法。具体包括谱减法、维纳滤波、最小均方误差短时谱幅度估计法(MMSE-STSA)和最小均方误差对数谱幅度估计法(MMSE-LSA)。本文主要讨论使用维纳滤波器实现语音的增强处理。
    2 基于先验信噪比估计的维纳滤波语音增强理论
    先验信噪比是语音增强算法中非常重要的参数。 通过Ephraim和 Malah提出的“直接判决”估计来计算先验信噪比的方法是最有效的和最容易计算的。
    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    clear all; clc; close all;
    
    [xx, fs] = wavread('C5_3_y.wav');           % 读入数据文件
    xx=xx-mean(xx);                         % 消除直流分量
    x=xx/max(abs(xx));                      % 幅值归一化
    IS=0.25;                                % 设置前导无话段长度
    wlen=200;                               % 设置帧长为25ms
    inc=80;                                 % 设置帧移为10ms
    SNR=5;                                  % 设置信噪比SNR
    NIS=fix((IS*fs-wlen)/inc +1);           % 求前导无话段帧数
    alpha=0.95;
    
    signal=awgn(x,SNR,'measured','db');               % 叠加噪声
    output=Weina_Im(x,wlen,inc,NIS,alpha) ;
    output=output/max(abs(output));
    len=min(length(output),length(x));
    x=x(1:len);
    signal=signal(1:len);
    output=output(1:len);
    
    snr1=SNR_Calc(x,signal);            % 计算初始信噪比
    snr2=SNR_Calc(x,output);            % 计算降噪后的信噪比
    snr=snr2-snr1;
    fprintf('snr1=%5.4f   snr2=%5.4f   snr=%5.4f\n',snr1,snr2,snr);
    
    % 作图
    time=(0:len-1)/fs;                        % 设置时间
    subplot 311; plot(time,x,'k'); grid; axis tight;
    title('纯语音波形'); ylabel('幅值')
    subplot 312; plot(time,signal,'k'); grid; axis tight;
    title(['带噪语音 信噪比=' num2str(SNR) 'dB']); ylabel('幅值')
    function frameout=enframe(x,win,inc)
    
    nx=length(x(:));            % 取数据长度
    nwin=length(win);           % 取窗长
    if (nwin == 1)              % 判断窗长是否为1,若为1,即表示没有设窗函数
       len = win;               % 是,帧长=win
    else
       len = nwin;              % 否,帧长=窗长
    end
    if (nargin < 3)             % 如果只有两个参数,设帧inc=帧长
       inc = len;
    end
    nf = fix((nx-len+inc)/inc); % 计算帧数
    frameout=zeros(nf,len);            % 初始化
    indf= inc*(0:(nf-1)).';     % 设置每帧在x中的位移量位置
    inds = (1:len);             % 每帧数据对应1:len
    frameout(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));   % 对数据分帧
    if (nwin > 1)               % 若参数中包括窗函数,把每帧乘以窗函数
        w = win(:)';            % 把win转成行数据
        function frameout=filpframe(x,win,inc)
    
    [nf,len]=size(x);
    nx=(nf-1) *inc+len;                 %原信号长度
    frameout=zeros(nx,1);
    nwin=length(win);                   % 取窗长
    if (nwin ~= 1)                           % 判断窗长是否为1,若为1,即表示没有设窗函数
        winx=repmat(win',nf,1);
        x=x./winx;                          % 除去加窗的影响
        x(find(isinf(x)))=0;                %去除除0得到的Inf
    end
    
     
    for i=1:nf
        start=(i-1)*inc+1;    
        xn=x(i,:)';
        sig(start:start+len-1)=sig(start:start+len-1)+xn;
    end
    

    三、运行结果

    在这里插入图片描述

    四、备注

    完整代码或者代写添加QQ1575304183

    往期回顾>>>>>>

     

    【信号处理】基于HMM的睡眠状态检测matlab源码

    【信号处理】基于小波变换的音频水印嵌入提取matlab源码

    【信号处理】基于遗传算法的VST混响matlab源码

    【信号处理】脉搏信号之脉率存档matlab源码含GUI

    【信号处理】单通道盲源分离(SSA-ICA)算法

    【信号处理】数字电子琴设计与实现matlab源码

    【信号处理】LDPC码的校验矩阵、编译码matlab源码

    【语音加密】基于混沌算法的语音信号加密解密matlab源码

    【信号处理】基于小波变换的语音增强matlab源码

    【语音增强】基于维纳滤波之语音增强matlab源码
    【信号处理】OFDM-MIMO通信建模与仿真matlab源码

    【信号处理】数字调制信号仿真matlab源码含GUI

    【信号处理】基于LMS算法信号去噪matlab源码

    【信号处理】基于小波变换的量化音频数字水印matlab源码

    【信号处理】基于小波变换的音频水印嵌入与提取matlab源码

    【语音识别】基于BP神经网络的语音情感识别matlab源码

    【信号处理】基于小波变换的音频水印嵌入与提取matlab源码

    【情感识别】基于改进KNN语音情感分类识别malab源码含GUI

    【信号去噪】基于谱减法去噪matlab源码

    【语音识别】基于高斯混合模型(GMM)的语音识别matlab源码

    【语音识别】基于动态时间规整(DTW)的孤立字语音识别matlab源码

    【语音识别】基于隐马尔可夫模型(HMM)的孤立字语音识别matlab源码

    展开全文
  • 本章提出了一种语音增强算法,该算法以基于先验信噪比估计的维纳滤波法为基础。通过计算无声段的统计平均得到初始噪声功率谱,并平滑处理初始噪声功率谱和带噪语音功率谱,更新了噪声功率谱;最后,考虑了某频率点处...
  • 本章提出了一种语音增强算法,该算法以基于先验信噪比估计的维纳滤波法为基础。通过计算无声段的统计平均得到初始噪声功率谱,并平滑处理初始噪声功率谱和带噪语音功率谱,更新了噪声功率谱;最后,考虑了某频率点处...
  • 如需转载,请注明出处!...核心思想:利用噪声平滑估计,结合MMSE-STSA的 Decision-Directed推导出的先验信噪比估计方法,应用进Wiener滤波去噪或谱减法去噪算法中。 给出结论:
  • 基于先验信息的低信噪比调频连续波雷达信号处理
  • 当α→1时ξm,k会近似于前一帧的先验信噪比估计值,所以α的作用在于将相邻两帧估计的先验信噪比进行平滑加权。 从上面公式得知,DD算法的估计结果是ξm,kDD估计出的是第m-1帧的语音频谱分量的先验信噪比,而实际...
  • 针对语音增强技术中先验信噪比参数的估计问题,本文通过结合两步噪声消除技术以及语音与噪声分量的高斯统计模型,在频率域中提出了一种新的先验信噪比估计算法。该算法基于直接判决方法的输出结果,利用最小均方误差...
  • PICHCS利用多光谱图像的空间相关性和谱间相关性重建出初始图像,并将相邻谱段的初始图像取平均获得高信噪比先验图像。先验图像与目标图像相减可以使优化目标稀疏化,并使得重建结果具有与先验图像类似的高信噪比...
  • 针对强噪声环境下语音增强中噪声估计和先验信噪比估计算法导致的语音失真和音乐噪声的问题,利用语音和噪声的统计模型的对称性得到一种噪声幅度的估计值为参考,提出了一种噪声估计算法,改进了先验信噪比估计算法,...
  • 针对几何谱减算法在处理快速变化的语音时产生语音畸变的缺点,提出一种基于最小均方误差算法估计每帧语音信号的每一个频率分量上的平滑系数,产生自适应帧频率分量平滑系数代替固定值的平滑系数来估计先验信噪比,...
  • 在基于先验信噪比的维纳滤波语音增强算法的基础上,结合语音端点检测算法,本文提出一种新算法。新算法在语音端点检测的基础上,通过平滑处理更新噪声信号功率谱以适应噪声不稳定的环境;通过计算有声段噪声信号估计...
  • 上文学习了webrtc中利用当前帧经过STFT得到频率幅值,结合quantile算法,先进行一轮初始噪声估计,但这还没完,接下来利用这个估计的噪声和频率幅值带入到ComputeSnr中,计算先验信噪比和后验信噪比, 1.先验信噪比...
  • 每种MMSE方法都需要对带噪语音频谱成分进行先验信噪比(SNR)估计。 这里采用了深度学习的方法准确估计先验信噪比。 在这项工作中,使用语音质量和可懂度的主客观测量来评估使用深度学习的MMSE方法。测试条件包括...
  • b,则两次DD算法的先验信噪比ξm,ka和ξm,kb 因此,ξm,ka的取值接近于DD算法中对前一帧的先验SNR的估计值,在无语音区其取值波动较小,降噪中的音乐噪声产生较少,当语音突然出现时,其估计值明显跟不上瞬时...
  • 提出了一种结合噪声分布先验知识的稀疏表示混合去噪算法。该算法通过自适应中值滤波器进行初始化来分析噪声分布先验,对稀疏编码中的原子进行自适应加权。...实验表明本算法在峰值信噪比PSNR和去噪效率上都有明显优势。
  • 由于大多数语音降噪都可以由一个先验信噪比参数的增益函数来表示,则说明语音降噪的整体性能在很大程度上依赖于对先验信噪比估计的准确性。 设y(t) , s(t)和n(t)分别是混合有干扰的观测信号,纯语音信号和噪声信号...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

先验信噪比