2015-01-10 4 views
0

Мне нужно проанализировать био акустические звуковые файлы с помощью matlab. В конце концов я хочу найти аномалии в аудио. Именно по этой причине мне нужно найти способ представления звука таким образом, чтобы я мог извлекать и сравнивать функции. Я имею дело с mp3-файлами до 150 мб. Эти файлы слишком велики для чтения в MATLAB в его памяти. Поэтому я хочу использовать функцию memmapfile(). Я использовал следующий код и небольшой mp3-файл, чтобы узнать, как он работает.Читать и представлять mp3-файлы с использованием memmapfile в matlab

[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 ГБ. Поскольку Matlab не может работать с этим форматом и размером файлов, я преобразовал их в 8-битные mp3-файлы.

ответ

0

Я думаю, что проблема заключается в файле mammap по умолчанию для чтения данных в формате uint8, в то время как аудио-функция считывает данные по-другому. Как вы можете видеть here, вы можете указать формат данных, когда вы читаете его с помощью memmapfile, поэтому попробуйте «играть» с разными значениями. Из documentation я прочитал, что вы можете читать данные в двойном формате, поэтому попробуйте изменить формат данных memmapfile и формат аудиоданных.
Последняя вещь, memmapfile всегда организует данные в матрице, такие как «somenumbers x 1», поэтому, если вы хотите оригинальную, вам нужно использовать что-то вроде reshape. В любом случае, если вы работаете с большими данными, я предлагаю вам попробовать что-то другое, а не memmapfile, потому что он очень медленный

+0

Вы правы, memmapfile - неправильное решение. Я решил прочитать файлы в кусках. Это прекрасно работает! – pevadi

Смежные вопросы