2014-05-15 82 views
3

我正致力於將語音識別項目從轉換爲MATLABJava代碼。 使用所提供的java示例here,我已能夠讀取.wav文件(作爲範圍從-1到1的值的向量)。這與MATLAB中的wavread函數完全一樣。如何在Java中提取MFCC功能

我的下一個任務是從原始樣本向量中提取特徵向量。在MATLAB,我用Voicebox來實現這一點很容易,但一直無法找到等效的Java。使用Voicebox,我有這樣的代碼:

a = melcepst(samples(1,:), 44100) 

其中'samples'的每一行都包含代表每個.wav樣本的向量。該方法返回每個樣本的特徵的2維矩陣。

我看過獅身人面像,但一直無法理解如何使用它來執行此任務。 任何幫助使用斯芬克斯或任何其他java解決方案將不勝感激。

+0

我想你想要一個不同的論壇。這是針對'微軟基礎類(MFC)'而不是'MFCC'。 – user1793036

+0

對不起,這是一個錯誤。我打算標記「MFCC」而不是「MFC」。謝謝。 – Tryxo

回答

2

你可以使用獅身人面像4做這樣的事情MFCC框架:

AudioFileDataSource audioDataSource = new AudioFileDataSource(3200, null); 
audioDataSource.setAudioFile(new URL("file:///path/to/my.wav", "source"); 

final ArrayList<DataProcessor> pipeline = new ArrayList<DataProcessor>(); 

pipeline.add(audioSource); 
pipeline.add(new DiscreteFourierTransform()); 
pipeline.add(new MelFrequencyFilterBank(minFreq, maxFreq, numFilters)); 
pipeline.add(new DiscreteCosineTransform2(numFilters, 12)); 
FrontEnd f = new FrontEnd(pipeline); 

Data mfccs; 
do { 
    mfccs = f.getData(); 
} while(mfccs != null);