1

任何人都可以为以下内容提供链接、建议或其他形式的帮助?

目标 - 使用 python 对 10 秒的音频样本进行分类,以便之后我可以对着麦克风说话,让 python 从 db 中挑选并播放最接近匹配的片段(一起淡出)。

我的目标不是获得最接近的匹配,我不在乎音频样本的来源是什么。所以结果可能除了在噪音中说话(有趣)之外没有任何用处。

我希望 python 应用程序能够找到 FFT 的特定匹配,例如在 db 中的 10 秒样本内。我猜麦克风的实时采样会有 100 毫秒的缓冲采样。

有任何想法吗?快速傅里叶变换?什么分贝?其他?

4

3 回答 3

3

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

  1. 分割(决定如何制作你的音频样本)
  2. 特征提取(决定您关心的音频特征(例如 FFT))
  3. 距离度量(确定“最接近”的样本是什么)

分割:您目前使用 10 秒样本进行描述。我认为使用较短的片段(接近 100-1000 毫秒)可能会获得更好的结果,以便更好地适应语音的变化。

特征提取:您提到使用 FFT。考虑到它的简单程度,过零率出奇地好。如果你想更花哨,使用MFCC或光谱质心可能是要走的路。

距离度量:大多数人使用欧几里得距离,但也有更高级的,如曼哈顿距离余弦距离推土机距离

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

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

于 2011-11-29T20:57:04.740 回答
0

尝试搜索有关“音乐指纹”的算法。

于 2011-11-29T16:12:58.843 回答
0

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

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

于 2015-04-17T23:35:45.930 回答