我正在尝试编写软件来执行来自麦克风的实时数据到计算机声卡的离散傅立叶变换。我正在使用带有 javax.sound API 的 Java。
我每次捕获 250 毫秒的数据。这意味着,由于采样率为 44100,我将缓冲 11025 个 16 位短路,并在每次迭代中对此数据执行 DFT。
我的 DFT 代码将这个数据窗口与从 19 Hz 到 198 Hz 的正弦波和余弦波相关联,步长为 1,所以这个窗口是 250 ms 的数据,这意味着它实际上将传入的音频与 76 Hz 以上的频率相关联以 4 为步长至 792Hz。
如果我现在希望每次使用 125 毫秒而不是 250 毫秒的较小数据窗口来加快速度。如果我像以前一样将此数据与频率递增 1 的正弦波和余弦波相关联,这意味着它实际上将传入的音频与以 8Hz 为步长的波相关联。这对我的问题不利,因为我希望能够在小于 8Hz 的信号中寻找频率差异。
我的问题是,这是正常的权衡,速度与频率分辨率,还是有办法解决这个问题?
提前谢谢了。我是音频处理的新手,如果我错过了一些常识,请原谅我:)