gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:46:20 25 4
gpt4 key购买 nike

我正在尝试开发一种在 Weka 中使用 MFCC 对音频进行分类的方法。我的 MFCC 是使用 1024 的缓冲区大小生成的,因此每个音频录制都有一系列 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 毫秒音频。每行的名称属性都是“未知”,我认为这是数据尝试分类的属性。我如何能够对整体声音(而不是 10 毫秒)进行分类,并将其与其他几个整体声音进行比较?

<小时/>

编辑#2:成功!

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

最佳答案

我对 MFCC 不太了解,但如果您尝试对音频文件进行分类,那么 @data 下的每一行必须代表一个音频文件。如果您在 @data 下的每一行使用时间窗口或仅一个 MFCC,那么 Weka 分类器将尝试对时间窗口或 MFCC 进行分类,这不是您想要的。以防万一您不熟悉该格式(只是链接,因为我看到您将音频文件的功能与 @data 放在同一行),这里有一个 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 系数。
  • 如果 MFCC 值始终在特定范围内(例如 -10 到 10 或类似的值),则可以使用 "bag of words"模型。您的属性将表示音频文件的 MFCC 系数落在特定范围内的次数。因此,第一个属性可能表示介于 -10 和 -9.95 之间的 MFCC 系数的数量,第二个属性可能表示 -9.95 到 -9.90 之间的 MFCC 系数的数量。因此,如果您有一个非常短的音频文件,其中有两个 MFCC(不太可能,仅用于示例目的),并且一个系数为 10,另一个系数为 -9.93,那么您的最后一个属性的值为 1,第二个属性的值为为 1,但所有其他属性的值为 0。此方法的缺点是不考虑 MFCC 系数的顺序。然而,这种方法对于文本分类效果很好,尽管忽略了词序,所以谁知道呢,也许它也适用于音频。
  • 除此之外,我会看看您是否能就合并问题得到任何好的答案。

关于audio - 如何在Weka中使用MFCC进行音频分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com