吉他和弦识别算法?

use*_*792 39 audio signal-processing pitch-tracking guitar

什么是好的数字信号处理算法,这对吉他和弦有好处?由于快速傅里叶变换,我认为只有在吉他上演奏的单个音符才准确,而不是同时演奏的音符(即和弦).

谢谢!

小智 70

简短的回答是您需要多个算法.好的和弦识别方法可以更恰当地被描述为"系统",但通常它们确实基于对频域的初始变换(最常见的是DFT).

如果你想要一首类似于这首歌的和弦代表

C G Am F7 F6 C ...
Run Code Online (Sandbox Code Playgroud)

那么这实际上是一个问题,从识别一段音频中的音符稍微消除了.事实上,有两个问题(粗略地说):

  1. 随时查找哪些球场
  2. 随着时间的推移对这些音高进行分组,以便能够为时间间隔分配和弦标签.

事实证明,从时域(正常音频)转换到频域(频谱表示)的方式只是有限的重要性.之后你做的非常重要,通常使用复杂的概率模型(类似于语音识别中的模型:HMM,DBN,......)来解决这个问题.

尝试谷歌学者"和弦转录",或"和弦检测",或"和弦标签",以进行该领域的高级研究.

这些方法中的大多数使用离散傅立叶变换(DFT)来创建初始频谱图.在进一步的处理也是如此,他们往往只略有不同,但不同的时间序列平滑技术已被用于:隐马尔可夫模型,动态贝叶斯网络,支持向量机(SVMstruct),和条件随机域-等等.最先进的转录员使用自动调谐,关键信息,低音音符信息和度量标准位置信息来改善结果.我的论文(第2章)给出了很好的概述.

开源和弦检测算法:

希望这可以帮助.

  • +1是一个很好的答案,并能够在答案中引用自己的论文. (11认同)

Nem*_*eth 3

好吧,您可以尝试另一组频域算法,例如小波。但我不确定这是否能解决您的准确性问题。实际上,我不明白\xe2\x80\x99不明白你在FFT方面遇到了什么问题。它始终是和弦的近似值,没有完美的方法来检索这种声音信息。

\n\n

因此,这取决于您对该频谱所做的分析,对于单个音符,实际上有很多比 FFT 更好的算法,但对于和弦,您很可能必须使用 FFT。

\n\n

您必须处理的问题是将基频谐波与高次谐波分开,可能有帮助的一件事是仅考虑吉他范围内的频率。\n如果您只需要处理吉他声音,您应该花一些时间研究吉他的正常频域图,并尝试使用它来提高准确性。

\n