精确的音调开始/持续时间测量?

Posted

技术标签:

【中文标题】精确的音调开始/持续时间测量?【英文标题】:Precise tone onset/duration measurement? 【发布时间】:2010-12-16 02:05:32 【问题描述】:

我有一个工作音调检测器,它使用 FFT 来确定音频流中是否存在特定频率的音调(或音调对)(如果足够高于本底噪声)。我可以使用什么方法来更准确地定位该音调的开始时间和持续时间?我正在寻找比 FFT 帧持续时间(大约 50 毫秒)更精确的东西。假设音调比 FFT 帧长得多。

【问题讨论】:

【参考方案1】:

听起来像 DTMF 检测。标准技术是Goertzel algorithm。对于每个感兴趣的频率,您需要一个 Goertzel 检测器,因此您需要先验知道这些频率。

【讨论】:

AFAIK,对于任何频率检测或时间估计,标准 Goertzel 滤波器并不比 FFT bin 更精确。我正在寻找比 FFT bin 更精确的东西。 @hotpaw2:这取决于您所说的“精确”是什么意思。您必须在频率分辨率与时间分辨率之间进行交易——您不能两者兼得。无论如何,可以对 Goertzel 滤波器的输出进行整流和平滑(低通滤波),这样它就可以在逐个样本的基础上为您提供合理的开始/偏移时间测量值,这与具有固定窗口大小的 FFT 不同。 【参考方案2】:

如果提前知道特定频率,您可以设计一个以该频率为中心的带通滤波器,然后在输出端使用能量检测器。您必须考虑通过滤波器的大量延迟,并且可能还需要考虑稳态响应的上升和下降时间。

如果您使用 FFT 输出来实际检测音调,并且您有足够的内存来保存最近过去的样本,您可以从 FFT 中粗略估计起始时间,将时间返回几百毫秒之前,并开始以检测到的频率通过正弦曲线混合样本。然后通过低通滤波器运行混合样本。您的音调检测、混频器和 LPF 频率分辨率/带宽必须匹配,并且您需要再次考虑 LPF 特性。

【讨论】:

LPF 的上升(和下降)时间不会与 FFT 孔径的宽度大致相同的数量级吗?时间分辨率的优势在哪里? 如果使滤波器的带宽更宽,则上升时间会更短。您可以更好地控制 FFT 块大小的滤波器带宽,对吗?如果你以直接形式实现过滤器,你就没有 FFT 的一个块大小的延迟。

以上是关于精确的音调开始/持续时间测量?的主要内容,如果未能解决你的问题,请参考以下文章

性能测试的精确时间测量[重复]

使用 DWT CYCCNT 在 STM32MP1 中进行精确时间测量

Vowpal Wabbit - 精确召回 f 测量

Delphi使用TStopwatch计时器精确计时

android 传感器 教程

软件测试周刊(第18期):一个精确的测量胜过一千个专家的意见