【问题标题】:Modifying Sound Input to Determine Frequency修改声音输入以确定频率
【发布时间】:2016-03-30 13:30:35
【问题描述】:

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

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

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

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

感谢您的宝贵时间!

【问题讨论】:

  • 中、高、低“频率”是什么意思?这应该是你问自己的第一个问题。你也进错论坛了。

标签: neural-network artificial-intelligence fft waveform goertzel-algorithm


【解决方案1】:

可能更适合 DSP StackExchange。

假设您对单个 110Hz 音调进行 FFT 以获得频谱图;您会在 110 220 330 等赫兹处看到均匀分布的峰值——谐波。 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 个复数箱。

【讨论】:

  • 感谢您提供此信息。我已经尽可能多地阅读了 FFT 以及所有这些是如何工作的,但是您能否用音乐和非数学术语(如果可能的话)解释 FFT 在数字上返回的内容以及它与存在的关系给定的音高?我知道它返回 2 个值,一个实余弦值和一个复正弦值,但它们的实际含义是什么?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多