Filter löschen
Filter löschen

How to apply pca to audio files (pitch features)?

10 Ansichten (letzte 30 Tage)
W.Khan
W.Khan am 6 Nov. 2019
Kommentiert: Walter Roberson am 20 Nov. 2019
Hello,
I applied pitch feature extraction to audio files. Now I want to apply PCA (for dimensionality reduction) to the pitch features. How can I do that? The problem is that I cannot save the features in csv or mat file. Also, the new audio feature replace the previous audio features thus giving me only feature vector i.e; comp_PCA1 gives me feature vector of 32600x1. But my files are 94 so the output should be 32600x94.
My code is given below:
clc
clear all
path_to_directory= dir ('**/*.wav'); % path to the directory
for i = 1:length(path_to_directory)
path= strcat(path_to_directory(i).folder, '\', path_to_directory(i).name);
[signal, Fs]= audioread(path); % audio read here
pitch = pwelch(signal); % pitch feature extraction part
[coeff,score] = pca(pitch); % pca for dimensionality reduction
Comp_PCA1 = score(:,1);
% % y (i,:)= coeff;
end
  7 Kommentare
Ridwan Alam
Ridwan Alam am 20 Nov. 2019
Great! Please mark this problem as solved or accept Walter's answer. Thanks!
Walter Roberson
Walter Roberson am 20 Nov. 2019
(I had only posted as a Comment before, so it could not be Accepted.)

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 20 Nov. 2019
path_to_directory= dir ('**/*.wav'); % path to the directory
for i = 1:length(path_to_directory)
filename = fullfile(path_to_directory(i).folder, path_to_directory(i).name);
[signal, Fs]= audioread(path); % audio read here
pitch = pwelch(signal); % pitch feature extraction part
[coeff,score] = pca(pitch); % pca for dimensionality reduction
this_Comp = score(:,1);
nR = size(this_Comp,1);
if i == 1
Comp_PCA1 = this_Comp;
elseif nR <= size(Comp_PCA1,1)
Comp_PCA1 = [Comp_PCA1(1:nR,:), this_Comp];
else
Comp_PCA1(:,i) = this_Comp(1:size(Comp_PCA1,1));
end
end
If I got everything right then this should make Comp_PCA1 correspond in length to the shortest of the files.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by