用matlab中audioread函数读入一段语音文件,并求某一帧512点的FFT,画出语音信号时域和频域波形
时间: 2023-02-05 07:15:23 浏览: 167
matlab实现读取声音并进行频谱显示
4星 · 用户满意度95%
你可以使用以下代码在 Matlab 中读入一段语音文件并求出其 FFT:
```
% 读入语音文件
[y, fs] = audioread('speech.wav');
% 取出一帧 512 点的语音信号
frame = y(1:512);
% 计算 FFT
X = fft(frame);
% 计算频率分布
f = linspace(0, fs, length(X));
% 画出时域波形
subplot(2, 1, 1);
plot(frame);
xlabel('时间(秒)');
ylabel('幅度');
title('时域波形');
% 画出频域波形
subplot(2, 1, 2);
plot(f, abs(X));
xlabel('频率(Hz)');
ylabel('幅度');
title('频域波形');
```
需要注意的是,在计算 FFT 时,需要将时域信号先经过汉明窗处理,以减少频谱泄漏的影响。你也可以使用 Matlab 中的函数 `pwelch` 来计算信号的功率谱密度。
最后,你可以使用 `figure` 命令将时域和频域波形画在同一个窗口中,或者使用 `subplot` 命令将它们画在不同的子图中。
阅读全文