Как использовать MFCC в Weka для классификации аудио?

Я пытаюсь разработать метод классификации аудио с использованием MFCC в Weka. Имеющиеся у меня MFCC генерируются с размером буфера 1024, поэтому для каждой аудиозаписи есть серия коэффициентов MFCC. Я хочу преобразовать эти коэффициенты в формат данных ARFF для Weka, но не знаю, как подойти к этой проблеме.

Я также задал вопрос об объединении данных, потому что мне кажется, что это может повлиять на данные. преобразование в формат ARFF.

Я знаю, что для ARFF данные должны быть перечислены через атрибуты. Должен ли каждый коэффициент MFCC быть отдельным атрибутом или массивом коэффициентов как единым атрибутом? Должны ли каждые данные представлять один MFCC, временное окно или весь файл или звук? Ниже я написал, как, по моему мнению, он должен был бы выглядеть, если бы учитывался только один MFCC, который, как я думаю, не смог бы классифицировать весь звук.

@relation audio

@attribute mfcc1 real
@attribute mfcc2 real
@attribute mfcc3 real
@attribute mfcc4 real
@attribute mfcc5 real
@attribute mfcc6 real
@attribute mfcc7 real
@attribute mfcc8 real
@attribute mfcc9 real
@attribute mfcc10 real
@attribute mfcc11 real
@attribute mfcc12 real
@attribute mfcc13 real
@attribute class {bark, honk, talking, wind}

@data
126.347275, -9.709645, 4.2038302, -11.606304, -2.4174862, -3.703139, 12.748064, -5.297932, -1.3114156, 2.1852574, -2.1628475, -3.622149, 5.851326, bark

Любая помощь будет оценена.

Изменить: я создал несколько файлов ARFF / a> с использованием Weka с использованием openSMILE, следуя методу из этот веб-сайт, но я не уверен, как эти данные будет использоваться для классификации звука, потому что каждая строка данных составляет 10 миллисекунд звука из одного и того же файла. Атрибут name каждой строки - «unknown», который, как я предполагаю, является атрибутом, который данные будут пытаться классифицировать. Как я могу классифицировать общий звук (а не 10 миллисекунд) и сравнить его с несколькими другими общими звуками?


Редактировать №2: Успех!

После более тщательного прочтения веб-сайт, который я нашел, я увидел скрипт Accumulate и файлы данных Test and Train. Скрипт накопления объединяет все файлы, созданные каждым набором данных MFCC из отдельных аудиофайлов, в один файл ARFF. Их файл состоял из около 200 атрибутов со статистикой для 12 MFCC. Хотя мне не удалось получить эту статистику с помощью OpenSmile, я использовал для этого библиотеки Python. Статистические данные были максимальным, минимальным, эксцессом, диапазоном, стандартным отклонением и так далее. Я точно классифицировал свои аудиофайлы с помощью BayesNet и Multilayer Perceptron в Weka, которые дали мне 100% точность.


person CCCodes    schedule 20.07.2017    source источник


Ответы (1)


Я мало что знаю о MFCC, но если вы пытаетесь классифицировать аудиофайлы, то каждая строка под @data должна представлять один аудиофайл. Если вы использовали окна времени или только один MFCC для каждой строки в @data, тогда классификаторы Weka попытались бы классифицировать окна времени или MFCC, что вам не нужно. На всякий случай, если вы не знакомы с форматом (просто сделайте ссылку, потому что я видел, что вы поместили функции аудиофайла в ту же строку, что и @data), вот пример, где каждая строка представляет растение ирис:

% 1. Title: Iris Plants Database
% 
% 2. Sources:
%      (a) Creator: R.A. Fisher
%      (b) Donor: Michael Marshall (MARSHALL%[email protected])
%      (c) Date: July, 1988
% 
@RELATION iris

@ATTRIBUTE sepallength  NUMERIC
@ATTRIBUTE sepalwidth   NUMERIC
@ATTRIBUTE petallength  NUMERIC
@ATTRIBUTE petalwidth   NUMERIC
@ATTRIBUTE class        {Iris-setosa,Iris-versicolor,Iris-virginica}

@DATA
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa

Что касается ответа на ваш вопрос о том, какие атрибуты вы должны использовать для своего аудиофайла, это звучит (без каламбура), как будто использование коэффициентов MFCC может работать (при условии, что каждый аудиофайл имеет одинаковое количество MFCC, потому что каждый фрагмент данных / аудиофайл должен имеют одинаковое количество атрибутов). Я бы попробовал и посмотрел, как пойдет.

РЕДАКТИРОВАТЬ: если аудиофайлы имеют разные размеры, вы можете:

  • Обрезайте аудиофайлы длиннее самого короткого аудиофайла. Обычно вы выбрасываете данные в конце аудиофайлов.
  • Сделайте количество атрибутов достаточно большим, чтобы соответствовать самому длинному аудиофайлу, и поместите любые коэффициенты MFCC, представляющие тишину, для незаполненных атрибутов аудиофайлов, которые короче, чем самый длинный аудиофайл.
  • Если значения MFCC всегда находятся в определенном диапазоне (например, от -10 до 10 или что-то в этом роде), возможно, используйте " мешок слов ". Ваши атрибуты будут представлять, сколько раз коэффициент MFCC попадает в определенный диапазон для аудиофайла. Таким образом, первый атрибут может представлять количество коэффициентов MFCC, которые находятся между -10 и -9,95, второй атрибут - от -9,95 до -9,90. Итак, если у вас был очень короткий аудиофайл с двумя MFCC (вряд ли, просто для примера) и один коэффициент был 10, а другой -9,93, тогда ваш последний атрибут имел бы значение 1, ваш второй атрибут имел бы значение 1, но все остальные атрибуты будут иметь значение 0. Обратной стороной этого метода является то, что не учитывается порядок коэффициентов MFCC. Однако этот метод хорошо работает для классификации текста, хотя порядок слов игнорируется, так что кто знает, может быть, он сработает для аудио.
  • Помимо этого, я хотел бы посмотреть, получите ли вы какие-либо хорошие ответы на свой вопрос о слиянии.
person Tomer Aberbach    schedule 20.07.2017
comment
Спасибо вам за публикацию. Я редактировал формат данных. К сожалению, количество MFCC зависит от каждого аудиофайла, и я не уверен, как он будет охватывать весь файл или звук, которые я хочу классифицировать. Каждый MFCC имеет 13 коэффициентов различных частот на основе кадра, который, как мне кажется, составляет 23,27 миллисекунды. Я не понимаю, как это будет по сравнению с другим аудио. - person CCCodes; 21.07.2017
comment
Я внес некоторые правки в свой ответ. Извините, я ничем не могу помочь. - person Tomer Aberbach; 21.07.2017
comment
Спасибо за правку, я пытаюсь внести некоторые изменения и посмотреть, получится ли. - person CCCodes; 21.07.2017