鸟鸣音频分析 - 如何判断两个片段的匹配度

19 投票
4 回答
5115 浏览
提问于 2025-04-16 08:52

我有大约100个采样率为48000的鸟叫声的wav音频文件,都是同一种鸟的。我想测量它们之间的相似性。我现在从音频文件开始,但我对处理图像稍微了解一点,所以我想我的分析会集中在声谱图的图像上。我有几天不同时间录制的一些鸟叫声样本。

这里有一些数据的例子,抱歉坐标轴没有标注;x轴是样本,y轴是线性频率乘以大约10,000赫兹: alt text 这些鸟叫声显然是以“词”的形式出现的,也就是歌曲中不同的片段,可能正是我应该进行比较的层面;包括相似词之间的差异,以及各种词的频率和顺序。 alt text

我想尝试去除蝉的噪音——蝉的鸣叫频率相对稳定,而且往往会同步,所以这应该不太难。 alt text

看起来一些阈值处理可能会很有用。

我听说大多数现有的文献使用基于歌曲特征的手动分类,比如Pandora音乐基因组项目。我想像Echo Nest那样,使用自动分类。更新:很多人确实在研究这个。

我的问题是,我应该使用什么工具来进行这个分析?我需要:

  • 过滤/阈值处理掉一般噪音,保留音乐
  • 过滤掉特定的噪音,比如蝉的声音
  • 拆分和分类鸟叫声中的短语、音节和/或音符
  • 创建部分之间的差异/相似性度量;能够识别不同鸟之间的差异,同时尽量减少同一只鸟不同叫声之间的差异

我选择的工具是numpy/scipy,但像openCV这样的工具在这里会有用吗?

编辑:在一些研究和Steve的有用回答后,我更新了我的术语并重新表述了我的方法。

4 个回答

1

看起来你已经在做短时傅里叶变换(STFT)或者类似的工作来生成那些图像了,所以我建议你可以尝试总结一下这些混合的时间/频率结构。 我记得有一个系统是为了稍微不同的目的而设计的,它通过把音频波形数据分成少量(少于30个)的时间和幅度区间,然后简单地统计每个区间内的样本数量,来很好地利用这些数据。 你也许可以尝试做类似的事情,无论是在时间/幅度领域还是时间/频率领域。

5

这是个有趣的问题,但范围有点大。我建议你看看一些关于自动鸟鸣识别的现有文献。(没错,确实有很多人在研究这个。)

这篇论文(编辑:抱歉,链接失效,但Dufour等人2014年的这章可能会更清楚)使用了一种基本的两阶段模式识别方法,我建议你先试试:特征提取(这篇论文使用了MFCCs),然后是分类(论文中使用了GMM)。对于输入信号中的每一帧,你会得到一个MFCC的向量(大约10到30个)。这些MFCC向量用来训练一个GMM(或SVM),同时还要有对应的鸟类标签。然后,在测试时,你把一个查询的MFCC向量提交给GMM,它会告诉你它认为是哪种鸟。

虽然有些人把图像处理技术应用到音频分类或指纹识别问题上(例如,这篇谷歌研究的论文),但我不太推荐这些技术用于你的问题或类似的问题,因为有些烦人的时间变化会让事情变得复杂。

“我应该用什么工具来进行分析?”在许多其他工具中:

  1. 特征提取:MFCCs,起始检测
  2. 分类:GMM,SVM
  3. 谷歌

抱歉没有给出完整的答案,但这是个广泛的问题,涉及的内容比这里能简短回答的要多。

6

我觉得这个内容太长了,不适合放在评论里,所以我决定把它写成一个回答。

我现在正好在这个领域工作,所以我觉得我有一些经验。从我的角度来看,我建议你多做音频方面的工作,而不是图像。同时,我也推荐使用MFCC作为特征提取的方法。你可以把MFCC想象成一些系数,它们用来总结或描述音频频率的特定子带。

使用GMM(高斯混合模型)是个不错的选择。

要完成这个任务,你必须有一些(最好是很多)标记好的数据,否则机器学习就没有基础可言。

这里有个你可能会觉得有用的技术细节:

“然后,在测试时,你提交一个查询的MFCC向量给GMM,它会告诉你它认为是什么物种。”

更准确地说,你是把查询提交给每个GMM(如果你用得当,每个GMM会给你一个可能性得分,也就是这个特征向量由该概率分布产生的概率)。然后你比较从所有GMM得到的可能性得分,最后根据得分最高的来分类。

UBMs(通用背景模型)

与其“过滤掉”噪音,不如用UBM来建模所有的背景噪音和通道失真。这个模型是用你所有可用的训练数据(也就是你为每个类别使用的所有训练数据)训练出来的GMM。你可以用这个模型来获得一个“可能性比”(Pr[x由特定模型产生] / Pr[x由背景模型(UBM)产生]),这可以帮助你消除由背景模型本身解释的任何偏差。

撰写回答