【发布时间】:2017-12-26 16:50:58
【问题描述】:
我正在尝试开发一种在 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
任何帮助将不胜感激。
编辑: 我按照this网站上的方法使用Weka使用openSMILE生成了一些ARFF files,但我不确定如何使用这些数据对音频进行分类,因为每行数据都是来自同一行的10毫秒音频文件。每行的名称属性是“未知的”,我假设这是数据将尝试分类的属性。我如何能够对整体声音(而不是 10 毫秒)进行分类并将其与其他几个整体声音进行比较?
编辑 #2:成功!
在更彻底地阅读了我找到的website 之后,我看到了 Accumulate 脚本和 Test and Train 数据文件。累积脚本将从单独的音频文件生成每组 MFCC 数据的所有文件放在一个 ARFF 文件中。他们的文件由大约 200 个属性和 12 个 MFCC 的统计信息组成。尽管我无法使用 OpenSmile 检索这些统计信息,但我使用了 Python 库来检索这些统计信息。统计数据是最大值、最小值、峰度、范围、标准差等。我在 Weka 中使用 BayesNet 和 Multilayer Perceptron 准确地分类了我的音频文件,这两种方法都为我提供了 100% 的准确率。
【问题讨论】:
标签: audio machine-learning weka feature-extraction mfcc