Mercurial > hg > emotion-detection-top-level
view Code/Collation/get_MFCCS.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 [] = get_MFCCS( dirName, statsFileID ) % this function collates the results of all values calculated for the % MFCCs DEBUG=0; % identify the speaker in the stats file fprintf( statsFileID, '%s ', dirName ); metricName = '_MFCC'; metricFileName = [ dirName metricName '.txt']; numberOfValuesPerFrame = 13; % 13 MFCC's FileID = fopen( metricFileName ); %---------------- GET THE VOICED FRAME VALUES ------------------- % only wish to consider values from voiced frames. The MFCCs were % calculate for only non-silent frames anyway, but now we need to % remove the unvoiced frame values % going to disregard all unvoiced frames as these produce outliers [vuv] = detect_VoicedUnvoiced( [ dirName '.wav' ], 0 ); % get the silent frames segmentFrames = detect_Silence( [ dirName '.wav' ], 0 ); [ silentFrames ] = getSilentDataArray( segmentFrames, length(vuv) ); % remove silent frames from vuv non_silentFrames = find(silentFrames == 1); vuv = vuv( non_silentFrames ); % voicedFrames = find( vuv == 1 ); if( FileID <= 0 ) %does the file exist? % if not message = ['WARNING: MISSING ' metricName ' FILE']; disp( message ); fprintf( statsFileID, ' \s missing', metricName ); else mfcc = readManyValuesFromFile( statsFileID, metricFileName, metricName, numberOfValuesPerFrame ); % smooth to get rid of outliers % for( i=1:numberOfValuesPerFrame ) % % smoothedMfcc(:,i) = smooth( mfcc( voicedFrames,i ) ); % smoothedMfcc(:,i) = smooth( mfcc( :,i ) ); % end for( i=1:numberOfValuesPerFrame ) % find the basic metric set for each frequency band % [ metrics(i,:) ] = basicMetricSet( smoothedMfcc(:,i), statsFileID ); [ metrics(i,:) ] = basicMetricSet( mfcc(:,i), statsFileID ); mean(i) = metrics(i,1); end % find the gradient of each frequency band and its basic metric set [m,n]=size(metrics); for( i=1:numberOfValuesPerFrame ) % gradSmoothedMfcc(:,i) = gradient( smoothedMfcc(:,i) ); gradMfcc(:,i) = gradient( mfcc(:,i) ); % [ metrics(i, n+1:2*n ) ] = basicMetricSet( gradSmoothedMfcc(:,i), statsFileID ); [ metrics(i, n+1:2*n ) ] = basicMetricSet( gradMfcc(:,i), statsFileID ); end % calculate the basic metric set for the mean of all frequency % bands basicMetricSet( mean, statsFileID ); end fprintf( statsFileID, '\n'); fclose(FileID);