MATLAB对语音信号进行低通滤波处理后的频谱图以及滤波后的语音回放
时间: 2023-11-18 13:03:01 浏览: 115
应用Matlab对语音信号进行频谱分析及滤波.doc
5星 · 资源好评率100%
好的,下面是MATLAB代码,用于对语音信号进行低通滤波处理并绘制频谱图,同时回放滤波后的语音。
```matlab
% 读入语音信号
[x, fs] = audioread('speech.wav');
% 设计低通滤波器
fc = 4000; % 截止频率
[b, a] = butter(4, fc/(fs/2), 'low');
% 对语音信号进行滤波
y = filter(b, a, x);
% 绘制频谱图
N = length(x); % 信号长度
X = fft(x); % 信号的傅里叶变换
Y = fft(y); % 滤波后的信号的傅里叶变换
f = (0:N-1)*(fs/N); % 频率坐标
subplot(2, 1, 1);
plot(f, abs(X));
title('原始语音信号频谱图');
xlabel('频率 (Hz)');
ylabel('幅度');
subplot(2, 1, 2);
plot(f, abs(Y));
title('低通滤波后的语音信号频谱图');
xlabel('频率 (Hz)');
ylabel('幅度');
% 回放滤波后的语音
sound(y, fs);
```
请将上述代码保存为一个名为 `lowpass.m` 的文件,并将 `speech.wav` 文件与该脚本文件放在同一目录下。然后在MATLAB命令行窗口中输入 `lowpass` 即可运行该程序。程序将绘制出原始语音信号和经过低通滤波后的语音信号的频谱图,并回放滤波后的语音。
阅读全文