我在找吉他弦的音高。声音通过麦克风以44100的采样率传入。我使用2048字节作为缓冲区大小。考虑到奈奎斯特速率,使用更大的缓冲区大小是没有意义的。收到数据后,我应用汉宁窗口...这就是我感到困惑的地方。我应该在时域中使用低通滤波器,还是先进行FFT?如果我先做FFT,那么只使用前一半的样本,忽略另一半,不是更容易吗?因为我需要的频率范围是50-1000。在FFT之后,我将使用谐波乘积谱来找出基频。
发布于 2012-01-11 17:20:15
这真的取决于你的基音检测算法,但是为什么你要首先使用低通滤波器呢?
此外,吉他产生的光谱信息通常超过1000赫兹。高E弦上的音符很容易产生4-5 5kHz及以上的谐波,这些谐波正是让你的HPS变得漂亮和清晰的原因。
发布于 2012-01-10 01:40:28
你的建议有一定的道理:如果你不需要低频率,你就不需要使用长样本。对于长样本,您可以获得频率分辨率,这在某些情况下可能很有用,但您会损失时间分辨率(从连续样本更远的意义上讲)。
一些不合常理的事情:
1)在FFT之前的计算中使用低通数字滤波器(我假设这就是你的意思)只会占用额外的计算时间,并且不会给你带来任何好处。
2)“考虑到奈奎斯特速率,使用更大的缓冲区大小是没有意义的”:这些并不是真正相关的。奈奎斯特速率决定了FFT的最高频率,缓冲区大小决定了频率分辨率,因此也决定了最低频率。
发布于 2012-01-09 13:21:27
使用的数据越少或FFT越短,所产生的FFT频率分辨率就越低。
https://stackoverflow.com/questions/8783350
复制相似问题