鸟鸣音频分析 - 找出两个片段匹配程度

19
我有大约100个采样率为48000的鸟类物种wav音频文件,我想要比较它们之间的相似性。我从音频文件开始,但我对处理图像更了解一些,所以我认为我的分析将在声谱图图像上进行。我有几个不同日期的鸟类样本。
以下是一些数据示例,以及(抱歉轴未标记; x是样本,y是线性频率乘以10,000 Hz的某种值): alt text 这些鸟鸣声显然发生在“单词”中,是歌曲的不同片段,这可能是我应该比较的层次; 相似单词之间的差异以及各种单词的频率和顺序。 alt text

我想尝试去除蝉噪声-蝉鸣声具有相当一致的频率,并且倾向于相位匹配,因此这不应该太难。 alt text 看起来阈值处理可能有用。
我被告知,大多数现有文献都使用基于歌曲特征的手动分类,例如Pandora Music Genome Project。我想要像Echo Nest一样使用自动分类。更新:很多人研究这个。
我的问题是,我应该使用什么工具进行此分析? 我需要:
  • 过滤/阈值通用噪声并保留音乐
  • 过滤掉像蝉一样的特定噪声
  • 分割和分类鸟鸣中的短语、音节和/或音符
  • 创建部分之间差异/相似性的度量;这将捕捉到不同鸟类之间的差异,同时最小化同一鸟类的不同叫声之间的差异

我选择的工具是numpy/scipy,但像openCV这样的工具可能也很有用?

编辑:在一些研究和Steve的帮助回答之后,更新了我的术语和方法。


1
真的很有趣 :) 我现在没有时间给出完整的答案,但我会看看交叉相关——如果我没记错,那就是频域内的乘法。简单的噪声过滤机制包括高通和低通滤波器,如果你知道你的频率在某个范围内。还要检查去卷积,并查看地震处理时间序列技术,以获取一些类似的灵感。有点令人沮丧,我会尽快回复 :) - Tim Barrass
@Tim 谢谢,我会开始阅读列表的! - Thomas
我知道“动态规划”技术和“隐马尔可夫模型”曾经被用于分析鸟鸣声,并得出它们之间的距离。 - telesphore4
如果你有足够的标记数据,可以尝试访问http://deeplearning.net/tutorial/。我发现这个网站在我开始学习机器学习和分类时非常有帮助,很多示例代码可以在不太修改的情况下用于自己的项目中。 - Josh Bleecher Snyder
4个回答

6

由于内容过长,我必须将其编写为回答。

我目前在这个领域工作,所以我认为我有一些知识。显然从我的角度来看,我建议使用音频而不是图像。我还建议使用MFCCs作为特征提取(你可以将其视为系数,它们总结/描述了音频频率的特定子频段[因为它们是])。

GMMs是首选。

要执行此任务,您必须拥有一些(最好是很多)标记/已知的数据,否则机器学习就没有基础可言。

一个可能对您有用的技术性说明:

“然后,在测试期间,您会向GMM提交一个查询MFCC向量,它将告诉您它认为它是哪个物种。”

更准确地说,您向每个GMM提交一个查询(如果使用正确,则每个都会给您一个可能性分数[概率],表示该特定特征向量被该概率分布发出的可能性)。然后,您比较从所有GMM接收到的所有可能性分数,并根据您接收到的最高分数进行分类。

UBMs

您可以使用UBM(通用背景模型)来对所有背景噪声/信道失真进行建模,而不是“过滤掉”它们。该模型包括一个使用您可用的所有训练数据(即,您为每个类使用的所有训练数据)进行训练的GMM。您可以使用这个模型来获取“可能性比率”(Pr[x将由特定模型发出] / Pr[x将由背景模型(UBM)发出]),以帮助消除任何可以由背景模型本身解释的偏置。


2
只需要评论一下:HMM不能被描述为“多状态GMM”。HMM反映了数据中的短期时间关系,而GMM没有内置时间概念。HMM不必使用高斯混合模型,但GMM必须使用。HMM在隐藏状态和观察之间有一个分离,而GMM没有。如果有用的话,这里有一个免费的Python MFCC+GMM实现,反映了这里讨论的基本模型:https://github.com/danstowell/smacpy - Dan Stowell
@DanS 我完全同意你的观点。这个问题中给出的GMM和HMM的概念是错误的。 - lightalchemist

5
有趣的问题,但范围相当广泛。我建议查阅一些自动识别鸟鸣的现有文献。(是的,有一堆人在研究它。)
这篇论文(编辑:抱歉,链接失效了,但 Dufour等人2014年的这章可能会更清晰)使用了基本的两阶段模式识别方法,我建议首先尝试:特征提取(该论文使用MFCCs),然后分类(该论文使用GMM)。对于输入信号中的每个帧,您都会得到一个MFCC向量(介于10到30之间)。这些MFCC向量用于与相应的鸟类标签一起训练GMM(或SVM)。然后,在测试期间,您将提交一个查询MFCC向量到GMM,并告诉您它认为是哪个物种。

虽然一些人已经将图像处理技术应用于音频分类/指纹识别问题(例如,Google Research的这篇论文),但由于令人讨厌的时间变化,我不建议您在解决类似问题时使用这些技术。

“我应该使用哪些工具进行此分析?”除了其他很多工具之外:

  1. 特征提取:MFCCs、起始点检测
  2. 分类:GMM、SVM
  3. Google

对于不完整的答案表示抱歉,因为这是一个广泛的问题,而且这个问题还有更多内容无法在此简要回答。


这篇论文是一个失效的链接,您能否分享更多信息? - StefanS
1
抱歉,我希望我知道它是什么。但我用一个链接替换了它,这个链接可能比原来的更好。 - Steve Tjoa

1
根据您定义应用程序的方式,您可能需要监督或无监督方法。在第一种情况下,您需要进行注释以提供训练阶段所需的从样本(音频文件)到类别(鸟类ID或任何您的类别)的映射集。对于无监督方法,您需要对数据进行聚类,以便将相似的声音映射到同一簇中。
您可以尝试我的库:pyAudioAnalysis,它提供了高级包装器,用于声音分类和声音聚类。

1

你似乎已经在执行STFT或类似的操作来构建这些图像,因此我建议构建这些混合时间/频率结构的有用摘要。我记得有一个为稍微不同目的而构建的系统,它能够通过将音频波形数据分成少量(<30)的时间和幅度箱并简单地计算落入每个箱中的样本数量来很好地利用该数据。您可能可以在时间/幅度域或时间/频率域中执行类似的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接