0

我是一名学生,几个月前刚接触信号处理。我为我的项目选择了“A Novel Fuzzy Approach to Speech Recognition”(你可以在谷歌上搜索可下载的版本)。

我在将训练数据转换为已通过 mel 过滤器的频谱图时有点卡住了。

我将用于我的 mel-filterbank,当然稍作修改。

然后我编写了这个简单的代码来制作我的训练数据的频谱图:

p   =25;
fl  =0.0;
fh  =0.5;
w   ='hty';
[a,fs]=wavread('a.wav'); %you can simply record a sound and name it a.wav, other param will follows
n=length(a)+1;
fa=rfft(a);
xa=melbank_me(p,n,fs); %the mel-filterbank function
za=log(xa*abs(fa).^2);
ca=dct(za);
spectrogram(ca(:,1))

我得到的只是这样,不像纸上说的那样::

在此处输入图像描述

请让我知道我的代码或频谱图是正确的。如果是这样,我该怎么做才能使我的频谱图像纸上的一样?如果没有,请告诉我哪里错了

还有一个问题,FFT 的长度可以这么大吗?因为当我尝试降低它时,我的代码会出错。

4

1 回答 1

1

您不应该对整个文件进行 FFT - 这将包含太多时变信息 - 您应该选择声音相对静止的窗口大小,例如 10 ms @ 44.1 kHz = 441 个样本,所以可能 N = 512 可能是一个很好的起点。然后,如果需要,您可以在连续窗口上生成频谱图,以显示随时间变化的频率内容。

于 2011-09-19T17:34:56.530 回答