【发布时间】:2013-06-27 18:14:21
【问题描述】:
我想开发音符检测器作为我的学位项目,我想从头开始。我已经为“.wav”文件编写了代码,该文件从该音频音乐文件中提取所有信息并给出幅度作为结果。
然后我为 DFT 编写了一个代码 - 它以复数形式输出,其中一个轴(实数/虚数)是幅度/幅度,另一个是相位。
现在我想要频率的答案(赫兹而不是矢量)的问题,所以我可以检查我的 DFT 是否给了我正确的输出。如何将我的 DFT 输出转换为频率?
我必须用 C 语言编写代码,我不想使用任何内置库
【问题讨论】:
-
当你说实轴是幅度,虚轴是相位,你是在自己计算吗?还是直接从 DFT 中提取?当您从 DFT 获得复数结果时,幅度是该结果的绝对值,相位是结果的角度(也称为参数)。
-
是的,我自己在计算 DFT,这意味着我得到的公式是“ Sigma From k=0 -> N-1 , For all f(x)* WN,here WN=e^(-i 2 PI /N)" 像这样......我只是把这个公式转换成我的 C 程序。
-
FFT 幅度峰值处的 bin 频率通常不是音乐音频中的音符音高。
-
@hotpaw2,我很难学到这一点。那么,在音频剪辑中找到主要音高的正确方法是什么?