什么是好的数字信号处理算法,这对吉他和弦有好处?由于快速傅立叶变换,我认为只有在吉他上弹奏的单个音符才准确,而不是同时演奏的音符(即和弦)。
谢谢!
答案 0 :(得分:69)
简短的回答是,您需要多个算法。好的和弦识别方法可以更恰当地被描述为“系统”,但通常它们确实基于对频域的初始变换(最常见的是DFT)。
如果你想要与这首歌类似的和弦代表
C G Am F7 F6 C ...
然后这实际上是一个问题,从识别一段音频中的音符略微删除。事实上,有两个问题(粗略地说):
事实证明,从时域(正常音频)转换到频域(频谱表示)的方式只是有限的重要性。事后你做的非常重要,通常使用复杂的概率模型(类似于语音识别中的模型:HMM,DBN,......)来解决这个问题。
尝试谷歌学者“和弦转录”,或“和弦检测”,或“和弦标签”,以进行该领域的高级研究。
这些方法中的大多数使用离散傅立叶变换(DFT)来创建初始频谱图。在进一步处理期间,尽管使用了不同的时间序列平滑技术,但它们往往略有不同:隐马尔可夫模型,动态贝叶斯网络,支持向量机(SVMstruct)和条件随机场等。 最先进的转录员使用自动调谐,关键信息,低音音符信息和度量标准位置信息来改善结果。我的thesis(第2章)给出了很好的概述。
开源和弦检测算法:
希望这有帮助。
答案 1 :(得分:3)
好吧,你可以尝试另一套频域算法,比如小波。但我不确定这是否会影响您的准确性问题。实际上,我不明白你用FFT的方式有什么问题。它将始终是和弦的近似值,没有完美的方法来检索有关声音的信息。
所以,这取决于你在该频谱上所做的分析,单个音符实际上有很多比FFT更好的算法,但是使用和弦你很可能不得不使用FFT。
你必须解决的问题是将基波谐波与高次谐波分开,有一点可能有用,只考虑吉他范围内的频率。 如果你只需要使用吉他声音,你应该花点时间研究吉他的正常频域图,并试着用它来提高你的准确度。
答案 2 :(得分:2)
有一些使用DFT(FFT)的相当成功的工具,但在计算DFT后它们会进行大量处理。
尝试使用this link获取当前最新技术摘要,或者使用google“Chordino”或“Chordata”获取开源和弦提取算法。
答案 3 :(得分:2)
如果正确设置软件,FFT可以并且将为您提供所有单音。 FFT的全部意义在于区分音调,或者如果你是天体物理学家,你想知道在恒星发出的光线中的各个元素(硫化物,氢......)。
谐波不是问题,因为它们具有较少的功率。比基频更高,例如,C = 440hz,但C = 880hz,但是880将是FFT结果中较小的尖峰。
答案 4 :(得分:1)