dawn@0: function [] = checkVUV() dawn@0: dawn@0: sampleName = '01_a_male01_pos'; dawn@0: [x, fs, frameLength, noOfFrames] = openFile( [sampleName '.wav'] ); dawn@0: y = buffer( x, frameLength ); dawn@0: dawn@0: %---------------- GET THE SILENT FRAME VALUES ------------------- dawn@0: dawn@0: % only wish to consider pitch values from voiced frames. dawn@0: % silent and unvoiced frames will produce pitch values that dawn@0: % are random and therefore will bias our results dawn@0: segmentFrames = getSilenceDecision( sampleName ); dawn@0: [ silentFrames ] = removeSilentData( segmentFrames, noOfFrames ); dawn@0: dawn@0: dawn@0: % % open original annotation file dawn@0: % fileName = [sampleName '.txt']; dawn@0: % % read metrics from file dawn@0: % fileID = fopen( fileName ); dawn@0: % data = fscanf( fileID, '%d', inf ); dawn@0: % annotatedPitch = data(3:4:end); dawn@0: % fclose( fileID ); dawn@0: dawn@0: % open HNR file dawn@0: fileName = [sampleName '_HNR.txt']; dawn@0: % read metrics from file dawn@0: fileID = fopen( fileName ); dawn@0: data = fscanf( fileID, '%f', inf ); dawn@0: harmonic2noise = data(2:2:end); dawn@0: fclose( fileID ); dawn@0: dawn@0: largestH2NValue = max( [max(harmonic2noise) abs(min(harmonic2noise))] ); dawn@0: %normalise dawn@0: harmonic2noise = harmonic2noise/largestH2NValue; dawn@0: %round to 1dp dawn@0: harmonic2noise= (round(harmonic2noise*10))/10; dawn@0: dawn@0: % open audio power file dawn@0: fileName = [sampleName '_AP.txt']; dawn@0: % read metrics from file dawn@0: fileID = fopen( fileName ); dawn@0: data = fscanf( fileID, '%f', inf ); dawn@0: audioPower = data(2:2:end); dawn@0: fclose( fileID ); dawn@0: maxPower = max(audioPower); dawn@0: dawn@0: dawn@0: minFreq = ceil(fs/getVariables('getMinFreq')); %default minimum fundatmental frequency dawn@0: maxFreq = ceil(fs/getVariables('getMaxFreq')); %default maximum fundamental frequency dawn@0: dawn@0: % open pitch file dawn@0: fileName = [sampleName '_YIN_pitch.txt']; dawn@0: % read metrics from file dawn@0: fileID = fopen( fileName ); dawn@0: data = fscanf( fileID, '%f', inf ); dawn@0: pitch = data(2:2:end); dawn@0: fclose( fileID ); dawn@0: dawn@0: % open band power file dawn@0: % fileName = [sampleName '_ASBP_norm.txt']; dawn@0: % % read metrics from file dawn@0: % fileID = fopen( fileName ); dawn@0: % data = fscanf( fileID, '%f', inf ); dawn@0: % bandPowerRatio = data(2:2:end); dawn@0: % fclose( fileID ); dawn@0: % bandPowerRatioRMS = sqrt( mean(( bandPowerRatio/max(bandPowerRatio) ).^2 )); dawn@0: % dawn@0: dawn@0: dawn@0: HNRThresh = 0; dawn@0: hold off; dawn@0: minLength = min([length(harmonic2noise) length(audioPower) length(pitch)]); dawn@0: plotUnits = 1/frameLength; dawn@0: for( i=1:minLength ) dawn@0: dawn@0: dawn@0: if( silentFrames(i) == 0 ) % harmonic2noise(i) == 0 ) dawn@0: %silent dawn@0: % plot( ((i-1)*frameLength)+1:(i*frameLength), y(:,i), 'y' );hold on; dawn@0: plot( i-0.5 + plotUnits : plotUnits : i+0.5, y(:,i), 'y' );hold on; dawn@0: vuv(i) = 0; dawn@0: elseif( ((harmonic2noise(i) <= HNRThresh))... %|| (bandPowerRatio(i)/max(bandPowerRatio) < 0.001)) ... dawn@0: || (pitch(i) > minFreq) ... dawn@0: || (pitch(i) < maxFreq)) %... dawn@0: % || (audioPower(i)/maxPower < 0.0005)) dawn@0: % unvoiced dawn@0: % plot( ((i-1)*frameLength)+1:(i*frameLength), y(:,i), 'r' );hold on; dawn@0: plot( i-0.5 + plotUnits : plotUnits : i+0.5, y(:,i), 'r' );hold on; dawn@0: vuv(i) = 2; dawn@0: else dawn@0: %voiced dawn@0: % plot( ((i-1)*frameLength)+1:(i*frameLength), y(:,i), 'g' );hold on; dawn@0: plot( i-0.5 + plotUnits : plotUnits : i+0.5, y(:,i), 'g' );hold on; dawn@0: vuv(i) = 1; dawn@0: end dawn@0: end dawn@0: dawn@0: dawn@0: % plot( 1 : 1 : length(harmonic2noise), harmonic2noise, 'b' );hold on; dawn@0: % plot( 1 : 1 : length(pitch), pitch/max(pitch), 'w' );hold on; dawn@0: % % pitch thresholds dawn@0: % L=line([0 noOfFrames], [maxFreq/max(pitch) maxFreq/max(pitch)]); dawn@0: % set(L,'color',[1 0 0]); dawn@0: % L=line([0 noOfFrames], [minFreq/max(pitch) minFreq/max(pitch)]); dawn@0: % set(L,'color',[1 0 0]); dawn@0: % dawn@0: % %HNR threshold dawn@0: % L=line([0 noOfFrames], [HNRThresh HNRThresh]); dawn@0: % set(L, 'color', [0 0 1] );