我正在从事一个项目,而且我遇到了一个超出我理解的障碍。我的目标是创建一个人工神经网络,该网络从声音文件中提供信息,然后通过系统移植,从而产生和弦的标记。我希望这可以帮助音乐转录 - 不是实际上是转录本身,而是帮助协调方面。我离题了。
我在Goertzel和FFT功能上尽可能多地阅读,但我不确定这些功能是否是我正在寻找的功能。我不是在寻找声音样本中的任何特定频率,而是希望找到样本的高频,中频和低频范围。
我知道如果找到特定频率,Goertzel算法会返回一个高数字,但是对于给定样本中的所有可能音调运行算法似乎是计算上的浪费。关于使用什么的任何想法?
或者,如果这是不可能的,我也很想知道这一点,然后花太多时间在这个项目上。
感谢您的时间!
答案 0 :(得分:1)
可能更适合DSP StackExchange。
假设您使用单个110Hz音调进行FFT以获得频谱图;你会看到在110 220 330等Hz处均匀分布的峰值 - 谐波。 110是根本。
假设你有3个音调。它在频域中看起来已经很混乱了。特别是如果你有一个包含例如和弦的和弦A110和A220。
基于此,我认为神经网络是一种很好的方法。
输入FFT输出。
最好使用接受复值输入的神经网络,作为每个频率仓的复数FFT输出。
http://www.eagle.tamut.edu/faculty/igor/PRESENTATIONS/IJCNN-0813_Tutorial.pdf
使用FFT提取如此多的频率似乎在计算上浪费,但FFT算法现在非常有效。你应该使用10的位强度,所以2 ^ 10输入 - > 2 ^ 9 = 512个复杂的垃圾箱。
答案 1 :(得分:0)
FFT是正确的解决方案。基本上,当你有一个仅包含正弦波的输入信号的FFT时,你可以通过在你想要使用的任何音乐气质中映射特定音调中存在哪些频率来确定和弦,然后查找那些指定的和弦。色调。如果您没有输入正弦波,那么使用神经网络是解决问题的有效尝试,前提是您有足够的样本来训练它。
答案 2 :(得分:0)
FFT是正确的方法。谐波不会打扰你,因为它们是基频的整数倍,它们只是同一音符的“八度音”。为了识别和弦,整个八度音符的音符转换并不重要。