dawn@0: function [] = ProcessDatabase( databaseName, functionName, sampleStartNum, OVERWRITE ) dawn@0: % run from D:\Dropbox\BUPTResearch2011\EmotionDetectionCode\Code dawn@0: machineName = getenv('COMPUTERNAME'); Dawn@4: fclose('all'); dawn@0: dawn@0: switch machineName dawn@0: case 'LAPTOP' dawn@0: % for Dawn's laptop dawn@0: root = 'D:\Dropbox\' dawn@0: case 'SLATE1' dawn@0: % for Dawn's Slate dawn@0: root = 'E:\Dropbox\' dawn@0: case 'DAWNBLACK-PC' dawn@0: % for Dawn's work PC dawn@0: root = 'C:\Users\dawn\Dropbox\' dawn@0: end dawn@0: dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\Matlab\MPEG7']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\Matlab\Common']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\Matlab\MPEG7\FromWeb']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\PRAAT']) Dawn@4: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\Matlab\Speech']) Dawn@4: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Descriptors\yin\']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\Collation']) dawn@0: addpath ([root 'BUPTResearch2011\emotionDetectionCode\Code\General']) dawn@0: dawn@0: switch databaseName Dawn@4: case 'ChineseOperaTest' dawn@0: cd([root 'BUPTResearch2011/Data/Opera/TestDatabase']) dawn@0: startEmotion = 4; Dawn@4: case 'ChineseOperaFull' Dawn@4: cd([root 'BUPTResearch2011/Data/Opera/FullDatabase']) Dawn@4: startEmotion = 3; Dawn@4: case 'ChineseOperaPaper' Dawn@4: cd([root 'BUPTResearch2011/Data/Opera/PaperDatabase']) Dawn@4: startEmotion = 3; dawn@0: case 'MandarinSpeech' dawn@0: cd([root 'BUPTResearch2011/Data/Database/EditedRecording']) dawn@0: startEmotion = 3; dawn@0: case 'SpeechTestFiles' dawn@0: cd([root 'BUPTResearch2011\Data\SpeechTestFiles\MyAnnotatedFiles']) dawn@0: startEmotion = 3; dawn@0: end dawn@0: dawn@0: fileStructure = dir; dawn@0: dawn@0: % how many samples do we have? dawn@0: noOfSamples = size( fileStructure ); dawn@0: firstfileOpen = 1; dawn@0: dawn@0: if( sampleStartNum < 3 ) dawn@0: sampleStartNum = 3; dawn@0: end dawn@0: dawn@0: for sampleNum = sampleStartNum : noOfSamples(1) dawn@0: sampleDirName = fileStructure(sampleNum).name dawn@0: if( fileStructure(sampleNum).isdir == 1 ) % only directories dawn@0: cd( sampleDirName ); dawn@0: % how many emotions for that sample? dawn@0: validEmotionList = dir; dawn@0: noOfEmotions = size( validEmotionList ); Dawn@4: % figure; dawn@0: for emotionNum = startEmotion : noOfEmotions(1) dawn@0: emotionName = validEmotionList(emotionNum).name; dawn@0: cd( emotionName ); dawn@0: % how many samples for that emotion? dawn@0: sampleNames = dir; dawn@0: noOfSamples = size( sampleNames ); Dawn@4: dawn@0: dawn@0: for sampleNumber = 3 : noOfSamples(1) dawn@0: if( sampleNames(sampleNumber).isdir == 0 ) % skip directories dawn@0: currentSampleName = sampleNames(sampleNumber).name dawn@0: % get the file type dawn@0: extName = currentSampleName(length( currentSampleName ) - 3: end); dawn@0: % is it a .wav file? dawn@0: if strcmp( extName, '.wav' ) dawn@0: newDirName = currentSampleName( 1 : length( currentSampleName ) - 4 ); dawn@0: % if none exists, make a new directory for all the results of dawn@0: % our calculations. dawn@0: mkdir( [ newDirName '_metrics'] ); dawn@0: cd ( [ newDirName '_metrics'] ); dawn@0: dawn@0: % call your function here dawn@0: switch functionName dawn@0: % functions that start with 'get' simply read dawn@0: % from existing text files dawn@0: % functions that start with 'detect' check if dawn@0: % the results file already exists, if they do dawn@0: % not (or the OVERWRITE flag is true) then the dawn@0: % results are calculated afresh. dawn@0: dawn@0: % case 'getsampleDependantThresholds' dawn@0: % statsFileName = '../../../../FeatureSets/singingsampleDependantThresholds.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % % is this the first sample in this emotion for dawn@0: % % this sample? dawn@0: % if( sampleNumber == 3 ) dawn@0: % if ( firstfileOpen == 0 ) dawn@0: % if(strfind( oldDirName , 'fem') > 0 ) dawn@0: % sampleName = oldDirName( 6 : end ); dawn@0: % meanET = mean( energyThreshold ); dawn@0: % meanSCT = mean( spectralCentroidThreshold ); dawn@0: % fprintf( statsFileID, '%s \t %f \t %f \n', sampleName, meanET, meanSCT ); dawn@0: % elseif(strfind( oldDirName , 'male') > 0 ) dawn@0: % sampleName = oldDirName( 6 : end ); dawn@0: % meanET = mean( energyThreshold ); dawn@0: % meanSCT = mean( spectralCentroidThreshold ); dawn@0: % fprintf( statsFileID, '%s \t %f \t %f \n', sampleName, meanET, meanSCT ); dawn@0: % end dawn@0: % end dawn@0: % dawn@0: % spectralCentroidThreshold = []; dawn@0: % energyThreshold = []; dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % [st , et] = getsampleDependantThresholds( newDirName, x, fs, statsFileID, frameLength, noOfFrames ); dawn@0: % spectralCentroidThreshold = [spectralCentroidThreshold st]; dawn@0: % energyThreshold = [energyThreshold et]; dawn@0: % oldDirName = newDirName; dawn@0: % dawn@0: % fclose( statsFileID ); Dawn@4: case 'getPitchStatistics' Dawn@4: Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingPitchStats_Voiced.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingPitchStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingPitchStats_Voiced.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinPitchStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechPitchStats.txt'; Dawn@4: end Dawn@4: Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: get_Pitch( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: Dawn@4: case 'getHNRStatistics' Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingHNRStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingHNRStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingHNRStats.txt' Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinHNRStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechHNRStats.txt'; Dawn@4: end Dawn@4: Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: get_HNR( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: Dawn@4: case 'getEnergyStatistics' Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingEnergyStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingEnergyStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingEnergyStats.txt' Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinEnergyStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechEnergyStats.txt'; Dawn@4: end Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: if( firstfileOpen == 1 ) Dawn@4: fprintf( statsFileID, 'name \t mean energy \t energy variance \t min \t max \t mean voiced energy \t mean unvoiced energy \n'); Dawn@4: firstfileOpen = 0; Dawn@4: end Dawn@4: Dawn@4: get_AudioPower( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: dawn@0: % dawn@0: % case 'getEnergyStatistics' dawn@0: % statsFileName = '../../../../FeatureSets/singingEnergyStats.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % if( firstfileOpen == 1 ) dawn@0: % fprintf( statsFileID, 'name \t mean energy \t mean voiced energy \t mean unvoiced energy \n'); dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getEnergyStatistics( newDirName, x, fs, statsFileID, frameLength, noOfFrames ); dawn@0: % fclose( statsFileID ); dawn@0: % dawn@0: % dawn@0: % % %%%%% for energy-related features %%%%% dawn@0: % % case 'getOtherEnergyStatistics' dawn@0: % % statsFileName = '../../../../FeatureSets/singingOtherEnergyStats.txt'; dawn@0: % % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % % if( firstfileOpen == 1 ) dawn@0: % % fprintf( statsFileID, 'name \t derivation of non silent energy \t derivation of voiced energy \t derivation of unvoiced energy \n'); dawn@0: % % firstfileOpen = 0; dawn@0: % % end dawn@0: % % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % % getOtherEnergyStatistics( newDirName, x, fs, statsFileID, frameLength, noOfFrames ); dawn@0: % % fclose( statsFileID ); dawn@0: % dawn@0: % dawn@0: % dawn@0: % case 'getBasicDescriptors' dawn@0: % % includes audio waveform and audio power dawn@0: % statsFileName = '../../../../FeatureSets/singingbasicDescriptors.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % if( firstfileOpen == 1 ) dawn@0: % fprintf( statsFileID, 'name \t meanAWF \t STDAWF \t minAWF \t maxAWF \t rangeAWF \t meanAP \t STDAP \t minAP \t maxAP \t rangeAP \t meanHR \t STDHR \t minHR \t maxHR \t rangeHR \n'); dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % dawn@0: % getBasicDescriptors( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % case 'getBasicSpectralDescriptors' dawn@0: % % includes audio spectrum envelope, audio spectrum dawn@0: % % centroid, audio spectrum spread, audio spectrum flatness dawn@0: % statsFileName = '../../../../FeatureSets/singingbasicSpectralDescriptors.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % % Add a header column dawn@0: % if( firstfileOpen == 1 ) dawn@0: % fprintf( statsFileID, ' name \t meanASE \t STDASE \t minASE \t maxASE \t rangeASE \t meanASC \t STDASC \t minASC \t maxASC \t rangeASC \t meanASS \t STDASS \t minASS \t maxASS \t rangeASS \t meanASF \t STDASF \t minASF \t maxASF \t rangeASF \n'); dawn@0: % % fprintf( statsFileID, ' name \t meanAWE \t STDAWE \t minAWE \t maxAWE \t rangeAWE \t meanAP \t STDAP \t minAP \t maxAP \t rangeAP \n'); dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % dawn@0: % getBasicSpectralDescriptors1( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % disp('NOT FINISHED'); dawn@0: % case 'getTemporalTimbralDescriptors' dawn@0: % dawn@0: % % includes log attack time and temporal dawn@0: % % centroid dawn@0: % statsFileName = '../../../../FeatureSets/singingtemporalTimbralDescriptors.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % % Add a header column dawn@0: % if( firstfileOpen == 1) dawn@0: % fprintf( statsFileID, ' name \t temporal centriod \t log attack time \n'); dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % dawn@0: % getTemporalTimbralDescriptors( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % case 'getSpectralTimbralDescriptors' dawn@0: % % collate the Harmonic Spectral Centroid, dawn@0: % % Harmonmic Spectral Deviation, Harmonic dawn@0: % % Spectral Spread, Harmonic Spectral Variation dawn@0: % % and Spectral Centroid dawn@0: % dawn@0: % statsFileName = '../../../../FeatureSets/singingspectralTimbralDescriptors.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % % Add a header column dawn@0: % if( firstfileOpen == 1) dawn@0: % fprintf( statsFileID, ' name \t HSC \t HSD \t HSS \t HSV \t SC \n'); dawn@0: % firstfileOpen = 0; dawn@0: % end dawn@0: % dawn@0: % getSpectralTimbralDescriptors( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); Dawn@4: case 'getMFCCs' Dawn@4: Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingMFCCStats_VoicedAndUnvoiced_Unsmoothed.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingMFCCStats_VoicedAndUnvoiced_Unsmoothed.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingMFCCStats.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinMFCCStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechMFCCStats.txt'; Dawn@4: end Dawn@4: Dawn@4: if( firstfileOpen == 1 ) Dawn@4: statsFileID = fopen( statsFileName, 'w' ); Dawn@4: firstfileOpen = 0; Dawn@4: else Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: end Dawn@4: Dawn@4: get_MFCCS( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: Dawn@4: dawn@0: case 'getPRAAT' Dawn@4: % collate all PRAAT values Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingPRAATStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingPRAATStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingPRAATStats.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinPRAATStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechPRAATStats.txt'; Dawn@4: end dawn@1: dawn@0: % Add a header row dawn@0: if( firstfileOpen == 1 ) dawn@1: statsFileID = fopen( statsFileName, 'w' ); dawn@0: fprintf( statsFileID, 'Metrics calculated using the PRAAT software. \n' ); dawn@1: fprintf( statsFileID, ' name \t JITTER: ddp \t local \t ppq5 \t rap \t SHIMMER: local \t dda \t apq3 \t apq5 \t apq11 \n'); dawn@1: fprintf( statsFileID, 'For each of the BURG FORMANTS: numberOfFormants \t meanFrequency \t varFrequency \t minFrequency \t maxFrequency \n'); dawn@1: fprintf( statsFileID, 'meanFrequencyDerivative \t varienceFrequencyDerivative \t minFrequencyDerivative \t max FrequencyDerivative \n'); dawn@1: fprintf( statsFileID, 'meanFrequency2ndDerivative \t varienceFrequency2ndDerivative \t minFrequency2ndDerivative \t max Frequency2ndDerivative \n'); dawn@1: fprintf( statsFileID, 'meanBandwidth \t varBandwidth \t minBandwidth \t maxBandwidth \n'); dawn@1: fprintf( statsFileID, 'meanBandwidthDerivative \t varBandwidthDerivative \t minBandwidthDerivative \t maxBandwidthDerivative \n'); dawn@1: fprintf( statsFileID, 'meanBandwidth2ndDerivative \t varBandwidth2ndDerivative \t minBandwidth2ndDerivative \t maxBandwidth2ndDerivative \n'); dawn@1: fprintf( statsFileID, 'For the mean of all three formants: meanFrequency \t varFrequency \t minFrequency \t maxFrequency \n'); dawn@1: fprintf( statsFileID, 'meanFrequencyDerivative \t varienceFrequencyDerivative \t minFrequencyDerivative \t max FrequencyDerivative \n'); dawn@1: fprintf( statsFileID, 'meanFrequency2ndDerivative \t varienceFrequency2ndDerivative \t minFrequency2ndDerivative \t max Frequency2ndDerivative \n'); dawn@0: firstfileOpen = 0; dawn@1: else dawn@1: statsFileID = fopen( statsFileName, 'a' ); dawn@1: end dawn@0: dawn@0: get_PRAAT( newDirName, statsFileID ); dawn@0: fclose( statsFileID ); dawn@0: Dawn@4: case 'getJitter' Dawn@4: % collate all Jitter values Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingJitterStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingJitterStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingJitterStats.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinJitterStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechJitterStats.txt'; Dawn@4: end Dawn@4: Dawn@4: % Add a header row Dawn@4: if( firstfileOpen == 1 ) Dawn@4: statsFileID = fopen( statsFileName, 'w' ); Dawn@4: fprintf( statsFileID, 'Metrics calculated using the PRAAT software. \n' ); Dawn@4: fprintf( statsFileID, ' name \t JITTER: ddp \t local \t ppq5 \t rap \n'); Dawn@4: firstfileOpen = 0; Dawn@4: else Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: end Dawn@4: Dawn@4: get_Jitter( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: Dawn@4: case 'getShimmer' Dawn@4: % collate all Shimmer values Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingShimmerStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingShimmerStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingShimmerStats.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinShimmerStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechShimmerStats.txt'; Dawn@4: end Dawn@4: Dawn@4: % Add a header row Dawn@4: if( firstfileOpen == 1 ) Dawn@4: statsFileID = fopen( statsFileName, 'w' ); Dawn@4: fprintf( statsFileID, 'Metrics calculated using the PRAAT software. \n' ); Dawn@4: fprintf( statsFileID, ' name \t SHIMMER: local \t dda \t apq3 \t apq5 \t apq11 \n'); Dawn@4: firstfileOpen = 0; Dawn@4: else Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: end Dawn@4: Dawn@4: get_Shimmer( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ); Dawn@4: Dawn@4: case 'getFormants' Dawn@4: % collate all Formants values Dawn@4: switch databaseName Dawn@4: case 'ChineseOperaTest' Dawn@4: statsFileName = '../../../../../../../TestResults/test_singingFormantsStats.txt'; Dawn@4: case 'ChineseOperaFull' Dawn@4: statsFileName = '../../../../../../../TestResults/full_singingFormantsStats.txt'; Dawn@4: case 'ChineseOperaPaper' Dawn@4: statsFileName = '../../../../../../../TestResults/paper_singingFormantsStats.txt'; Dawn@4: case 'MandarinSpeech' Dawn@4: statsFileName = '../../../../../../../TestResults/mandarinFormantsStats.txt'; Dawn@4: case 'SpeechTestFiles' Dawn@4: statsFileName = '../../../../../../../TestResults/speechFormantsStats.txt'; Dawn@4: end Dawn@4: Dawn@4: % Add a header row Dawn@4: if( firstfileOpen == 1 ) Dawn@4: statsFileID = fopen( statsFileName, 'w' ); Dawn@4: fprintf( statsFileID, 'Metrics calculated using the PRAAT software. \n' ); Dawn@4: fprintf( statsFileID, 'For each of the BURG FORMANTS: numberOfFormants \t meanFrequency \t varFrequency \t minFrequency \t maxFrequency \n'); Dawn@4: fprintf( statsFileID, 'meanFrequencyDerivative \t varienceFrequencyDerivative \t minFrequencyDerivative \t max FrequencyDerivative \n'); Dawn@4: fprintf( statsFileID, 'meanFrequency2ndDerivative \t varienceFrequency2ndDerivative \t minFrequency2ndDerivative \t max Frequency2ndDerivative \n'); Dawn@4: fprintf( statsFileID, 'meanBandwidth \t varBandwidth \t minBandwidth \t maxBandwidth \n'); Dawn@4: fprintf( statsFileID, 'meanBandwidthDerivative \t varBandwidthDerivative \t minBandwidthDerivative \t maxBandwidthDerivative \n'); Dawn@4: fprintf( statsFileID, 'meanBandwidth2ndDerivative \t varBandwidth2ndDerivative \t minBandwidth2ndDerivative \t maxBandwidth2ndDerivative \n'); Dawn@4: fprintf( statsFileID, 'For the mean of all three formants: meanFrequency \t varFrequency \t minFrequency \t maxFrequency \n'); Dawn@4: fprintf( statsFileID, 'meanFrequencyDerivative \t varienceFrequencyDerivative \t minFrequencyDerivative \t max FrequencyDerivative \n'); Dawn@4: fprintf( statsFileID, 'meanFrequency2ndDerivative \t varienceFrequency2ndDerivative \t minFrequency2ndDerivative \t max Frequency2ndDerivative \n'); Dawn@4: firstfileOpen = 0; Dawn@4: else Dawn@4: statsFileID = fopen( statsFileName, 'a' ); Dawn@4: end Dawn@4: Dawn@4: get_Formants( newDirName, statsFileID ); Dawn@4: fclose( statsFileID ) Dawn@4: Dawn@4: dawn@0: % dawn@0: % %%%%% get all the pitch and energy related features dawn@0: dawn@0: dawn@0: % case 'getFeaturesOfDuration' dawn@0: % % collate number, mean and ratio duration of dawn@0: % % unvoiced and voiced sounds, median and dawn@0: % % standard deviation number of voiced sounds dawn@0: % statsFileName = '../../../../FeatureSets/singingDurationStats.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % getFeaturesOfDuration( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % dawn@0: % case 'getFeaturesOfRelativePitch' dawn@0: % % collate relative pitch maximum, minimum and dawn@0: % % the position of those pitches dawn@0: % statsFileName = '../../../../FeatureSets/singingRelativePitchStats.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % getFeaturesOfRelativePitch( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % dawn@0: % case 'getFeaturesOfRelativeEnergyGradient' dawn@0: % % collate the value and position of relative dawn@0: % % maximum of energy gradient dawn@0: % statsFileName = '../../../../FeatureSets/singingRelativeEnergyGradientStats.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'a' ); dawn@0: % getFeaturesOfRelativeEnergyGradient( newDirName, statsFileID ); dawn@0: % fclose( statsFileID ); dawn@0: % dawn@0: % dawn@0: % dawn@0: case 'calculatePitch' dawn@0: detect_pitch( currentSampleName, OVERWRITE ); dawn@0: dawn@0: case 'calculateSilence' Dawn@4: detect_Silence( currentSampleName, OVERWRITE ); dawn@0: dawn@0: case 'calculateVUV' dawn@0: % find the voiced and unvoiced frames using dawn@0: % the harmonic ratio and pitch information dawn@0: detect_VoicedUnvoiced( currentSampleName, OVERWRITE ); dawn@0: dawn@0: % case 'calculateAudioWaveform' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % AW_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % case 'calculateAudioSpectrumEnvelope' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % ASE_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % case 'calculateAudioSpectrumCentriodAndSpread' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % ASC_ASS_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % case 'calculateAudioSpectrumBasisAndProjection' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % ASB_ASP_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: case 'calculateAudioPower' Dawn@4: detect_AudioPower( currentSampleName, OVERWRITE ); dawn@0: % dawn@0: % case 'calculateLogAttackTIme' dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % LAT_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % case 'calculateTemporalCentroid' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % TC_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % case 'calculateHarmonicRatio' dawn@0: % dawn@0: % % can't find this function yet dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % HR_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: case 'calculateHarmonicNoiseRatio' dawn@0: detect_HNR( currentSampleName, OVERWRITE ); dawn@0: % dawn@0: % case 'calculateSpectralTimbralDescriptors' dawn@0: % dawn@0: % % these are best calculated together. dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % spectralTimbralDescriptors( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: Dawn@4: % case 'calculateAudioSpectrumFlatness' Dawn@4: % Dawn@4: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); Dawn@4: % AudioSpectralFlatness_Detection( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: Dawn@4: case 'calculateMFCCs' Dawn@4: detect_MFCC( currentSampleName, OVERWRITE ); dawn@0: % dawn@0: % case 'calculatesampleDependantThresholds' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % sampleDependantThresholds( currentSampleName, x, fs, frameLength, noOfFrames ); dawn@0: % dawn@0: % dawn@0: % %%%%% pitch related features %%%%% dawn@0: % case 'calculatesampleVoicedSoundDuration' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getVoicedSoundDuration( currentSampleName, x, fs, noOfFrames, frameLength ); dawn@0: % dawn@0: % case 'calculatesampleRelativePitch' dawn@0: % dawn@0: % singingpitchStatsFileName = 'singingpitchStats.txt'; dawn@0: % singingpitchStatsFileID = fopen( singingpitchStatsFileName, 'r' ); dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getRelativePitch( singingpitchStatsFileID, currentSampleName, x, fs, noOfFrames, frameLength, 7 ); dawn@0: % fclose(singingpitchStatsFileID); dawn@0: % dawn@0: % case 'calculatesampleRelativePitchFeatures' dawn@0: % dawn@0: % singingpitchStatsFileName1 = '../../../../FeatureSets/singingpitchStats.txt'; dawn@0: % singingpitchStatsFileID1 = fopen( singingpitchStatsFileName1, 'r' ); dawn@0: % singingpitchStatsFileName2 = 'singingpitchStats.txt'; dawn@0: % singingpitchStatsFileID2 = fopen( singingpitchStatsFileName2, 'r' ); dawn@0: % [averageValues1 averageValues2 averageValues3] = getRelativePitchFeatures( singingpitchStatsFileID1, 7 ); dawn@0: % getEachRelativePitchFeature( singingpitchStatsFileID2, currentSampleName, 7, averageValues1, averageValues2, averageValues3 ); dawn@0: % fclose(singingpitchStatsFileID1); dawn@0: % fclose(singingpitchStatsFileID2); dawn@0: % dawn@0: % case 'calculatesamplePitchPosition' dawn@0: % dawn@0: % singingpitchStatsFileName = 'singingpitchStats.txt'; dawn@0: % singingpitchStatsFileID = fopen( singingpitchStatsFileName, 'r' ); dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getPitchPosition( singingpitchStatsFileID, currentSampleName, x, fs, noOfFrames, frameLength, 7 ); dawn@0: % fclose(singingpitchStatsFileID); dawn@0: % dawn@0: % dawn@0: % dawn@0: % %%%%% energy related features %%%%% dawn@0: % case 'calculatesampleRelativeEnergyByMeanAll' dawn@0: % dawn@0: % singingenergyStatsFileName = '../../../../FeatureSets/singingenergyStats.txt'; dawn@0: % singingenergyhStatsFileID = fopen( singingenergyStatsFileName, 'r' ); dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getRelativeEnergyByMeanAll( singingenergyhStatsFileID, currentSampleName, x, fs, noOfFrames, frameLength, 3 ); dawn@0: % fclose(singingenergyhStatsFileID); dawn@0: % dawn@0: % case 'calculatesampleRelativeEnergyByMeanVoiced' dawn@0: % dawn@0: % singingenergyStatsFileName = '../../../../FeatureSets/singingenergyStats.txt'; dawn@0: % singingenergyhStatsFileID = fopen( singingenergyStatsFileName, 'r' ); dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getRelativeEnergy( singingenergyhStatsFileID, currentSampleName, x, fs, noOfFrames, frameLength, 3 ); dawn@0: % fclose(singingenergyhStatsFileID); dawn@0: % dawn@0: % case 'calculatesampleRelativeEnergyGradientByMeanAll' dawn@0: % dawn@0: % statsFileName = '../../../../FeatureSets/singingenergyStats.txt'; dawn@0: % statsFileID = fopen( statsFileName, 'r' ); dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getRelativeEnergyGradient( statsFileID, newDirName, x, fs, noOfFrames, frameLength, 3 ); dawn@0: % fclose( statsFileID ); dawn@0: % dawn@0: % case 'calculatesampleRelativeEnergyGradientFeaturesByMeanAll' dawn@0: % dawn@0: % [x, fs, frameLength, noOfFrames] = openFile( currentSampleName ); dawn@0: % getRelativeEnergyGradientFeatures( currentSampleName, x, fs, noOfFrames, frameLength ); dawn@0: % dawn@0: dawn@0: end dawn@0: dawn@0: cd ../ dawn@0: end dawn@0: end dawn@0: dawn@0: end dawn@0: cd ../ dawn@0: dawn@0: end dawn@0: cd ../ dawn@0: end dawn@0: dawn@0: end dawn@0: dawn@0: cd ../ dawn@0: