myAudiodb=fullfile(matlabroot,'AudioDB');
ads = audioDatastore(myAudiodb,'IncludeSubfolders',true,'LabelSource','foldernames');
[adsTrain,adsTest] = splitEachLabel(ads,0.8,0.2);
[x,fileInfo] = read(adsTrain);
fs = fileInfo.SampleRate;
reset(adsTrain)
aFE = audioFeatureExtractor("SampleRate",fs, ...
"melSpectrum",true, ...
"barkSpectrum",true);
setExtractorParams(aFE,"melSpectrum","NumBands",64);
setExtractorParams(aFE,"barkSpectrum","NumBands",64);
numSpectrumsPerSpectrogram = 96;
numSpectrumsOverlapBetweenSpectrograms = 48;
numSpectrumsHopBetweenSpectrograms = numSpectrumsPerSpectrogram - numSpectrumsOverlapBetweenSpectrograms;
emptyLabelVector = adsTrain.Labels;
emptyLabelVector(:) = [];
melbarkFeaturesTR = [];
melbarlLabelsTR = emptyLabelVector;
while hasdata(adsTrain)
[audioIn,fileInfo] = read(adsTrain);
melbarkfeatTR= extract(aFE,audioIn);
melbarkfeatTR = log10(melbarkfeatTR + single(0.001));
[numSpectrums,numBands] = size(melbarkfeatTR);
numSpectrograms = floor((numSpectrums - numSpectrumsPerSpectrogram)/numSpectrumsHopBetweenSpectrograms) + 1;
for hop = 1:numSpectrograms
range = 1 + numSpectrumsHopBetweenSpectrograms*(hop-1):numSpectrumsHopBetweenSpectrograms*(hop-1) + numSpectrumsPerSpectrogram;
melbarkFeaturesTR = cat(4,melbarkFeaturesTR,melbarkfeatTR(range,:));
melbarkLabelsTR = cat(1,melbarkLabelsTR,fileInfo.Label);
end