当前位置:   article > 正文

基于MATLAB语音信号的数字滤波_基于matlab的语音信号滤波处理

基于matlab的语音信号滤波处理

MATLAB语音信号的数字滤波

一、实验目的

  1. 掌握使用 FFT 进行信号谱分析的方法
  2. 设计数字滤波器对指定的语音信号进行滤波处理

二、实验内容

  1. 导入音频信号,并绘制出时域波形和频域波形:
    音频时域波形
    音频频域波形
    可以看到,频谱上有很多额外的噪音频率,在时域上从第7秒末开始存在大量噪音。
    2. 根据上图中的噪声频谱信息,确定了噪声的频率为1575Hz、3150Hz和4725Hz,设计相应的滤波器,滤除这些频率分量。
    其中,滤除1575Hz的滤波器频率响应曲线如下图所示。
    通过滤波器后音频时域波形

通过滤波器后音频频域波形
可以看到,除了有一部分直流分类没有滤除外,其他的噪声分量被滤波器过滤,时域上的噪音得到明显遏制。

三、额外处理

值得注意的是,在完成以上处理之后,声音在7秒末和9秒末会出现明显跳变,十分刺耳。很明显这是由第8-10秒存在一定的直流分量造成的,同时在7秒末和9秒末存在冲击。通过滤波器,可以滤除低频分量,通过以下代码实现了直流分量的滤除:

freqmax = 1/fs
B = -2*cos(freqmax*2*pi)
hh = [1, B, 1];
yy = filter(hh, 1, yy);
  • 1
  • 2
  • 3
  • 4

因为时域上音频信号幅值明显小于0.5,冲击却明显远大于0.5,因此可通过以下代码实现消除冲击:

for k = 1:N
     if yy(k)>=0.5 || yy(k)<=-0.5
         yy(k) = 0;
     end
end
  • 1
  • 2
  • 3
  • 4
  • 5

在我滤除直流分量以及冲击量后,波形进一步规则,得到的时域赫尔频域波形
额外处理后的音频时域波形
额外处理后的音频频域波形此时音频的跳变消失,变得十分自然。

四、实验结果分析

在通过滤波器后,噪声频率分量得到有效的滤除,但由于存在直流分量,8-10秒声音的幅度不在0附近波动。频域上由于直流分类幅度过大,导致正常的频率分量几乎看不见。经过上述额外处理后,消除直流分类,可以看到音频主要集中在0-4kHz。

五、源代码

所使用的音频文件、MATLAB代码:
源代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/287786
推荐阅读
相关标签
  

闽ICP备14008679号