MATLAB: Features extraction for multiple audio files.

audiofeature extraction

audio
I need to extract a features for audio files in folder and save the features in one file. For the 1st row contains all the features for 1st file, 2nd row contains all the features for 2 file and so on. But I have the problem "Unable to perform assignment because the size of the left side is 32769-by-1 and the size of the right side is 32769-by-2." how can solve that. This is my 1st time using matlab
file = dir ('C:\Users\User\Desktop\GP\Audio_Speech_Actors_01-24\8\*.wav');
M= length (file)
for k = 1:M
%pitch extraction
[speech,Fs]= audioread(fullfile('C:\Users\User\Desktop\GP\Audio_Speech_Actors_01-24\8\',file(k).name));
ptch = pwelch(speech,Fs);
signalpitch(k,:) = ptch;
extractpitch = signalpitch (:,:);
%cepstral extraction
%[coeffs,delta,deltaDelta] = mfcc(speech,Fs)
%csvwrite ('cepstral_extraction08.csv',coeffs);
csvwrite('pitch_features08.csv',extractpitch);
end

Best Answer

[speech,Fs]= audioread(fullfile('C:\Users\User\Desktop\GP\Audio_Speech_Actors_01-24\8\',file(k).name));
After that line, speech will be a matrix with as many rows as there are samples, and as many columns as there are input channels. Mono would have one column, stereo would have two columns.
ptch = pwelch(speech,Fs);
pwelch() is able to do its calculations for all channels in the input. It treats each column independently. The result in ptch will have as many columns as there were input channels.
signalpitch(k,:) = ptch;
That line assumes that ptch can be assigned into a single column. That is not the case if the input had more than one channel.
You need to decide what you want to do in the case where there are multiple input channels such as stereo.
Note: the code also assumes that every input file has exactly the same number of samples, which is not a good assumption.