一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【语音去噪】基于matlab谱减法去噪【含Matlab源码 429期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、谱减法简介

在语音去噪中最常用的方法是谱减法,谱减法是一种发展较早且应用较为成熟的语音去噪算法,该算法利用加性噪声与语音不相关的特点,在假设噪声是统计平稳的前提下,用无语音间隙测算到的噪声频谱估计值取代有语音期间噪声的频谱,与含噪语音频谱相减,从而获得语音频谱的估计值。谱减法具有算法简单、运算量小的特点,便于实现快速处理,往往能够获得较高的输出信噪比,所以被广泛采用。该算法经典形式的不足之处是处理后会产生具有一定节奏性起伏、听上去类似音乐的“音乐噪声”。

转换到频域后,这些峰值听起来就像帧与帧之间频率随机变化的多频音,这种情况在清音段尤其明显,这种由于半波整流引起的“噪声”被称为“音乐噪声”。从根本上,通常导致音乐噪声的原因主要有:
(1)对谱减算法中的负数部分进行了非线性处理
(2)对噪声谱的估计不准
(3)抑制函数(增益函数)具有较大的可变性
1 原理





2 流程图

3 谱减法的缺点
1)由于对负值进行半波整流,导致帧频谱的随机频率上出现小的、独立的峰值,变换到时域上面,这些峰值听起来就像帧与帧之间频率随机变化的多颤音,也就是通常所说的“音乐噪声”(Musical Noise)。
2)另外,谱减法还存在一个小缺点就是使用带噪语音的相位作为增强后语音的相位,因此产生语音的质量可能比较粗糙,尤其是在低信噪比的条件下,可能会达到被听觉感知的程度,降低语音的质量。
为了更好的理解谱减法语音增强,这里对该算法进行简单仿真,仿真参数设置如下

三、部分源代码

winsize=256;%窗长
n=0.23;%噪声水平
a=4;b=6;
[speech,fs,nbits]=wavread('speech_dft.wav');%读入wav文件
speech=speech(:,1);
size=length(speech);%语音长度
numofwin=floor(size/winsize);%窗数
%定义汉明窗
ham=hamming(winsize)';
hamwin=zeros(1,size);
enhanced=zeros(1,size);
improved=zeros(1,size);
%生成噪声信号
noise=n*randn(1,size);
y=speech'+noise;
%噪声处理
noisy=n*randn(1,winsize);
N=fft(noisy);
npow=abs(N);
for q=1:2*numofwin-1yframe=y(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2);%分帧hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham;%加噪信号FFTy1=fft(yframe.*ham);ypow=abs(y1);%加噪信号幅度yangle=angle(y1);%相位%计算功率谱密度Py=ypow.^2;Pn=npow.^2;Pyy=ypow.^a;Pnn=npow.^a;%基本谱减for i=1:winsizeif Py(i)-Pn(i)>0Ps(i)=Py(i)-Pn(i);elsePs(i)=0;endends=sqrt(Ps).*exp(1i*yangle);for i=1:winsizeif Pyy(i)-b*Pnn(i)>0Pss(i)=Pyy(i)-b*Pnn(i);elsePss(i)=0;endendss=Pss.^(1/a).*exp(1i*yangle);%去噪语音IFFTenhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(s));improved(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=improved(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+real(ifft(ss));
end
%去除汉明窗引起的增益
for i=1:sizeif hamwin(i)==0enhanced(i)=0;improved(i)=0;elseenhanced(i)=enhanced(i)/hamwin(i);improved(i)=improved(i)/hamwin(i);end
end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

【语音去噪】基于matlab谱减法去噪【含Matlab源码 429期】相关推荐

  1. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  4. 【Matlab语音隐写】DCT+DWT音频数字水印嵌入提取【含GUI源码 836期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DCT+DWT音频数字水印嵌入提取[含GUI源码 836期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  5. 【Matlab语音隐写】DWT音频数字水印【含GUI源码 712期】

    一.代码运行视频(哔哩哔哩) [Matlab语音隐写]DWT音频数字水印[含GUI源码 712期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  6. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  7. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  8. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  9. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  10. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

最新文章

  1. CSS 居中完全指南
  2. [ios2]iOS 使用subversion管理iOS源代码 【转】
  3. 笔记-中项案例题-2018年上-整体管理
  4. 将一个指针 free 两次之后会发生什么?
  5. 太网设计FAQ:以太网MAC和PHY
  6. win8 linux分区工具,Ubuntu下挂载Win8磁盘分区
  7. 分享一个在线vim网站
  8. WinSock Socket 池
  9. 国科大学习资料--机器人学导论(张正涛)--2014年期末考试试卷(含答案)
  10. GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)
  11. jzxx1105 【入门】字符图形4-星号正三角
  12. linux dev/zero,/dev/zero是什么意思
  13. 短消息类新旧服务代码对应表
  14. python3中单引号,双引号,三个单引号 ,三个双引号的差别,以及反斜杠的用法
  15. Landsat数据下载+USGS
  16. 亚商投资顾问 早餐FM/0913
  17. 新西兰留学再移民,哪些专业好就业?
  18. C语言标准ANSI C、C语言的特点、C语言的关键字(32个)
  19. python代码学习
  20. css 光影掠过文字显现动画

热门文章

  1. POJ1742Coins
  2. 17暴力或dfs:凑算术
  3. CodeForces - 808B Average Sleep Time
  4. 创建文本节点createTextNode
  5. BZOJ 2724: [Violet 6]蒲公英( 分块 )
  6. FZU 2041 二分枚举
  7. TabContainer样式设置(2)
  8. 190413每日一句
  9. Unity 两物体的碰撞 OnTriggerEnter和OnCollisionEnter
  10. HTC 手柄扣动板机出现射线以及碰撞点用小球表示