2010-10-27 52 views
38

这是一个很好的数字信号处理算法,在吉他谱上很好吗?由于快速傅里叶变换我认为只有在吉他弹奏的单个音符上才是准确的,而不是在同时弹奏的音符上(即和弦)。吉他和弦识别算法?

谢谢!

+2

问问Melodyne的家伙:http://www.youtube.com/watch?v = jFCjv4_jqAY – herzmeister 2010-10-27 12:25:49

+4

你认为FFT在你的情况下是不是真的? – Biggles 2010-10-27 12:37:53

回答

2

那么,你可以尝试另一组频域的算法,如小波。但我不确定这是否会影响您的准确性问题。其实,我不明白你在FFT方面遇到什么问题。它总是和弦的近似值,没有完美的方式来检索声音上的这种信息。

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

您将不得不处理的问题是将高次谐波的基本谐波分开,有一件事可能有帮助,那就是只考虑吉他范围内的频率。 如果您只需要使用吉他声音,您应该花点时间研究吉他的正常频域图并尝试使用它来提高您的精确度。

+0

嗨!使用FFT时,是否可以使用箱的强度来尝试确定构成和弦的音符?因为我认为他们会有一些相互关联的类型。 – user488792 2011-02-07 08:38:16

2

有一些使用DFT(FFT)的相当成功的工具,但是他们在计算DFT之后做了大量的处理。

尝试使用this link获取当前技术状态摘要,或者用于开源和弦提取算法的谷歌“Chordino”或“Chordata”。

64

简短的答案是,你需要远远超过一种算法。良好的和弦识别方法可以更恰当地描述为“系统”,但通常它们确实基于对频域的初始变换(通常是DFT)。

如果你想要的歌曲的和弦representaton与此类似

C G Am F7 F6 C ... 

那么这实际上是略微从一段音频识别注释去掉一个问题。实际上,有两个问题(粗略地说):

  1. 发现其间距本随时
  2. 随着时间的推移这些分组间距,以便能够和弦标签分配给的时间间隔。

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

请尝试谷歌学者“和弦转录”或“和弦检测”或“和弦标签”进行该领域的高级研究。

大多数这些方法使用离散傅里叶变换(DFT)来创建初始光谱图。在进一步的处理中,它们也往往略有不同,尽管已经使用了不同的时间序列平滑技术:隐马尔可夫模型,动态贝叶斯网络,支持向量机(SVMstruct)和条件随机场等等。 最先进的转录器使用自动调谐,关键信息,低音信息和度量位置信息来改善结果。我的thesis(第2章)给出了一个很好的概述。

开源和弦检测算法:

希望这有助于。

+11

+1为好答案,并能够在答案中引用您自己的论文。 – gary 2011-01-27 14:49:44

+0

我在使用LabROSA Chord Recognition时遇到困难,您能指导我如何使用它吗?我使用终端命令extractFeaturesAndTrain_svm和doChordID_svm,但它不可识别 – 2017-03-21 08:04:58

1

科学家之间有一个contest人们试图分析音乐的不同参数。本次比赛的一部分是和弦识别。本次比赛是公开的,任何人都可以参与并在此领域展示结果。 2011年的结果公布于here

我的一个朋友在这个领域取得了很好的成绩(在这个比赛中也是如此)。你可以在他的webpage上看到他的方法。

2

如果您正确设置了软件,FFT可以并且会给你所有的单音。 FFT的全部内容是区分色调,或者如果您是天体物理学家,您想知道明星发出的光线中的各个元素(sulpher,hydrogen ...)。

谐波不是一个问题,因为它们的功率比基本频率低,例如C = 440hz,但C = 880hz,但880是FFT结果中较小的峰值。

+0

nope,如果您尝试绘制FFT产生的频谱,例如对于在小提琴上演奏的C5音符,您会看到C5的低音振幅比C6。 – 2016-05-14 17:21:39

+0

@YuriyKravets我认为他意味着你可以找到根音,因为它会是最大的“权力”,因为他说的 – 2016-09-18 10:35:13