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(x−fi)2−−−−−−−−−−⎷
其中是 x特征向量,是个 x簇质心。xN1fiiN1k