I have a code which cuts audio signal (.wav) into segments written in .txt files. My current code works only with one audio signal, and matching text file. But I need to adjust the code to work with more files. I have two directories; one for .wav files and one for text files which both include more than one file. I need to write the code which reads one by one audio and text file and cuts the audio segment. The code below works with one audio file and one text file.
%read audiofile
[data,Fs] = audioread('sz08010103404.wav'); %read text file with segments
list_zv = fopen('intervali_zvucni_sek.txt','r');C_zv=cell(size(list_zv)) %put every interval int it's own cell
%signal
N = length(data);totaldur = N/Fs; % total duration
t = linspace(0,totaldur,N); % create a time vector
for k=1:length(list_zv) content_zv = fgets(list_zv(k)) %gets every part of the list
d_zv= strsplit(content_zv,',')% splits str at the delimiters specified by delimiter
Z=[] %for results
for n=1:length(d_zv) y=d_zv{n} z= strsplit(y,' ') %split the content of current cell
start=z{1} %get the first part of the cell
stop=z{2} %get the second part of the cell
start1 = str2num(start) %turn into numeric
stop1 = str2num(stop) B(n,1:2) = [start1,stop1];%test matrix
% cut the signal
seg1 = data(t>start1 & t<stop1) sound(seg1) ZV{n}=seg1 %put the signal into the matrix
endend
I tried to open all the files from the directory by using dir function, what I managed to do, but I can't get the contents from text file to read it. Every text file looks like this; 0.205000 0.220000 ,0.23500 0.265000 ,…
Code:
FileList = dir('ODOGS/segments'); %folder with text files for segments
N = size(FileList,1); FileList_wav = dir('ODOGS/WAV'); %folder with audio files
N_w = size(FileList_wav,1); for k = 1:N filename = FileList(k).name % get the file name
for x = 1:N_w filename_w = FileList_wav(x).name disp(filename_w) if filename(k) == filename_w(x) %audio file and text file need to have the same name
%do the rest of the code
end endend
Best Answer