代码之家  ›  专栏  ›  技术社区  ›  CCCodes

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

  •  2
  • CCCodes  · 技术社区  · 8 年前

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

    question about merging 数据也是如此,因为我觉得这可能会影响数据到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 files 使用Weka使用 openSMILE 遵循来自的方法 this 但我不确定这些数据将如何用于音频分类,因为每行数据都是来自同一文件的10毫秒音频。每行的name属性都是“未知”的,我假设这是数据试图分类的属性。我如何才能对一个整体声音(而不是10毫秒)进行分类,并将其与其他几个整体声音进行比较?


    在更透彻地阅读 website

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tomer Aberbach    8 年前

    我对MFCC了解不多,但如果您试图对音频文件进行分类,那么下面的每一行 @data 必须表示一个音频文件。如果您对下的每一行使用时间窗口或仅一个MFCC @数据 然后Weka分类器将尝试对时间窗口或MFCC进行分类,这不是您想要的。以防您不熟悉格式(只是链接,因为我看到您将音频文件的功能与 @数据 example 其中每条线代表一种鸢尾属植物:

    % 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值始终在某个范围内(例如-10到10或类似的值),则可以使用 "bag of words" 模型属性将表示MFCC系数在音频文件的特定范围内的次数。因此,第一个属性可能表示MFCC系数的数量,介于-10和-9.95之间,第二个属性为-9.95到-9.90。因此,如果您有一个包含两个MFCC的非常短的音频文件(不太可能,只是为了举例),其中一个系数为10,另一个系数为-9.93,那么您的最后一个属性的值为1,您的第二个属性的值为1,但所有其他属性的值均为0。该方法的缺点是未考虑MFCC系数的顺序。然而,即使忽略了词序,这种方法也适用于文本分类,所以谁知道呢,也许它适用于音频。
    • 除此之外,我会看看你的合并问题是否有好的答案。
    推荐文章