2011-09-19 116 views
0

我是一名学生,几个月前刚开始接受信号处理。我为我的项目选择了“语音识别的一种新型模糊方法”(您可以通过谷歌下载该版本)。MATLAB - 将训练数据转换为频谱图的难题

我有点卡在将训练数据转换成已通过mel滤波器的谱图。

我使用this为我的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)) 

我的一切就像是这里面是不是像纸说::

enter image description here

请让我知道,我的代码或我有的光谱图是正确的。如果是这样,我需要做些什么来使我的光谱图像纸张一样?如果没有,请告诉我哪里有错误

另一个问题,是否有FFT的长度很多? 因为当我试图降低它时,我的代码会给出错误。

+0

你为什么要拍摄mfcc coeffs的光谱图?计算mffc的最后一步是采用dct。你想用光谱图功能实现什么? –

+0

实际上,我并不是说要把mfcc代码当成谱图,我想要做的就是在通过mel-filterbank之后拍摄我的声音样本的谱图,是我的代码错误吗? 我已经知道了。 我试图让我的示例语音作为模板,所以我可以基于模板I – cuprum

+0

实现模糊化规则,我并不是说要将mfcc代码作为谱图,我想要做的是在通过mel-filterbank之后获取我的声音样本的声谱图,是我的代码错误吗? 我已经知道了。 我试图让我的示例语音作为模板,所以我可以根据我制作的模板制定模糊规则。就像纸。就这样。 – cuprum

回答

1

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

+0

谢谢,我会为此尝试。那么,你能解释一下我的光谱图吗? 我的意思是,我的图片是由我的代码生成的吗? 如果是这样,我应该如何做进一步的过程,所以我可以让它像纸说的? 如果没有,错在哪里? – cuprum

+0

你有链接到论文吗? –

+0

[来自ieee](http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1410027) [可下载的版本](http://www.google.co.id/url?sa=t&source=幅和CD = 3&VED = 0CDUQFjAC&URL = HTTP%3A%2F%2Fhome.cs.tum.edu%2F〜ziaie%2Ffiles%2Fscientific_papers%2FA%2520Novel%2520Fuzzy%2520Approach%2520to%2520Speech%2520Recognition.pdf&EI = U0N4TvvSNILprAeuseCNCw&USG = AFQjCNG42mmqTG_EY4Vqb5T92Z_4sgQP_w&SIG2 = qmebyhPmrJ3VyrbJCou6bQ) – cuprum

相关问题