对 MFCC 计算应用汉明窗有什么好处?

信息处理 matlab mfcc
2022-02-12 16:26:14

我试图通过遵循这个来实现 MFCC ,我发现有一个步骤将信号分成帧,然后传递给 Hamming 窗口过程。给出的原因是为了纠正帧的开始和最后一个样本的不连续性。好的,听起来不错,然后窗口的输出被馈送到 FFT 过程。所以我想单独做这个示例代码。

我的代码:-

%Creating a signal to perform hamming windowing on.
fs=8000;
ts=1/fs;
N=1000;
t=(0:ts:(N-1)*ts);
x=sin(2*pi*60*t);


figure,subplot(221),plot(t,x,'.-'),title('Original Speech'),xlabel('Time');grid on
f=(-fs/2:fs/(N-1):fs/2);
subplot(223),plot(f,fftshift(abs(fft(x)))),title('Frequency Spectrum'),xlabel('Freq (Hz)');grid on
windowed=x.*hamming(length(x))';
subplot(222),plot(t,windowed,'.-'),title('Hamming Window Applied'),xlabel('Time');grid on
subplot(224),plot(f,fftshift(abs(fft(windowed)))),title('Frequency Spectrum After Hamming'),xlabel('Freq (Hz)');grid on 

生成的情节是: -

在此处输入图像描述

我的问题是:-

Hamming Windowing 的优点是什么?我是一个菜鸟,所以根据我的说法,首先,我们在时域中失去了信号开始和结束时的幅度,其次,在频域中,差异很小。那么做这么多计算有什么好处。请尽可能详细地解释。

如果有人能指出更详细的(根据他们的)教程然后我正在参考或他们在自己学习 MFCC 时阅读的内容,那就太好了。

1个回答

理想情况下,您只会将该频率视为一个窄峰,但由于有限长度的窗口,您还会得到其他人为的杂物:窗口化等于时域乘以窗口函数(此处为矩形或汉明)。时域乘法等于频域卷积:所有频率都将被窗函数的傅里叶变换所代替。这就是它们的样子:

矩形窗及其傅里叶变换 汉明窗及其傅里叶变换

卷积将真实频率传播到它周围的频率区间。通过使用除矩形以外的窗函数,与主瓣相比,旁瓣更少,因此人为的长距离传播更少,使结果更清晰,更适合频率选择分析。您似乎偶然选择了一个频率,在该频率您看不到带有矩形窗口的旁瓣,因为旁瓣之间的下降落在您的频率箱之间。所以你只看到斜坡。