Mercurial > hg > emotion-detection-top-level
view Code/Collation/get_HNR.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_HNR( dirName, statsFileID ) DEBUG=1; % this function collates the results of all HNR values % identify the speaker in the stats file fprintf( statsFileID, '%s ', dirName ); metricName = '_HNR'; metricFileName = [ dirName metricName '.txt']; metrics = readValuesFromFile( statsFileID, metricFileName, metricName ); if(DEBUG) subplot(211); if( strfind( dirName, 'neg') ) plot(metrics, 'b'); hold on; elseif( strfind( dirName, 'pos') ) plot(metrics, 'r'); hold on; end end % get basic metric set [ basicSet ] = basicMetricSet( metrics, statsFileID ); if(DEBUG) subplot(212); if( strfind( dirName, 'neg') ) plot(basicSet, 'xb'); hold on; elseif( strfind( dirName, 'pos') ) plot(basicSet, 'xr'); hold on; end end % calculate the ratio of voiced (HNR > 0) to unvoiced frames (HNR <= 0) noOfUnvoicedFrames = length( find( metrics <= 0 )); noOfVoicedFrames = length( find( metrics > 0 )); unvoicedToVoicedRatio = ( noOfUnvoicedFrames / noOfVoicedFrames ); fprintf( statsFileID, '\t %f ', unvoicedToVoicedRatio); % calculate the average duration of the voiced and unvoiced periods tsig = ( metrics > 0); dsig = diff([1 tsig' 1]); startIndex = find(dsig < 0); endIndex = find(dsig > 0)-1; unvoicedDuration = endIndex-startIndex+1; meanUnvoicedDuration = mean( unvoicedDuration ) fprintf( statsFileID, '\t %f ', meanUnvoicedDuration); startIndex = find(dsig > 0); startIndex = startIndex(1:end-1); endIndex = find(dsig < 0)-1; endIndex = endIndex(2:end); voicedDuration = endIndex-startIndex+1; meanVoicedDuration = mean( voicedDuration ) fprintf( statsFileID, '\t %f ', meanVoicedDuration); fprintf( statsFileID, '\n');