- Since the total memory available to an application comprises of the RAM,and a page file or a swap file, you can increase the swap space on your system, refer to the section "Increase System Swap Space" in the link below.
Using audiowrite function for large array (out of memory)
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi guys,
I am processing a WAV file that is over 20 hours in duration (Fs=8,000, 16 bits/sample). I read in each hour of audio separately (using [Y, FS]=audioread(FILENAME, [START END])) and I process the audio signal for each hour no problem. I then need to combine the processed audio data for each hour and write it to a 20+ hour WAV file at the end. However, I don't have enough RAM to do so. I am unable to create an array of such a size. Is there any way of writing these data to a WAV file without bringing this large array itself into memory? Or is there a way of partially writing to a single WAV file in iterations which may allow me to write each hour of data separately to the same WAV file?
I have tried allocating the memory using a .mat file and then dumpng the processed data that way. But I can't write the data in the mat file to a WAV file without bringing it all in to memory. Could a datastore approach work in this instance? Any advice would be appreicated.
Thanks a lot.
0 commentaires
Réponses (2)
Nipun Katyal
le 6 Mar 2020
There are two work arounds for your scenario:
2. To store large variables matlab provides an implementation of tall arrays, a typical usage to store a huge wav file as mat files is shown below:
DirIn = '<Path to your audio files>';
eval(['filelist=dir(''' DirIn '/*.wav'')']);
% Store the first audio file and append the rest to it.
[yF,Fs] = audioread(filelist(1).name,'native');
yF = tall(yF);
for i = 2:length(filelist)
[y,Fs] = audioread(filelist(i).name);
yF = vertcat(yF,y);
end
write('result',yF,'FileType','mat');
0 commentaires
jibrahim
le 24 Mar 2020
Terence,
Consider using dsp.AudioFileWriter and dsp.AudioFileReader in DSP System Toolbox. This functionlaity is built to read and write audio files in a streaming, frame-by-frame fashion.
Voir également
Catégories
En savoir plus sur Audio and Video Data dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!