如何对连续音频进行分类

Far*_*ruk 5 python classification machine-learning conv-neural-network recurrent-neural-network

我有一个音频数据集,每个都有不同的长度.这些音频中有一些事件,我想训练和测试,但这些事件是随机放置的,加上长度不同,使用该数据集构建机器学习系统真的很难.我想要修复默认的长度大小并构建多层NN,但事件的长度也不同.然后我考虑使用CNN,就像它用于识别图像上的图案或多个人一样.这个问题是我在尝试理解音频文件时真的很挣扎.

所以,我的问题,是否有人可以给我一些关于构建机器学习系统的技巧,该系统将不同类型的已定义事件分类,并在具有这些事件的数据集上进行自我训练(1个数据包含多于1个事件,它们是不同的来自彼此.)并且他们每个人都有不同的长度?

如果有人帮忙,我将非常感激.

Dmy*_*pko 7

首先,您需要在声音流中注释您的事件,即为它们指定边界和标签。

然后,使用信号帧将您的声音转换为特征向量序列。典型的选择是 MFCC 或 log-mel filtebank 特征(后者对应于声音的频谱图)。完成此操作后,您会将声音转换为固定大小的特征向量序列,这些特征向量可以输入到分类器中。看到这个。为了更好的解释。

由于典型声音的持续时间比分析帧长,因此您可能需要使用滑动窗口堆叠几个连续的特征向量,并将这些堆叠的帧用作 NN 的输入。

现在您有 a) 输入数据和 b) 每个分析窗口的注释。因此,您可以尝试训练 DNN 或 CNN 或 RNN 来预测每个窗口的声音类别。此任务称为定位。我建议您阅读Sainath, TN 和 Parada, C. (2015)。用于小规模关键字识别的卷积神经网络。在 Proceedings INTERSPEECH (pp. 1478–1482) 中,并按照其参考资料了解更多细节。

  • 如果你想用 python 编写代码,请使用 librosa。它带有许多示例。但请注意,无论如何您都需要一些信号处理的基本知识。学习傅里叶变换、窗口函数、频谱。 (3认同)
  • 神经网络通常会在类上产生某种概率分布(使用 softmax 层)。将其应用于每一帧后,您将获得声音类随时间的概率分布。请参阅本文以获取两类示例(使用 MFCC+SVM):http://mazsola.iit.uni-miskolc.hu/~czap/letoltes/IS14/IS2014/PDF/AUTHOR/IS140919.PDF (2认同)
  • 471 MB 不算什么。但是您甚至不需要将所有内容都打包到一个数组中。神经网络在批量读取的数据上进行训练。如果你做的一切都正确,你的 GPU 就绰绰有余了。 (2认同)