0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MATLAB的数字滤波器语音信号去噪

思沉渊 来源:思沉渊 作者:思沉渊 2024-10-10 18:22 次阅读

1.1设计目标
(1)利用Windows下的录音或其他软件,采集一段语音信号,名为“add.wav”,利用MATLAB中的audioread命令对该信号进行采样;
(2)根据语音信号的频率图选择合适的单频噪声;
(3)根据加入的噪声选择合适的滤波器
(4)利用设计好的滤波器滤除加入的高频噪声,得到原语音信号。

利用的是用汉明窗函数法设计出FIR低通滤波器。

(1)程序代码
Fs=22050;
[y,Fs] = audioread('E:shukdrightadd.wav');
N=length(y); %采样点数
y=y(:,1);
Z=fft(y,1200);
Z=abs(Z);%取绝对值,只显示y轴的正半轴
f=(Fs/1630)*[1:1630];
figure(1);
subplot(2,1,1);plot(y);xlabel(‘t’);title('原始信号时域波形图');
subplot(2,1,2);plot(f(1:800),Z(1:800));xlabei(‘Hz’)
title('原始语音信号采样后的频谱图');
%sound(y, Fs) %听原始音频
%单频噪声
t=0:length(y)-1;
zs=0.1*cos(2*pi*10000*t/2100);
zs0=0.1*cos(2*pi*10000*t/200000000);
zs1=fft(zs,1200);
zs1=abs(zs1);
figure(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
subplot(2,1,2)
plot(f(1:800),zs1(1:800));
title('噪声信号频谱');
%加噪声
x1=y+zs';
y1=fft(x1,1200);
y1=abs(y1);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪声后的信号波形');
subplot(2,1,2);
plot(f(1:800),y1(1:800));
title('加入噪声后的信号频谱');
%sound(x1,Fs); %回放加入噪声后的语音

%滤波器FIR滤波器 汉明窗
fp1=9500; % 通带和阻带频率
fs1=10000;
wp1=2*pi*fp1/Fs;
ws1=2*pi*fs1/Fs;
deltaw=ws1-wp1;%过渡带宽
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2); %为实现FIR类型1偶对称滤波器,应确保N为奇数
windows=hamming(N);%使用哈明窗,此句可省略
wc=(ws1+wp1)/2;
b=fir1(N-1,wc/pi,windows);%用fir1函数求系统函数系数,windows可省略
[db,mag,pha,grd,w]=freqz_m(b,1);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(1:wp1/dw+1))); %检验通带波动
As=-round(max(db(ws1/dw+1:501))); %检验最小阻带衰减
figure(4);
subplot(2,1,1);plot(w/pi/2*Fs,db);axis([0,Fs/2,-200,10]);
title('幅度频率响应');
xlabel('频率(单位:Hz)');ylabel('H(e^{jomega})');
set(gca,'XTickMode','manual','XTick',[0,fp1,fs1,15000]);
set(gca,'YTickMode','manual','YTick',[-100,-50,-3,0]);grid
subplot(2,1,2);plot(w/pi/2*Fs,pha);axis([0,Fs/2,-4,4]);
title('相位频率响应');
xlabel('频率(单位:Hz)');ylabel('phi(omega)');
set(gca,'XTickMode','manual','XTick',[0,fp1,fs1,15000]);
set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid
%滤波
h1=filter(b,1,x1);% 用filter函数进行滤波
X1=fft(h1,1200);
X1=abs(X1);
figure(5);
subplot(211);plot(h1);title('滤波后时域图');xlabel('t');
subplot(212);plot(f(1:800),X1(1:800));title('滤波后频谱图');
xlabel('频率(Hz)');

%sound(y, Fs); %听原始音频
%sound(x1,Fs); %回放加入噪声后的语音
%sound(h1,Fs); %听去噪音频
% clear sound %%终止播放

(2)运行结果展示
N =293
Rp =0.0269
As = 54

wKgZoWcHqe-AN7SDAF_SzB7ijzg758.png

wKgZoWcHqhOAPpMEAFTzL06AMGA178.png

但是太久了具体细节我也记得,有啥问题,自己摸索一下,嘿嘿嘿嘿,对了,音频文件的位置要跟代码写的一样,不然软件会找不音频的。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    179

    文章

    2951

    浏览量

    229759
  • 滤波器
    +关注

    关注

    159

    文章

    7644

    浏览量

    177001
  • 数字滤波器
    +关注

    关注

    4

    文章

    266

    浏览量

    46934
  • 语音信号
    +关注

    关注

    3

    文章

    69

    浏览量

    22778
收藏 人收藏

    评论

    相关推荐

    基于Matlab语音信号滤波器的设计与实现

    、设计内容:  以Matlab实现语音信号的低通滤波器设计为例:   (1)语音信号的采集 利用Windows下的录音机,录制一段自己的话音,时间在1 s内。然后在
    发表于 01-13 11:12

    请问如何设计IIR数字滤波器

    滤波器MATLAB怎么设计?编写VHDL语言代码有哪些注意事项?一般IIR数字滤波器该怎么设计?以低通
    发表于 04-14 06:22

    数字滤波器Matlab设计与应用

    :数字滤波数字信号处理中占有极其重要的地位,并且被广泛应用。研究了在Madal〕环境下FIR数字滤波器的设计方法以及FIR滤波器信号
    发表于 01-06 17:05 30次下载

    数字滤波器的结构

    数字网络的信号流图表示 IIR数字滤波器的结构 FIR数字滤波器的结构数字滤波器的格形结构
    发表于 01-07 10:24 30次下载

    数字滤波器MATLAB 设计与DSP 上的实现

    以窗函数法设计线性相位FIR 数字滤波器为例,介绍用MATLAB 工具软件设计数字滤波器的方法和在定点D S P 上的实现。实现时,先在C C S 5 0 0 0 仿真开发, 然后将程序加载到TMS320VC5409
    发表于 05-15 14:30 39次下载

    基于Matlab数字滤波器的设计与应用研究

    基于Matlab数字滤波器的设计与应用研究摘 要:数字滤波语音和图像处理、模式识别、谱分析等应用中的一个基本处理算法,在数字信号处理中占
    发表于 05-14 14:05 72次下载

    MATLAB辅助设计IIR数字滤波器

    MATLAB辅助设计IIR数字滤波器摘 要:论述了用MATLAB求解IIR数字滤波器系数的原理和函数以及这些函数的使用方法,并给出设计实例以供参考。关键词:
    发表于 05-14 14:08 76次下载

    数字滤波器的设计实验

    数字滤波器的设计实验 一. 数字滤波器设计:(1) 数字滤波器设计步骤:a. 整理给定的滤波器设计要求
    发表于 10-30 13:34 5662次阅读
    <b class='flag-5'>数字滤波器</b>的设计实验

    数字滤波器,数字滤波器原理是什么?

    数字滤波器,数字滤波器原理是什么? 在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高。而在许多信息处理过程中
    发表于 03-24 14:06 2.9w次阅读

    数字滤波器MATLAB与DSP上设计实现

    数字滤波器MATLAB与DSP上设计实现 概述:以窗函数法设计线性相位FIR数字滤波器为例,介绍用MATLAB工具软件设计数字滤波器的方
    发表于 04-12 09:32 1843次阅读
    <b class='flag-5'>数字滤波器</b>的<b class='flag-5'>MATLAB</b>与DSP上设计实现

    基于Matlab GUI的数字滤波器设计及其应用

    基于数字信号处理原理,在分析数字滤波器设计理论和Matlab编程技术及其GUI图形用户界面设计的基础上,开发了具有交互式特点的数字滤波器软件,界面操作简单方便,可以根据需要选
    发表于 09-25 17:27 119次下载

    基于Matlab/Simulink的FIR数字滤波器的设计与实现

    基于Matlab/Simulink的FIR数字滤波器的设计与实现。
    发表于 01-15 15:16 39次下载

    基于matlab数字滤波器的设计及数字滤波器基本结构

    本文主要介绍了基于matlab数字滤波器的设计及数字滤波器基本结构。
    发表于 06-05 08:00 27次下载

    FIR数字滤波器设计

    数字滤波器的输入输出均为数字信号信号通过数字滤波器后,可以改变频率成分的相对比例或滤除某些频率成分。数字滤波器可以分为IIR
    的头像 发表于 04-05 09:47 5437次阅读

    数字滤波器是什么 数字滤波器的性能指标

      数字滤波器的原理基于数字信号处理技术和滤波器算法,通过对离散时间信号进行处理和滤波,实现对信号
    发表于 02-24 11:23 5163次阅读