пакетное чтение wav-файлов в Matlab для создания матрицы для обучающего набора нейронной сети

Я работаю над небольшим проектом нейронной сети, и я очень новичок в Matlab.

У меня есть около 400 коротких файлов wav, которые нужно прочитать, а затем объединить в матричный набор данных. Мне не удалось найти никакой информации о том, как загрузить все wav-файлы в Matlab, чтобы он сохранял каждый файл с другим именем.

Мои вопросы:

  • Можно ли пакетно обрабатывать wav-файлы в Matlab, чтобы каждый вектор сохранялся как отдельные данные?
  • Какова будет процедура заполнения матрицы обработанными векторами wav-файла, учитывая, что они имеют разную размерность (длину)?

person nanachan    schedule 12.09.2013    source источник


Ответы (1)


В этом решении используются массивы ячеек {...}, которые могут обрабатывать данные разных измерений, размеров и даже типов. Здесь Y будет хранить .wav выборочные данные и FS частоту дискретизации всех аудиофайлов в каталоге.

% create some data (write waves)
load handel.mat;                  %predifined sound in matlab stored in .mat
audiowrite('handel1.wav',y,Fs);   %write the first wave file
audiowrite('handel2.wav',y,Fs);   %write the second
clear y Fs                        %clear the data


% reading section
filedir = dir('*.wav');           %list the current folder content for .wav file
Y = cell(1,length(filedir));      %pre-allocate Y in memory (edit from @ Werner)
FS = Y;                           %pre-allocate FS in memory (edit from @ Werner)
for ii = 1:length(filedir)        %loop through the file names

    %read the .wav file and store them in cell arrays
    [Y{ii,1}, FS{ii,1}] = audioread(filedir(ii).name);  

end

Вы можете получить доступ к данным с помощью

for ind_wav = 1:length(Y)
    wav_data = Y{ind_wav,1};
end
person marsei    schedule 12.09.2013
comment
Также укажите ему, чтобы предварительно выделить массив ячеек: Y = cell(1,length(filedir)); FS = Y; - person Werner; 13.09.2013
comment
большое спасибо! Теперь у меня есть файл wav_data со всеми значениями сигнала, однако я не уверен в следующем шаге: мне нужно создать матрицу из 400 строк (количество аудиофайлов) по размеру вектора самого длинного аудиофайла. Найти размер самого длинного аудиофайла не проблема, но в wav_data у нас есть 1 большой вектор, который мне нужно каким-то образом перевернуть в матрицу, упомянутую выше. - person nanachan; 13.09.2013
comment
см. заголовок stackoverflow.com/questions/6210495/ - person marsei; 13.09.2013
comment
@Magla - большое спасибо за ссылку! Теперь я достиг того, что мне нужно для этой части! - person nanachan; 13.09.2013
comment
@nanachan, если это ответило на ваш вопрос, нажмите на галочку рядом с ответом..... - person Buck Thorn; 13.09.2013