对于我的最后一个项目,我试图实时(通过录制声音片段)识别狗/树皮/鸟的声音。我正在使用MFCC作为音频功能。最初,我使用jAudio库从声音剪辑中总共提取了12个MFCC矢量。
现在,我正在尝试训练机器学习算法(目前我尚未确定算法,但很可能是SVM)。声音片段的大小约为3秒。我需要澄清有关此过程的一些信息。他们是,

  • 我是否必须使用基于帧的MFCC(每帧12个)来训练此算法
    还是基于整体片段的MFCC(每个声音片段12个)?
  • 要训练算法,我是否必须将所有12个MFCC视为12个不同属性,还是必须将这12个MFCC视为一个属性?

  • 这些MFCC是剪辑的整体MFCCS,
    -9.598802712290967 -21.644963856237265 -7.405551798816725 -11.638107212413201 -19.441831623156144 -2.780967392843105 -0.5792847321137902 -13.14237288849559 -4.920408873192934 -2.7111507999281925 -7.336670942457227 2.4687330348335212
    克服这些问题,我们将不胜感激。我在Google上找不到很好的帮助。 :)

    最佳答案

  • 您应该每帧计算MFCC。由于您的信号会随时间变化,因此将它们移到整个剪辑上是没有意义的。更糟糕的是,您最终可能会遇到代表相似的狗和鸟。我会尝试几种帧长。通常,它们将以毫秒为单位。
  • 所有这些都应该是单独的功能。让机器学习算法决定哪个是最佳预测器。

  • 请注意,MFCC对噪声敏感,因此请首先检查样本的声音。例如,提供了更丰富的音频特征选择供提取Yaafe library,其中许多将在您的情况下更好用。具体是哪一个?这是我发现对鸟叫进行分类最有用的方法:
  • 光谱平坦度
  • 感性传播
  • 频谱滚降​​
  • 频谱减少
  • 光谱形状统计
  • 光谱斜率
  • 线性预测编码(LPC)
  • 线谱对(LSP)

  • 也许您会发现 checkout this project很有意思,尤其是我与Yaafe进行交互的那一部分。

    过去,我完全按照您的计划使用SVM。今天,我将绝对使用梯度增强。

    关于machine-learning - 如何使用MFCC系数向量训练机器学习算法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35253243/

    10-12 19:34