python - 等长样本的音频分类/'声码器'东西

时间:2011-11-29 14:43:43

标签: python audio fft classification

是否有人能够提供以下链接,建议或其他形式的帮助?

目标 - 使用python对10秒音频样本进行分类,以便我之后可以对着麦克风讲话并使用python挑选并播放来自db的最接近匹配的片段(褪色)。

我的目标是没有最接近的匹配,我不关心音频样本的来源是什么。因此,除了在噪音(有趣)中说话之外,结果可能没有用。

我希望python app能够找到FFT的特定匹配,例如在db中的10秒样本中。我想麦克风的实时采样将有100毫秒的缓冲区采样。

有什么想法吗? FFT?什么db?其他

3 个答案:

答案 0 :(得分:3)

为了做到这一点,你需要三件事:

  1. 细分(决定如何制作音频样本)
  2. 功能提取(决定您关注的音频功能(例如FFT))
  3. 距离指标(决定“最接近”的样本)
  4. 细分:您目前使用10秒样本进行描述。我认为你可以用较短的片段(接近100-1000ms)获得更好的效果,以便更好地获得适合语音变化的内容。

    特征提取:您提到使用FFT。考虑到它有多简单,zero crossing rate出乎意料地好。如果你想获得更多的幻想,使用MFCCs或光谱质心可能是要走的路。

    距离指标:大多数人使用euclidean distance,但也有manhattan distancecosine distanceearth-movers distance等更高级用户。

    对于数据库,如果您有足够小的样本集,您可以尝试将所有内容加载到kdtree中,以便您可以进行快速距离计算,并将其保存在内存中。

    祝你好运!这听起来像一个有趣的项目。

答案 1 :(得分:0)

尝试在“音乐指纹识别”中搜索算法。

答案 2 :(得分:0)

您可以尝试一些典型的短期特征提取(例如能量,过零率,MFCC,光谱特征,色度等),然后通过特征统计向量对您的片段进行建模。然后,您可以使用一个简单的基于距离的分类器(例如kNN),以便在给定未知“查询”的情况下从手动设置的集合中检索“最接近”的训练样本。

查看我的lib上几个Python音频分析功能:pyAudioAnalysis