是否有人能够提供以下链接,建议或其他形式的帮助?
目标 - 使用python对10秒音频样本进行分类,以便我之后可以对着麦克风讲话并使用python挑选并播放来自db的最接近匹配的片段(褪色)。
我的目标是没有最接近的匹配,我不关心音频样本的来源是什么。因此,除了在噪音(有趣)中说话之外,结果可能没有用。
我希望python app能够找到FFT的特定匹配,例如在db中的10秒样本中。我想麦克风的实时采样将有100毫秒的缓冲区采样。
有什么想法吗? FFT?什么db?其他
答案 0 :(得分:3)
为了做到这一点,你需要三件事:
细分:您目前使用10秒样本进行描述。我认为你可以用较短的片段(接近100-1000ms)获得更好的效果,以便更好地获得适合语音变化的内容。
特征提取:您提到使用FFT。考虑到它有多简单,zero crossing rate出乎意料地好。如果你想获得更多的幻想,使用MFCCs或光谱质心可能是要走的路。
距离指标:大多数人使用euclidean distance,但也有manhattan distance,cosine distance和earth-movers distance等更高级用户。
对于数据库,如果您有足够小的样本集,您可以尝试将所有内容加载到kdtree中,以便您可以进行快速距离计算,并将其保存在内存中。
祝你好运!这听起来像一个有趣的项目。答案 1 :(得分:0)
尝试在“音乐指纹识别”中搜索算法。
答案 2 :(得分:0)
您可以尝试一些典型的短期特征提取(例如能量,过零率,MFCC,光谱特征,色度等),然后通过特征统计向量对您的片段进行建模。然后,您可以使用一个简单的基于距离的分类器(例如kNN),以便在给定未知“查询”的情况下从手动设置的集合中检索“最接近”的训练样本。
查看我的lib上几个Python音频分析功能:pyAudioAnalysis