2011-09-19 79 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