我正在从事一个项目,该项目涉及识别彼此不同类型的声音(例如尖叫声、歌声和爆炸声)。我们的数据有合理数量的不同转换(例如:频谱图、色谱图、MFCC 等),但由于我们的大多数特征都是二维矩阵(有些实际上是一维向量),我们希望以某种方式减少这些信息,以便我们希望进行的机器学习需要“可行”的时间。 但是,我对数学和统计学知之甚少,无法对此做出有根据的决定。
我们的数据由大约 1-10 秒长的小声音文件组成。有尖叫声、歌声、砰砰声(和其他人造噪音)和鸟儿(和其他自然噪音)的录音。我们希望能够将每种来源类型与其他来源类型区分开来。请参阅https://github.com/BenSandeen/surveillance_sound_classifier/blob/master/Project.ipynb,了解我们为指导我们选择要使用的功能而制作的不同图。主要关注 3x3 图,因为这是进行比较的地方。这些图主要是时间与频率的关系,幅度由颜色表示。
我在想,也许我们可以通过在每个时间片上以某种方式选择一些代表性的频率/幅度相关特征(我们使用短时傅里叶变换来分析声音)将每个矩阵“折叠”成一个向量,然后得到一个向量一些长度,包含一堆标量。尽管这可能会使计算不同长度的声音变得困难。如果没有有用的数据,将较短的声音向量设置为用零填充是否合理?这将有效地使这些声音投射到一些低维空间上。然后,也许我们可以只使用点积来比较向量;如果它们是平行的,它们将有一个大的产品,但它们几乎是垂直的,它们将有一个接近零的点产品。
或者,我在想像我们的矩阵的踪迹,或者找到它们的特征多项式,可能是有用的方向。我已经阅读了一些关于PCA的内容,但我对它的理解还不够,无法知道这是否是我正在寻找的东西。
谁能想到其他处理和减少这些数据的方法?对于它的价值,我们目前正计划使用 Sci-Kit Learn(抱歉,我不能使用超过 2 个链接)来执行我们的机器学习。