annotate Code/Descriptors/Matlab/Common/detect_Silence.m @ 4:92ca03a8fa99 tip

Update to ICASSP 2013 benchmark
author Dawn Black
date Wed, 13 Feb 2013 11:02:39 +0000
parents ea0c737c6323
children
rev   line source
Dawn@4 1 function [ silenceSegments ] = detect_Silence( sampleWavFileName, OVERWRITE );
dawn@0 2
dawn@0 3 %returns an array containing the start and end frames for non-silent segments
dawn@0 4
dawn@0 5 % open original silence calculation
Dawn@4 6 sampleFileName = sampleWavFileName( 1 : length( sampleWavFileName ) - 4 );
Dawn@4 7 fileName = [ sampleFileName '_silence.txt'];
dawn@0 8 % read pitch metrics from file
dawn@0 9 fileID = fopen( fileName );
dawn@0 10
dawn@0 11 if( (fileID <= 0) || (OVERWRITE) ) %does the file exist?
dawn@0 12 % no
dawn@0 13 disp('WARNING: MISSING SILENCE FILE');
dawn@0 14 %calculate it
Dawn@4 15 [x, fs, frameLength, noOfFrames] = openFile( sampleWavFileName );
dawn@0 16 limits = calculate_Silence( x, fs, frameLength );
dawn@0 17 % create voicing metrics file
dawn@0 18 fileID = fopen( fileName, 'w');
dawn@0 19 fprintf( fileID, 'non-silent start frame \t non-silent end frame \n ');
dawn@0 20 rowNum = size(limits);
dawn@0 21 rowNum = rowNum(1);
dawn@0 22 if( rowNum == 0 )
dawn@0 23 % there are no silent frames
dawn@0 24 fprintf( fileID, '%d \t %d \n', 0, 0 );
dawn@0 25 end
dawn@0 26 for i=1:rowNum
dawn@0 27 fprintf( fileID, '%d \t %d \n', limits(i,1), limits(i,2) );
dawn@0 28 end
dawn@0 29 fclose( fileID );
dawn@0 30 fileID = fopen( fileName );
dawn@0 31 end
dawn@0 32 %
dawn@0 33 % strip off header
dawn@0 34 junk = fscanf( fileID, '%s', 6 );
dawn@0 35 silence = fscanf( fileID, '%d', inf );
dawn@0 36 silenceSegments = [silence(1:2:end) silence(2:2:end)];
dawn@0 37 fclose( fileID );
dawn@0 38