2017-11-19 32 views
0

다음은 필자가 작성한 코드로, 멜 삼각형 필터 뱅크를 작성하려고합니다.분석 및 MFCC 용 FFT 신호용 필터

300 ~ 8000 Hz 범위에서 시작하여 주파수를 mels로 변환 한 다음 주파수로 되돌려서 fft_bin 수를 얻습니다.

clear all; 

g=[300 8000]; % low freqncy and fs/2 for the highest frequency 

freq2mel=1125*log(1+(g/700)); % creating mel scale from the frequency 
           % answer [401.25 2834.99] 

f=linspace(0,2835,12); % if we want 10 filter banks that we use the 
         two endpoints and it will put 10 banks between them 

         % answer is [401.25 622.50 843.75 1065.0 1286.25 1507.50 1728.74 
            1949.99 2171.24 2392.49 2613.74 2834.99] 

mel2freq=700*(exp(f/1125)-1); % converting the mel back into frequency 

           %answer is [300 517.33 781.90 1103.97 1496.04 1973.32 2554.33 
              3261.62 4122.63 5170.76 6446.70 8000] 

fft_bins=floor((mel2freq/16000)*512); % creating fft bins 

           %answer is [9 16 25 35 47 63 81 104 132 165 206 256] 

내 문제는 이것입니다. 나는 이것 후에 붙어있다. 나는 아래의 필터 뱅크 piecewise 함수가 계속 나오는 것을 보았습니다. 그러나이 함수에 K가 무엇인지 이해하지 못합니다. k는 해밍 창에서 $$ \ mid (FFT) \ mid^2 $$의 배열입니까? 내 MFCC를 얻기 위해 1의 크기를 가진 삼각 출력을 가진 실제 필터를 $ \ mid (FFT) \ mid^2 $를 전달하는 방법. 누군가 나를 도울 수 있습니까? 당신이 이러한 종류의 필터링을 수행 할 때

enter image description here enter image description here

답변

0

은 일반적으로는 1 차원 배열에 스펙트럼을 가지고 있고 당신은 하나의 차원이 스펙트럼의 FFT 쓰레기통을 일치하는 2 차원 매트릭스에서 멜 필터 뱅크가 배열, 그리고 당신의 표적 멜 밴드가 될 또 다른 차원. 당신은 그들을 번식하여 1D 멜 스펙트럼을 얻습니다.

H_m 함수 정말 m 중심 멜 대역이고 k는 Fs를/0 내지 2 주파수이다 m, 중심 삼각형을 설명한다. 이론 상으로는 k 매개 변수가 연속적이어야합니다. k은 FFT 빈이라고 가정 할 수 있지만 일종의 일이지만, 전체 멜 밴드가 1 또는 2 개의 FFT 빈을 다루는 저주파수에서는 좋은 결과를 얻지 못할 것입니다. 그보다 더 나은 해상도를 얻으려면 특정 FFT 빈에 포함 된 삼각형의 양을 고려해야합니다.