Audio 如何在Weka中使用MFCC进行音频分类?

Audio 如何在Weka中使用MFCC进行音频分类?,audio,machine-learning,weka,feature-extraction,mfcc,Audio,Machine Learning,Weka,Feature Extraction,Mfcc,我正在尝试开发一种在Weka中使用MFCC对音频进行分类的方法。我拥有的MFCC是以1024的缓冲区大小生成的,因此每个音频记录都有一系列MFCC系数。我想将这些系数转换为Weka的ARFF数据格式,但我不确定如何解决这个问题 我还问了一个关于数据的问题,因为我觉得这可能会影响数据到ARFF格式的转换 我知道,对于ARFF,需要通过属性列出数据。MFCC的每个系数是单独的属性还是作为单个属性的系数数组?每个数据应该表示单个MFCC、时间窗口还是整个文件或声音?下面,我写下了如果只考虑一个MFCC

我正在尝试开发一种在Weka中使用MFCC对音频进行分类的方法。我拥有的MFCC是以1024的缓冲区大小生成的,因此每个音频记录都有一系列MFCC系数。我想将这些系数转换为Weka的ARFF数据格式,但我不确定如何解决这个问题

我还问了一个关于数据的问题,因为我觉得这可能会影响数据到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
任何帮助都将不胜感激

编辑: 我已经使用Weka从网站中使用以下方法生成了一些数据,但我不确定如何使用这些数据对音频进行分类,因为每行数据都是来自同一文件的10毫秒音频。每行的name属性都是“unknown”,我假设这是数据试图分类的属性。我如何才能对一个整体声音(而不是10毫秒)进行分类,并将其与其他几个整体声音进行比较


编辑#2:成功


在更彻底地阅读了我发现的内容之后,我看到了累积脚本以及测试和训练数据文件。累积脚本将从单独的音频文件生成的每组MFCC数据的所有文件放在一个ARFF文件中。他们的文件由大约200个属性和12个MFCC的统计数据组成。虽然我无法使用OpenSmile检索这些统计数据,但我使用Python库来检索。统计数据包括最大值、最小值、峰度、范围、标准差等。我使用BayesNet和Weka中的多层感知器对我的音频文件进行了准确分类,这两种方法都为我提供了100%的准确度。

我对MFCC了解不多,但如果您试图对音频文件进行分类,则
@data
下的每一行必须代表一个音频文件。如果您对
@data
下的每一行使用时间窗口或仅一个MFCC,则Weka分类器将尝试对时间窗口或MFCC进行分类,这不是您想要的。为了防止您不熟悉该格式(只是链接,因为我看到您将音频文件的功能与
@data
放在同一行中),下面是一个示例,其中每一行代表一种虹膜植物:

% 1. Title: Iris Plants Database
% 
% 2. Sources:
%      (a) Creator: R.A. Fisher
%      (b) Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
%      (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系数在音频文件的特定范围内的次数。因此,第一个属性可能表示介于-10和-9.95之间的MFCC系数的数量,第二个属性为-9.95到-9.90。因此,如果您有一个非常短的音频文件,其中包含两个MFCC(不太可能,仅用于示例目的),其中一个系数为10,另一个系数为-9.93,那么最后一个属性的值为1,第二个属性的值为1,但所有其他属性的值均为0。这种方法的缺点是没有考虑MFCC系数的顺序。然而,即使忽略了词序,这种方法也适用于文本分类,所以谁知道呢,也许它适用于音频
  • 除此之外,我会看看你的问题是否有好的答案

谢谢您的来信。我编辑了数据的格式。不幸的是,每个音频文件的MFCC数量确实有所不同,我不确定它将如何包含我想要分类的整个文件或声音。每个MFCC有13个不同频率的系数,基于一个帧,我相信是23.27毫秒。我不明白这与其他音频相比会如何。我对我的答案做了一些编辑。很抱歉,我无法提供更多帮助。感谢您的编辑,我尝试进行一些更改,看看效果如何。