Mercurial > hg > emotion-detection-top-level
view Code/Descriptors/Matlab/Common/AudioSpectralBandPower.m @ 4:92ca03a8fa99 tip
Update to ICASSP 2013 benchmark
author | Dawn Black |
---|---|
date | Wed, 13 Feb 2013 11:02:39 +0000 |
parents | |
children |
line wrap: on
line source
function [ASBP] = AudioSpectralBandPower(raw, fs, noOfFrames, frameLength) % this file normalises the frequency spectrum and calculates the spectral % power in frequency band 100 - 1000 Hz and in the top x = buffer( raw, frameLength ); myColor = 'rx'; hiEdgeSamples = getMaxFreq; % the highest fundamental loEdgeSamples = getMinFreq; % the lowest fundamental hiFreqBin = ceil(((frameLength/2)/(fs/2))*hiEdgeSamples); loFreqBin = floor(((frameLength/2)/(fs/2))*loEdgeSamples); bandWidth = hiFreqBin - loFreqBin; for n = 1:noOfFrames spectrum = abs( fft( x(:,n) )); spectrum = spectrum( 1 : frameLength/2 ); % normalise % spectrum = spectrum/max(spectrum); % fundamental frequency band lBand = ( loFreqBin : hiFreqBin ); hBand = ( frameLength/2 - ( bandWidth ) : frameLength/2 ); lBandPower = sum( spectrum( lBand )); hBandPower = sum( spectrum( hBand )); % gm(n) = nthroot( prod( spectrum ), frameLength ); % am(n) = sum( spectrum )/frameLength; ASBP(n) = lBandPower/hBandPower; % subplot(421); plot( x(:,n) ); % subplot(422); plot( spectrum ); hold on; % plot( loFreqBin : hiFreqBin, spectrum( lBand ), 'r' ); % plot( hBand, spectrum( hBand ), 'r' ); hold off % % % look at the frame with reference to the surrounding 10 frames % if( n>5 ) % startPlot = (n-5)*frameLength+1; % endPlot = (n+5)*frameLength; % else % startPlot = 1; % endPlot = 10*frameLength; % end % subplot(412); plot( raw( startPlot : endPlot ) ); hold on; % plot( ((n-1)*frameLength+1) - startPlot : (n*frameLength) - startPlot, x(:,n), 'r' ); hold off; % % subplot(425); plot( n, lBandPower, myColor ); hold on;%plot( n, gm(n), myColor ); hold on; % subplot(426); plot( n, hBandPower, myColor ); hold on;%plot( n, am(n), myColor ); hold on; % subplot(414); plot( n, lBandPower / hBandPower, myColor ); hold on;%plot( n, ASF(n), myColor ); hold on; % end end