从麦克风到整数数组的音频样本 (C++/Qt)

Sample audio from microphone to array of integers (C++/Qt)

我正在开发一个将音频从麦克风录制到整数数组的应用程序。然后将数组传递给 FFT 和 MFCC。我需要制作关于 n 个样本的帧,我需要 50% 重叠它们(它们不能并排)。所以我需要 3 个缓冲区 - 当第一个缓冲区已满时传递给 FFT。我现在应用程序应该记录第二个缓冲区的后半部分和第三个缓冲区的前半部分。 FFT 将是单独的线程(我的想法)。

所以我尝试使用 QAudioRecorderQAudioProbe 对音频进行采样。我将 audioBufferProbed 信号与 processBuffer 连接,然后我使用 buffer.constData<int>()。我似乎有效。我理解 audioBufferProbed 是在缓冲区已满时发出的。

我不知道如何将更多缓冲区与一台记录器相关联。或者在第一个缓冲区的一半处也开始写入第二个缓冲区。

这里最简单的方法(因为 50% 是一个很好的整数)是向 Qt 请求 FFT 所需帧的 一半 大小。您现在 运行 对帧 0&1、1&2、2&3 等进行 FFT