注意:这不是重复的,除相关问题外,我还有特定要求。
首先,我想绘制音频文件 (.wav) 的频谱,就像 audacity 所做的那样(类似:如何从傅里叶变换中绘制频谱)。
到目前为止,我能够读写 wav 文件。但我的问题是我不确切知道需要传递给 FFT 函数的值。顺便说一句,我在 C# 中使用 Exocortex 进行 FFT。FFT 函数要求我传递一个具有正确大小(512、1024,...我假设)的复数数组、一个可选的长度整数参数和傅立叶方向(向前/向后)。
具体问题:
- Exocortex 库中的 Complex(类)有两个值,即 Real 和 Imaginary。我有一系列样本,那么哪些应该是真实的,哪些应该是虚构的?
- 我有 wav 文件,所以长度应该是可变的。如何将其传递给 FFT 函数?我是否应该选择一个尺寸(512/1024/等),将整个样本划分为该尺寸,然后将其全部传递给 FFT?
- 我怎么知道应该在 x 轴上列出哪些频率?
- 如何绘制 FFT 数据?(我希望 x 轴为频率,y 轴为分贝)
如果您不明白我的意思,请尝试使用 Audacity,导入音频文件,然后单击分析 > 绘制频谱。这些是想要重建的东西。请详细回答我的问题,因为我真的很想学习这个。我对此只有一点背景。我只是数字信号处理的新手。另外请尽可能不要将我引导到其他 FFT 站点,因为他们没有具体回答我的问题。
编辑:
我做了一些阅读,发现了如何对音频数据进行 FFT,但只能以 2 的幂次方。那么我如何在长度不是 2 次方的音频文件中做同样的事情呢?根据一些我需要使用“窗口”。我也对其进行了一些搜索,发现它只需要稍后处理一部分波形。请记住,我想获取音频文件的 FFT,而不是其中的一部分。那我现在该怎么办?请帮忙 :(