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
|