Neural network 修改声音输入以确定频率

Neural network 修改声音输入以确定频率,neural-network,artificial-intelligence,fft,waveform,goertzel-algorithm,Neural Network,Artificial Intelligence,Fft,Waveform,Goertzel Algorithm,我在做一个项目,遇到了一个我无法理解的障碍。我的目标是创建一个人工神经网络,它从声音文件中获取信息,然后通过系统进行移植,从而对和弦进行标记。我希望这能对音乐转录有所帮助——不是真正的转录本身,而是在协调方面有所帮助。我离题了 我已经尽可能多地阅读了Goertzel函数和FFT函数,但是我不确定这些函数是否是我想要的。我不是在声音样本中寻找任何特定的频率,而是希望找到样本的高、中、低范围频率 我知道如果找到某个特定频率,Goertzel算法会返回一个很高的数字,但是在给定的样本中对所有可能的音调

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

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

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

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


谢谢你抽出时间

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

可能更适合DSP StackExchange

假设您对单个110Hz音调进行FFT,以获得频谱图;你会看到110、220、330等频率的均匀分布的峰值——谐波。110是根本

假设你有3种音调。它在频域中看起来已经很混乱了。特别是如果你的和弦包含A110和A220

鉴于此,我认为神经网络是一种很好的方法

馈入FFT输出

最好使用接受复数输入的神经网络,作为每个频率单元复数的FFT输出


用FFT提取如此多的频率似乎在计算上很浪费,但FFT算法现在非常有效。您可能应该使用10的强度,因此2^10个输入->2^9=512个复杂单元。

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

你所说的中、高、低音域“频率”是什么意思?这应该是你问自己的第一个问题。另外,您在错误的论坛。感谢您提供此信息。我已经尽可能多地阅读了FFT以及所有这些是如何工作的,但是你能用音乐和非数学的术语解释一下(如果可能的话,也就是说)FFT在数字上返回什么,以及它与给定音高的存在有什么关系吗?我知道它返回两个值,一个实余弦值和一个复正弦值,但它们到底是什么意思?