1

我正在做一个项目,但遇到了一个超出我理解的障碍。我的目标是创建一个人工神经网络,它从声音文件中获取信息,然后通过系统移植,从而对和弦进行标记。我希望这有助于音乐转录——不是实际进行转录本身,而是帮助协调方面。我跑题了。

我已经尽可能多地阅读了 Goertzel 和 FFT 函数,但我不确定这些函数是否是我正在寻找的。我不是在声音样本中寻找任何特定的频率,而是希望找到样本的较高、中间和低频范围的频率。

我知道如果找到特定频率,Goertzel 算法会返回一个高数字,但是为给定样本中的所有可能音调运行该算法似乎是计算上的浪费。关于使用什么的任何想法?

或者,如果这是不可能的,我也很想知道这一点,然后再花太多时间在这个项目上。

感谢您的时间!

4

3 回答 3

1

Probably better suited to DSP StackExchange.

Suppose you FFT a single 110Hz tone to get a spectrogram; you'll see evenly spaced peaks at 110 220 330 etc Hz -- the harmonics. 110 is the fundamental.

Suppose you have 3 tones. Already it's going to look quite messy in the frequency domain. Especially if you have a chord containing e.g. A110 and A220.

On account of this, I think a neural network is a good approach.

Feed in FFT output.

It would be a good idea to use a neural network that accepts complex valued inputs, as FFT outputs of a complex number for each frequency bin.

http://www.eagle.tamut.edu/faculty/igor/PRESENTATIONS/IJCNN-0813_Tutorial.pdf

It may seem computationally wasteful to extract so many frequencies with FFT, but FFT algorithms are extremely efficient nowadays. You should probably use a bit strength of 10, so 2^10 inputs -> 2^9 = 512 complex bins.

于 2016-04-01T22:59:40.147 回答
0

FFT 是正确的方法。谐波不会打扰您,因为它们是基频的整数倍,它们只是同一音符的更高“八度”。并且要识别和弦,整个八度音阶上的音符换位并不重要。

于 2016-04-02T13:21:00.897 回答
0

FFT 是正确的解决方案。基本上,当您对仅包含正弦波的输入信号进行 FFT 时,您可以通过将存在的频率映射到您想要使用的任何音乐律中的特定音调来确定和弦,然后查找由那些指定的和弦音调。如果您没有正弦波作为输入,那么使用神经网络是解决问题的有效尝试,前提是您有足够的样本来训练它。

于 2016-04-01T21:00:39.953 回答