19

我有大约 100 个 wav 音频文件,采样率为 48000 个相同物种的鸟类,我想测量它们之间的相似性。我从波形文件开始,但我(非常了解)更多关于使用图像的知识,所以我假设我的分析将在频谱图图像上进行。我有几个不同日子的鸟类样本。

以下是一些数据示例,以及(对于未标记的轴表示歉意;x 是样本,y 是线性频率乘以 10,000 Hz): 替代文字 这些鸟鸣显然出现在“单词”中,歌曲的不同片段可能是我应该比较一下;相似词之间的差异以及各种词的频率和顺序。 替代文字

我想尝试去除蝉噪声 - 蝉的啁啾频率相当一致,并且倾向于相位匹配,所以这应该不会太难。 替代文字

似乎一些阈值可能有用。

有人告诉我,大多数现有文献都使用基于歌曲特征的手动分类,例如 Pandora Music Genome Project。我想像Echo Nest一样;使用自动分类。更新:很多人都在研究这个。

我的问题是我应该使用哪些工具进行此分析?我需要:

  • 过滤/限制一般噪音并保留音乐
  • 过滤掉像蝉这样的特定噪音
  • 拆分和分类鸟鸣中的短语、音节和/或音符
  • 创建零件之间差异/相似性的度量;可以识别鸟类之间差异的东西,最大限度地减少同一只鸟的不同叫声之间的差异

我选择的武器是 numpy/scipy,但是像 openCV 这样的东西在这里可能有用吗?

编辑:经过一些研究和史蒂夫的有用回答,更新了我的术语和重新措辞的方法。

4

4 回答 4

6

不得不将此作为答案,因为评论太长了。

我现在基本上在这个领域工作,所以我觉得我有一些知识。显然,从我的角度来看,我建议使用音频而不是图像。我还建议使用 MFCC 作为您的特征提取(您可以将其视为总结/表征音频的特定子带的系数 [因为它们是])。

GMM 是最好的选择。

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

您可能会发现有用的技术性:

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

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

UBM

您可以使用 UBM(通用背景模型)简单地对所有背景噪声/通道失真进行建模,而不是“过滤掉”噪声。该模型由一个 GMM 组成,该 GMM 使用您可用的所有训练数据(即您用于每个类的所有训练数据)进行训练。您可以使用它来获得“似然比”(Pr [x 将由特定模型发出] / Pr [x 将由背景模型(UBM)发出])以帮助消除背景模型可以解释的任何偏差本身。

于 2010-12-21T22:42:31.580 回答
5

有趣的问题,但相当广泛。我确实建议查看一些关于自动鸟鸣识别的现有文献。(是的,有很多人在研究它。)

这篇论文(编辑:抱歉,死链接,但Dufour 等人 2014 年的这一章可能会更清晰)使用我建议首先尝试的基本两阶段模式识别方法:特征提取(论文使用 MFCC),然后分类(本文使用 GMM)。对于输入信号中的每一帧,您都会得到一个 MFCC 向量(介于 10 到 30 之间)。这些 MFCC 向量用于训练 GMM(或 SVM)以及相应的鸟类种类标签。然后,在测试期间,您向 GMM 提交查询 MFCC 向量,它会告诉您它认为是哪个物种。

尽管有些人已经将图像处理技术应用于音频分类/指纹问题(例如,Google Research 的这篇论文),但由于令人讨厌的时间变化,我不愿推荐这些技术来解决您的问题或类似问题。

“我应该使用什么工具来进行这种分析?” 其中包括:

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

对不起,答案不完整,但这是一个广泛的问题,这个问题还有很多比这里可以简单回答的问题。

于 2010-12-21T20:37:33.327 回答
1

根据您想要定义应用程序的方式,您可能需要有监督或无监督的方法。在第一种情况下,您将需要一些注释过程,以便为训练阶段提供一组从样本(音频文件)到类(鸟类 ID 或任何您的类)的映射。在无监督方法的情况下,您需要对数据进行聚类,以便将相似的声音映射到同一个聚类。

你可以试试我的库:pyAudioAnalysis,它为声音分类和声音聚类提供了高级包装器。

于 2015-04-26T21:18:39.603 回答
1

您显然已经在执行 STFT 或类似的东西来构建这些图像,所以我建议构建这些混合时间/频率结构的有用摘要。我记得一个为稍微不同的目的而构建的系统,它能够很好地利用音频波形数据,方法是按时间和幅度将其分成少量(< 30)个 bin,并简单地计算每个 bin 中的样本数. 您可能可以在时间/幅度域或时间/频率域中执行类似的操作。

于 2011-01-21T09:39:33.703 回答