2014-05-15 2 views
3

에서 MATLAB ~ Java 코드로 음성 인식 프로젝트를 변환하려고합니다. .wav 파일 (-1에서 1까지의 값 벡터로)을 here으로 제공된 java 예제를 사용하여 읽을 수있었습니다. 이것은 정확히 MATLAB의 wavread 함수와 동일하게 작동합니다.Java에서 MFCC 기능을 추출하는 방법

내 다음 과제는 원본 샘플 벡터에서 MFCC 특징 벡터를 추출하는 것입니다. MATLAB에서이 작업을 쉽게 수행하기 위해 Voicebox을 사용했지만 Java을 찾을 수 없습니다. '샘플'의 각 행은 각 .WAV 샘플을 나타내는 벡터를 포함

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

: 보이스 박스 사용, 나는 같은 코드가 있습니다. 이 메서드는 각 샘플에 대해 MFCC 기능의 2 차원 행렬을 반환합니다.

나는 스핑크스을 보았지만 이것을이 작업에 사용하는 방법을 이해할 수 없었다. 스핑크스 또는 기타 java 해결 방법에 대한 도움이 필요합니다.

+0

당신이 다른 포럼 싶어 생각합니다. 이것은'MFCC'가 아니라'MFC (Microsoft Foundation Classes) '를위한 것입니다. – user1793036

+0

죄송합니다. 오류입니다. 나는 "MFC"가 아니라 "MFCC"라고 태그를 붙이려고했다. 고맙습니다. – Tryxo

답변

2

당신은 MFCC는 스핑크스 (4)는 다음과 같은 일을 사용하여 프레임을 얻을 수 있습니다 :

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); 
관련 문제