使用 FFT 对音乐播放器进行单元测试

信息处理 fft 声音的
2022-01-29 08:50:30

我想在我们的持续集成单元测试(更像是集成测试,真的)中验证对我们应用音乐播放器的更改。我的想法是从仅包含纯音或一系列纯音的音频文件开始。我们的自动化测试将通过互联网流式传输此文件并通过我们的播放器播放。我们将使用 MTAudioProcessingTap 捕获输出。该输出将通过 FFT 和通过/失败测试,​​以检查是否仅存在原始频率。

这行得通吗?我认为这会捕捉到爆裂声和故障,但不一定会在输出中出现不连续性。

2个回答

用于重叠 FFT 帧的相位声码器算法可能很容易捕捉纯正弦波中的某些类型的不连续性。

如果音频文件被压缩,请注意此过程本身可能会添加某些类型的失真。所以你需要找到一个实验阈值。

最近我做了类似的事情,我可以建议你一些解决方案:

  • 以任意长度的给定级别播放正弦波(通常更长一点 = 更好),然后您可以判断系统的增益是多少,并计算其THD此外,如果您的信号足够长,那么您可能还会注意到其中的任何中断。为此,您可以使用接收信号的能量包络。在您的情况下,您可能想要计算 THD 的变化,其中计算基波()和其余频率之间的比率。1kHz1kHz

  • 仅记录静音以检查噪音水平。

  • 对于频率响应的测量,您可以播放白/粉红噪声并比较频谱包络或使用扫描正弦测量技术来获得脉冲响应,并从中获得频率响应。您也可以使用过去的技术,当时播放频率增加的短正弦曲线,但这取决于您。我一直在使用扫描(更重要的是,您可以计算每个频率的 THD)。

  • 您可能还想用两个不同频率和相同幅度(即)的正弦波播放立体声信号,以检查立体声是否存在任何问题。1kHz2kHz

显然我做了很多不同的测试,但它们总是依赖于应用程序。