首页 > 解决方案 > 基于 FFT 的音频分类

问题描述

在 python 中,我只通过检查频率和幅度来执行警报识别。我的代码采用 1s 声音的 FFT,然后将其与预定频率及其幅度进行比较。由于警报包含更高的频率(6k-9kHz 等)和一个长数组(44100 个不同的元素),我可以在没有 ML 的情况下成功。由于高分辨率的 FFT,即使在 7010Hz 和 7016Hz 等近距离频率下,我也可以区分幅度变化,并且由于这些频率在录制环境中没有任何外部噪声,因此我可以猜出正确的警报。但是,我想用 ML 来实现它,因为用很多警报来执行它是很困难的。有很多音频分类源/工作示例等,但我找不到最适合我的。他们通常使用特征提取,MFCC,但我不 我不想通过使用 MFCC 来失去我的分辨率,因为它结合了接近的频率。所以我只想构建一个机器学习算法,它只检查每个类中的两个数组;频率和幅度(都有 44100 个元素)你能推荐任何资源来构建这个算法吗?我检查了下面的源代码,没问题,但我不想使用 MFCC 类型的方法。如果您发表评论,我可以通过示例来提出我的问题。 pyAudioClassification

标签: pythonmachine-learningclassificationfftsound-recognition

解决方案


除了具有特定频率之外,警报通常还具有特征性的时间特征。要么是波动的,要么是开/关模式。

要检测这些,您应该将 STFT 转换为对数刻度的 melspectrogram。这可以使用 100-1000 毫秒的分析时间窗口进行分类。卷积神经网络往往做得最好,但你也可以只使用随机森林分类器。


推荐阅读