利用MATALB设计巴特沃斯、切比雪夫I型、切比雪夫II型滤波器语音信号去噪程序代码
时间: 2023-08-08 10:05:28 浏览: 109
以下是利用MATLAB设计巴特沃斯、切比雪夫I型、切比雪夫II型滤波器语音信号去噪的程序代码:
```matlab
%% 读入语音信号
[x,fs] = audioread('speech.wav');
%% 滤波器设计
% 巴特沃斯滤波器
[b1,a1] = butter(6,1000/(fs/2),'high'); % 高通滤波器,截止频率为1000Hz
[b2,a2] = butter(6,4000/(fs/2),'low'); % 低通滤波器,截止频率为4000Hz
% 切比雪夫I型滤波器
[b3,a3] = cheby1(6,3,1000/(fs/2),'high'); % 高通滤波器,截止频率为1000Hz,通带波纹为3dB
[b4,a4] = cheby1(6,3,4000/(fs/2),'low'); % 低通滤波器,截止频率为4000Hz,通带波纹为3dB
% 切比雪夫II型滤波器
[b5,a5] = cheby2(6,30,1000/(fs/2),'high'); % 高通滤波器,截止频率为1000Hz,阻带衰减为30dB
[b6,a6] = cheby2(6,30,4000/(fs/2),'low'); % 低通滤波器,截止频率为4000Hz,阻带衰减为30dB
%% 滤波处理
% 巴特沃斯滤波器
y1 = filtfilt(b1,a1,x); % 高通滤波
y2 = filtfilt(b2,a2,y1); % 低通滤波
% 切比雪夫I型滤波器
y3 = filtfilt(b3,a3,x); % 高通滤波
y4 = filtfilt(b4,a4,y3); % 低通滤波
% 切比雪夫II型滤波器
y5 = filtfilt(b5,a5,x); % 高通滤波
y6 = filtfilt(b6,a6,y5); % 低通滤波
%% 绘制滤波前后的语音信号图像
t = (0:length(x)-1)/fs; % 时间轴
figure;
subplot(2,1,1);
plot(t,x);
title('原始语音信号');
xlabel('时间/s');
ylabel('幅值');
subplot(2,1,2);
plot(t,y2);
title('滤波后语音信号');
xlabel('时间/s');
ylabel('幅值');
```
其中,`speech.wav`为需要去噪的语音信号文件,可以根据实际情况进行修改。在程序中,分别设计了巴特沃斯、切比雪夫I型、切比雪夫II型的高通和低通滤波器,并对语音信号进行了滤波处理。最后,绘制了滤波前后的语音信号图像,便于观察滤波效果。
阅读全文