comparison Code/Descriptors/Matlab/Common/SpectralCentroid.m @ 4:92ca03a8fa99 tip

Update to ICASSP 2013 benchmark
author Dawn Black
date Wed, 13 Feb 2013 11:02:39 +0000
parents
children
comparison
equal deleted inserted replaced
3:e1cfa7765647 4:92ca03a8fa99
1 function C = SpectralCentroid( signal, windowLength, step, fs)
2
3 % function C = SpectralCentroid(signal,windowLength, step, fs)
4 %
5 % This function computes the spectral centroid feature of an audio signal
6 % ARGUMENTS:
7 % - signal: the audio samples
8 % - windowLength: the length of the window analysis (in number of samples)
9 % - step: the step of the window analysis (in number of samples)
10 % - fs: the sampling frequency
11 %
12 % RETURNS:
13 % - C: the sequence of the spectral centroid feature
14 %
15
16 signal = signal / max(abs(signal));
17 curPos = 1;
18 L = length(signal);
19 numOfFrames = floor((L-windowLength)/step) + 1;
20 H = hamming(windowLength);
21 m = ((fs/(2*windowLength))*[1:windowLength])';
22 C = zeros(numOfFrames,1);
23 for (i=1:numOfFrames)
24 window = H.*(signal(curPos:curPos+windowLength-1))';
25 FFT = (abs(fft(window,2*windowLength)));
26 FFT = FFT(1:windowLength);
27 FFT = FFT / max(FFT);
28 C(i) = sum(m.*FFT)/sum(FFT);
29 if (sum(window.^2)<0.010)
30 C(i) = 0.0;
31 end
32 curPos = curPos + step;
33 end
34 C = C / (fs/2);