How to apply pca to audio files (pitch features)?
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2019-11-20
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.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Audio Processing Algorithm Design 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!