首页 > 其他分享 >基于短时幅度谱估计方法的数字语音信号增强matlab仿真

基于短时幅度谱估计方法的数字语音信号增强matlab仿真

时间:2023-04-12 23:09:18浏览次数:30  
标签:信号 谱估计 噪声 SmoothFactor 短时 matlab 语音 ymag 维纳滤波

1.算法仿真效果 matlab2022a仿真结果如下: 1.png2.png

2.算法涉及理论知识概要 语音处理过程中受到各种各样噪声的干扰,不但降低了语音质量,而且还将使整个系统无法正常工作。因此,为了消除噪声干扰,在现代语音处理技术中,工业上一般采用语音增强技术来改善语音质量从而提高系统性能。基于短时幅度谱估计来研究语音增强,主要介绍了功率谱相减、维纳滤波法,并介绍了这几种语音增强方法的基本原理和实现方法。通过研究,我们得到在白噪声的条件下,这些语音增强方法具有很好的增强效果,可作为开发实用语音增强方法的基础。

2.1谱减法 假定语音为平稳信号,而噪声和语音为加性信号且彼此不相关。此时带噪语音信号可表示为

3.png4.png

    上式中,下标w表示加窗信号,*表示复共轭。可以根据观测数据估计,其余各项必须近似为统计均值。由于n(t)和s(t)独立,则互谱的统计均值为0。为了用傅立叶逆变换再现语音,还需要的相位,这里用表示。此时可借用带噪语音相位,即的相位来近似。因而则恢复的语音是估值的傅立叶反变换,如下所示:

5.png

2.2 语音增强——维纳滤波 设维纳滤波器的输入为含噪声的随机信号。期望输出与实际输出之间的差值为误差,对该误差求均方,即为均方误差。因此均方误差越小,噪声滤除效果就越好。为使均方误差最小,关键在于求冲激响应。如果能够满足维纳-霍夫方程,就可使维纳滤波器达到最佳。根据维纳-霍夫方程,最佳维纳滤波器的冲激响应,完全由输入自相关函数以及输入与期望输出的互相关函数 所决定。

6.png

   这就是维纳滤波器(Wiener filter)。当信号x[n]和b[n]满足以上的假设条件时,维纳滤波的方法能够实现噪声抑制,并且不会引入很大的目标估计失真和背景残留噪声。所需要的功率谱和可以分别从时间序列x[n]与b[n]通过多帧平均得到。然而在实际中,目标信号和背景噪声都是非平稳的,也就是说,它们的功率谱会随着时间变化,即可以表示成时变函数和。因此,理想的情况是对每一帧信号的STFT采用不同的维纳滤波器进行滤波。在这里,我们考虑了平稳的背景噪声情况,时变的维纳滤波器可以表示成: 

7.png 8.png

   是对式做了压缩(开方)处理,所以谱减的一直效果不如维纳滤波方法。与谱减的另一个重要的区别是维纳滤波并不需要一个绝对的门限。由于噪声也是随机过程,因此这种估计只能建立在统计模型基础上。人耳感知对语音频谱分量的相位不敏感,因此目前的增强算法主要针对短时谱幅度。

3.MATLAB核心程序

overlap=FrameLen/2;
inc=FrameLen-overlap;            %帧移
x_frame=enframe(x,FrameLen,inc); %分帧
nf=size(x_frame,1);              % 帧数
win=hamming(FrameLen)';
x_window=[];
for k=1:nf
    x_row=x_frame(k,:).*win;     % 加窗
    x_window=[x_window;x_row];   
end
%对带噪语音进行DFT
y=fft(x_window');
ymag = abs(y);			
yphase = angle(y);	                         
NNoise=23;                      %取噪音段(语音的初始段)帧数
MN=mean(ymag(:,1:NNoise)')';
PN=mean(ymag(:,1:NNoise)'.^2)'; %初始噪声功率谱均值
 
NoiseCounter=0;%连续噪声段长度
SmoothFactor=9;%噪声平滑因子
Alpha=0.95;    %语音平滑因子
SNRPre=ones(size(MN));
 
%维纳滤波
for k=1:nf
     if k<=NNoise 
        SpeechFlag=0;
        NoiseCounter=NNoise;
    else 
           NoiseMargin=3;
           HangOver=8;
           SpectralDist= 20*(log10(ymag(:,k))-log10(MN));
           SpectralDist(find(SpectralDist<0))=0;
           Dist=mean(SpectralDist); 
           if (Dist < NoiseMargin) 
            NoiseFlag=1; 
            NoiseCounter=NoiseCounter+1;
           else
            NoiseFlag=0;
            NoiseCounter=0;
           end 
           if (NoiseCounter > HangOver) 
           SpeechFlag=0;    
           else 
           SpeechFlag=1; 
           end 
     end
    
    if SpeechFlag==0 
        MN=(SmoothFactor*MN+ymag(:,k))/(SmoothFactor+1);      %更新噪声均值
        PN=(SmoothFactor*PN+(ymag(:,k).^2))/(1+SmoothFactor); %更新噪声功率
    end

标签:信号,谱估计,噪声,SmoothFactor,短时,matlab,语音,ymag,维纳滤波
From: https://blog.51cto.com/matworld/6186326

相关文章

  • 基于蚁群优化算法的三维路径规划算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要蚁群算法是受到对真实蚂蚁群觅食行为研究的启发而提出。生物学研究表明:一群相互协作的蚂蚁能够找到食物和巢穴之间的最短路径,而单只蚂蚁则不能。生物学家经过大量细致观察研究发现,蚂蚁个体之间的行为是相互作用......
  • 基于短时幅度谱估计方法的数字语音信号增强matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        语音处理过程中受到各种各样噪声的干扰,不但降低了语音质量,而且还将使整个系统无法正常工作。因此,为了消除噪声干扰,在现代语音处理技术中,工业上一般采用语音增强技术来改善语音质量从......
  • m基于matlab的卷积编码维特比译码误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要随着现代通信的发展,人们对信息传输的可靠性和有效性的要求也越来越高。维特比译码算法被广泛的应用,因此如何提高维特比译码器的性能,降低译码器的功耗和面积是个重要的问题。卷积码是Elias等人在1955年提出的,是一种......
  • 第二章 MATLAB语言基础
    一、基本概念1、MATALAB主要数据类型 2、整数类型MATLAB中提供了8种内置的整数类型,如下:由于MATLAB中数值的默认存储类型是双精度浮点类型,因此必须通过表2-1中列出的转换函数将双精度浮点数值转换成指定的整数类型。在转换中,MATLAB默认将待转换数值转换为最近......
  • MATLAB代码:基于DBSCAN密度聚类的风电-负荷场景削减方法
    MATLAB代码:基于DBSCAN密度聚类的风电-负荷场景削减方法关键词:密度聚类场景削减DBSCAN场景生成与削减kmeans 参考文档:《氢能支撑的风-燃气耦合低碳微网容量优化配置研究》第3章:完美复现仿真平台:MATLAB主要内容:代码主要做的是一个基于DBSCAN密度聚类的风电-负荷场景生成与......
  • 基于PSO粒子群算法优化RBF网络的数据预测matlab仿真
    1.算法描述1985年,Powell提出了多变量插值的径向基函数(RBF)方法。径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也可以是到任意一点c的距离,c点称为中心点。任意满足上述特性的函数,都可以叫做径向基函数。一般使用欧氏距离计算距离中心点的距离(欧式径向基函数)。最常用的径向......
  • MATLAB代码:含风光柴储微网多目标优化调度
    MATLAB代码:含风光柴储微网多目标优化调度关键词:微网调度风光柴储 粒子群算法多目标优化仿真平台:MATLAB平台采用粒子群实现求解主要内容:代码构建了含风机、光伏、柴油发电机以及储能电站在内的微网优化运行模型,并且考虑与上级电网的购售电交易,综合考虑了多方经济成本以及风......
  • MATLAB代码:基于列约束生成法CCG的两阶段鲁棒问题求解
    MATLAB代码:基于列约束生成法CCG的两阶段鲁棒问题求解关键词:两阶段鲁棒列约束生成法CCG算法鲁棒优化参考文档:《Solvingtwo-stagerobustoptimizationproblemsusingacolumn-and-constraintgenerationmethod》仿真平台:MATLABYALMIP+CPLEX优势:代码注释详实,适合参考学......
  • MATLAB代码:基于主从博弈的产消者 微网群优化定价模型
    MATLAB代码:基于主从博弈的产消者微网群优化定价模型关键词:主从博弈产消者微网动态定价能量管理仿真平台:matlab主要内容:为了提高用户间光伏电量共享水平,根据用户的用电特性,构建了光伏用户群内的多买方—多卖方格局。结合分布式光伏上网政策,运营商作为主导者,以其收益最......
  • MATLAB代码:基于共享储能电站的工业用户日前优化经济调度
    MATLAB代码:基于共享储能电站的工业用户日前优化经济调度关键词:共享储能储能电站容量优化配置充放电优化日前优化调度  参考文档:《基于共享储能电站的工业用户日前优化经济调度》完全复现仿真平台:MATLAB+CPLEX主要内容:代码主要做的是一个共享储能电站的优化调度问题,考虑......