我正在开发一个应用程序,对音频进行采样并需要实时处理(FFT和谐产品谱)这些数据。
我需要使用44100Hz的采样率,并需要0.5Hz的频率分辨率,这意味着在FFT之前需要88200个采样。由于是两倍的采样率,因此这需要约2秒钟来捕获;但是,在第一次采样后,通过使用循环缓冲区进行采样,并从那时起仅读取一半的采样数,我确实改善了很多。
不幸的是,性能仍然相当低,并且存在相当大的延迟。这是一个大问题,因为应用程序需要及时响应输入。
有没有人可以提供任何建议,以改善此性能?我认为主要问题在于需要大量的采样,如果有办法减少读取的音频量同时保持相同的准确度,那就太好了。也许线程会在这里有所帮助?
编辑:
如有助于了解,我正在尝试从电吉他输入进行实时F0估计,以及进行和弦匹配的多个F0估计。我有一些有效且准确的方法可以实现这一点,但这是一个大学项目,我没有足够的时间去研究除FFT以外的其他方法。实际上,我只是希望能够加快采样过程的速度。
我需要使用44100Hz的采样率,并需要0.5Hz的频率分辨率,这意味着在FFT之前需要88200个采样。由于是两倍的采样率,因此这需要约2秒钟来捕获;但是,在第一次采样后,通过使用循环缓冲区进行采样,并从那时起仅读取一半的采样数,我确实改善了很多。
不幸的是,性能仍然相当低,并且存在相当大的延迟。这是一个大问题,因为应用程序需要及时响应输入。
有没有人可以提供任何建议,以改善此性能?我认为主要问题在于需要大量的采样,如果有办法减少读取的音频量同时保持相同的准确度,那就太好了。也许线程会在这里有所帮助?
编辑:
如有助于了解,我正在尝试从电吉他输入进行实时F0估计,以及进行和弦匹配的多个F0估计。我有一些有效且准确的方法可以实现这一点,但这是一个大学项目,我没有足够的时间去研究除FFT以外的其他方法。实际上,我只是希望能够加快采样过程的速度。