- 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)
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Nipun Katyal
2020-3-6
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 个评论
jibrahim
2020-3-24
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Audio and Video Data 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!