How to read multiple .wav files and plot them as separate signals?
조회 수: 3 (최근 30일)
이전 댓글 표시
I would like to read from 10 files which they contain 10 wav files in each, so approximately 100wav files in total. I am trying to read them one by one and then apply some filttering and store the result in a new location but it should have the same name files and wav names as it was in the begging.
so practically take the voices apply some filterring and store them in a different location but in the same way same file names and wav.names audio signal but filltered. I do not care about the filltering I am only affter the read and write.
for example:
file 1:
has inside 10 wav files audio signal, eg1.wav, kle.wav.....lp.wav ( they do not have the same name or similar)
file 2:
has inside 10 wav files audio signal, kx1.wav, kle.wav.....lp.wav ( they do not have the same name or similar)
.
.
file 10
has inside 10 wav files audio signal, eg1.wav, kle.wav.....lp.wav ( they do not have the same name or similar)
I am trying to use the below code:
names = {'Voice1.wav', 'Voice2.wav', 'Voice3.wav', 'Voice4.wav'};
wave = cell(size(names));
fs = cell(size(names));
subplot_cols = 3;
subplot_rows = ceil(numel(names)/subplot_cols);
for i=1:numel(names)
[wave{i},fs{i}]=audioread('sample.wav');
t = linspace(0, (numel(wave{i})-1)/fs{i}, numel(wave{i}));
subplot(subplot_rows,subplot_cols,i)
plot(t, wave);
title(['File: ' names{i}]);
end
but it shows me an error
Error in Assigment (line 60)
plot(t,wave);
Many thanks in advance.
https://uk.mathworks.com/matlabcentral/answers/516853-how-can-i-read-multiple-wav-files-and-plot-them-as-separate-signals#comment_1034872
댓글 수: 0
답변 (2개)
Ameer Hamza
2020년 10월 3일
편집: Ameer Hamza
2020년 10월 3일
Check this code
files = dir('file*');
f = figure();
destination_folder = ''; % put location of destimation folder
for i = 1:numel(files)
sub_files = dir([files(i).name '/*.wav']);
mkdir(destination_folder, files(i).name);
for j = 1:numel(sub_files)
nexttile();
[y, Fs] = audioread(sub_files(j).name);
Ts = 1/Fs;
n = numel(y);
t = (0:1:n-1)*Ts;
plot(t, y);
title(sprintf('%s %s', files(i).name, sub_files(j).name));
% process the signal
new_filename = fullfile(destination_folder, files(i).name, sub_files(j).name);
audiowrite(new_filename, y, Fs);
end
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Audio I/O and Waveform Generation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!