基于 FFT 结果进行分类

信息处理 fft 频率 频域
2022-02-01 10:22:32

从我完全是 DSP 初学者的事实开始,这可能很重要。我有一些录音(采样率为 22 kHz)——鸟歌——我一直在尝试使用 FFT(在 Matlab/Octave 中)进行分析。特别是,我试图使用机器学习分类算法展示这些录音的不同类别具有不同频率(或频率范围)的突出。录音的长度可变,并且由于计算限制,我能做的最大 FFT 大小是 2^19(我理解的是它从每个音频文件中获取的点数)。所以,我的第一个问题是:如果我将我的记录分成几部分,每个部分对应于我选择的 FFT 的大小——将这些部分视为单独的数据示例(即单独的记录)是否仍然合理?

第二个问案子。

1个回答

我认为 FFT 对于您的问题来说是一个不好的表示选择 - 它捕获了与您的应用程序无关的信号的许多属性,并且正如您所怀疑的那样,如果您提取整个信号的 FFT,它会生成大量数据来处理.

在我看来,研究鸟鸣时要考虑的最重要的数量是音高(基频)——声音的所有其他维度(响度、音色)实际上都是你想要摆脱的可变因素。例如,在不同的环境和不同的设备上录制相同的鸟鸣的两次录音,由于条件的变化,会表现出不同的频率响应;但幸运的是,音高轮廓完全相同!

因此,我建议您使用音高转录实用程序(罐装解决方案:aubiopraatsonic Visualizer ...)来提取音高轮廓 - 一种将主要“音符”作为时间函数的函数。由此,您可以定义一个包含音高统计信息的特征向量(平均值、标准差,可能还有高阶矩);或者只是建立一个音高值的直方图;这将产生一个非常紧凑的适合自动分类的特征向量。为了改善结果,您可以添加捕捉音高随时间动态变化的特征——从音高轮廓中提取的主要调制率、几秒钟音频块上的音高统计变化等。