我必須使用matlab分析生物聲學音頻文件。最終我希望能夠在音頻中找到異常。這就是我需要找到一種以我可以提取和比較功能的方式來表示音頻的原因。我正在處理高達150 MB的mp3文件。這些文件對於matlab讀取它的內存來說太大了。因此我想使用memmapfile()函數。我使用了下面的代碼和一個小的mp3文件來了解它是如何工作的。在matlab中使用memmapfile讀取和表示mp3文件
[testR, ~] = audioread('test.mp3');
testM = memmapfile('test.mp3');
disp(testM.Data);
disp(testR);
testM.Data和testR的實際值是不同的。 Audioread()返回一個7483391 x 2矩陣和memmapfile()一個4113874 x 1矩陣。 我不是很確定memmapfile()是如何工作的,我期望它相互平等。有沒有辦法以相同的格式讀取mp3文件audioread()使用memmapfile()?在音頻文件的情況下,memmapfile實際返回什麼?也許它在異常檢測的情況下也可用於矢量格式?
在此先感謝!
注意:原始文件採用wav IMA ADPCM格式,大小從1.5到2.5 gb。由於Matlab無法處理該格式和我將它們轉換爲8位mp3文件的文件大小。
你說得對,memmapfile不是正確的解決方案。我決定按塊讀取文件。這完美的作品! – pevadi