如何对连续音频进行分类

时间:2016-12-08 19:16:25

标签: python machine-learning classification conv-neural-network recurrent-neural-network

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

现在您有a)输入数据和b)每个分析窗口的注释。因此,您可以尝试训练DNN或CNN或RNN来预测每个窗口的声音等级。此任务称为定位。我建议你阅读 Sainath,T。N.,& Parada,C。(2015)。用于小占用关键字定位的卷积神经网络。在Proceedings INTERSPEECH(第1478-1482页)中,并参考其参考资料以获取更多细节。

答案 1 :(得分:2)

您可以使用递归神经网络(RNN)。

https://www.tensorflow.org/versions/r0.12/tutorials/recurrent/index.html

输入数据是一个序列,您可以在时间序列的每个样本中添加标签。

例如,在tensorflow等库中可以使用LSTM(一种RNN)。