MATLAB对语音信号进行低通滤波后的频谱图已经滤波后语音信号的存储代码
时间: 2023-11-09 19:04:19 浏览: 44
下面是MATLAB对语音信号进行低通滤波后的频谱图已经滤波后语音信号的存储的代码示例:
```matlab
% 读取语音信号
[s, Fs] = audioread('speech.wav');
% 预处理语音信号
s = s / max(abs(s)); % 幅值归一化
win = hamming(length(s)); % 加窗
s = s .* win;
% 计算语音信号的频谱图
N = length(s);
S = abs(fft(s))/N;
f = (0:N-1)*Fs/N;
% 设计低通滤波器
fc = 1000; % 截止频率
[b, a] = butter(6, fc/(Fs/2), 'low'); % 6阶Butterworth滤波器
% 对语音信号进行低通滤波
s_filtered = filter(b, a, s);
% 存储滤波后的语音信号
audiowrite('speech_filtered.wav', s_filtered, Fs);
% 计算滤波后的语音信号的频谱图
S_filtered = abs(fft(s_filtered))/N;
% 绘制频谱图
figure;
plot(f, S);
hold on;
plot(f, S_filtered);
legend('原始语音信号', '滤波后语音信号');
xlabel('频率 (Hz)');
ylabel('幅度');
```
这段代码实现了对语音信号进行低通滤波,并将滤波后的语音信号存储到文件中。同时,它还计算了原始语音信号和滤波后语音信号的频谱图,并将它们绘制在同一张图上进行比较。