简单的答案是,你需要多于一个algorithm。 好的和弦识别方法可以更恰当地描述为“系统”,但通常它们确实是基于对频域的初始变换(通常是DFT)。
如果你想要一个和这个歌曲类似的和弦代表
CG Am F7 F6 C ...
那么这实际上是从识别audio片段中的音符中略微去除的问题。 事实上,有两个问题(粗略地说):
找出哪些球场随时出现
随着时间的推移将这些音高分组以便能够将和弦标签分配到时间间隔。
事实certificate,从时域(正常audio)到频域(频谱表示)的转换方式只有有限的重要性。 事后处理非常重要,通常使用复杂的概率模型(类似于语音识别中的模型:HMM,DBN,…)来解决这个问题。
尝试谷歌学者“和弦转录”,或“和弦检测”,或“和弦标签”进行该领域的先进研究。
这些方法大多使用离散傅里叶变换(DFT)来创build初始谱图。 在进一步的处理中,它们也往往略有不同,尽pipe使用了不同的时间序列平滑技术:隐马尔可夫模型,dynamic贝叶斯networking,支持向量机(SVMstruct)和条件随机场等。 最先进的转录器使用自动调谐,关键信息,低音信息和度量位置信息来改善结果。 我的论文 (第2章)给出了一个很好的概述。
开源和弦检测algorithm:
希望这可以帮助。