在没有事先训练基地的情况下隔离蝙蝠物种

信息处理 fft 声音的 海浪
2022-02-12 17:12:23

我正在尝试一个项目,但我收到了不是超声波导航调用的 bat 调用(.wav 格式)。我正在寻找隔离不同种类的蝙蝠并监测它们的活动。

我遇到的问题是我没有先前的训练集来对样本进行特征匹配以尝试识别它们。我一直在做部分研究,我查看了以下链接,其中提供了蝙蝠种类、它们的重复率、FM/CF 和峰值功率的详细信息。

从上面的链接中,我假设我可以拥有某种包含蝙蝠种类的数组,以及它们的频率(范围)或“峰值功率”,然后使用 FFT 算法,转换我拥有的样本获得,然后将 FFT 的输出与预设数组进行匹配,从而使平台能够监控它们的活动。

这里有2个问题:

  1. 基于以上所述,这是否是隔离蝙蝠并因此监控它们的活动的理想解决方案,还是我需要实施进一步的算法来隔离蝙蝠的呼叫?

  2. 我只有使用 Cooley-Tukey FFT 算法的经验。这对于这种类型的项目是否足够?

1个回答

1) 基于上述情况,这是否是隔离蝙蝠并因此监控它们的活动的理想解决方案,还是我需要实施进一步的算法以隔离蝙蝠的呼叫?

简短的回答是否定的,这绝不是理想的选择。这种类型的工作与语音/语音识别有很强的重叠,所涉及的算法(或更确切地说是特征)并不是微不足道的。

当然,人们可以从物种的音频信号中提取频率特征来尝试对它们进行聚类,而 DFT 肯定是此类原始特征的首选变换。然而,DFT 只会给你频率分数,尽管它会从哪里开始。其他频率度量和功能可能更复杂。(查看倒谱分析、MFCC 等)。

2)我只有使用Cooley-Tukey FFT算法的经验,这对于这种类型的项目是否足够?

请记住,DFT 是一种变换,而 FFT 是这种变换的有效算法。此外,Cooley-Tukey 算法是实现 FFT 的一种方式。在您的工作中,您将使用具有 FFT 的预制库。您不需要在 21 世纪实现 FFT,就像您不需要实现平方根函数一样。

我强烈怀疑您需要为此类项目计算短时傅里叶变换(STFT)。为满足您的下一个需求,请参阅 STFT 上的 wiki 链接以及此处的此帖子STFT 允许您在双时频域中分析信号。您很可能希望在该空间中开始特征提取。

假设我已经计算了 STFT 和 MFCC 并提取了特征,那么我将如何识别蝙蝠的种类?因此,我是否需要某种培训才能完成这项任务?

一旦您决定了需要使用哪些功能集,您当然需要一个学习算法来正确区分它们。由于您没有训练集,因此有两种选择。第一个显而易见的是获得一个训练集,和/或根据您所知道的真实情况精心标记您的数据。一旦你有了标签,你就可以使用有监督的训练技术,比如逻辑回归或简单的感知器,在特征空间中分离出与你的数据不相交的超平面。然而,第二种选择是让您使用无监督学习技术(例如 K-means)。

如果你使用 K-means 之类的东西,你需要先验地知道你试图区分多少种不同的蝙蝠。这是您的超参数的值。K-means 的输出将是个向量,每个向量都位于特征空间中的维点中,代表您的集群质心。现在,每次你得到一个新的音频样本,你:kkN

  • 计算个特征并将其放入特征向量中。N
  • 均值预先计算个质心向量之间的 L2 向量范数(又名欧几里得距离)kk
  • 个质心中挑选出与您的点最近的距离相对应的ik

在数学上,您想通过以下方式类型的 bat :ik

argmini(1,2,...k)n=1N(xfi)2

其中 x特征向量, x簇质心xN1fiiN1k