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

Audio 精确的音调开始/持续时间测量?,audio,signal-processing,fft,Audio,Signal Processing,Fft,我有一个工作音调检测器,它使用FFT来确定音频流中是否存在特定频率的音调(或音调对)(如果足够高出噪声地板)。我可以用什么方法来更精确地确定音调的开始时间和持续时间?我正在寻找比FFT帧持续时间(大约50毫秒)更精确的东西。假定音调比FFT帧长得多。如果特定频率提前已知,则可以设计一个以该频率为中心的带通滤波器,然后在输出端使用能量检测器。您必须考虑通过过滤器的大容量延迟,以及稳态响应的上升和下降时间 如果您使用FFT输出来实际检测音调,并且您有足够的内存来保存最近的过去样本,那么您可以从FFT

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

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


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

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


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

听起来像DTMF检测。这方面的标准技术是。每个感兴趣的频率都需要一个Goertzel检测器,因此需要事先知道频率。

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

AFAIK,对于任何频率检测或时间估计,标准Goertzel滤波器的精度都不比FFT单元高。我在寻找比FFT箱更精确的东西。@hotpaw2:这取决于你所说的“精确”是什么意思。你必须权衡频率分辨率和时间分辨率——你不能两者兼得。无论如何,Goertzel滤波器的输出可以进行校正和平滑(低通滤波),这样它就可以在逐个采样的基础上为您提供合理的起始/偏移时间测量,而FFT具有固定的窗口大小。AFAIK,对于任何频率检测或时间估计,标准Goertzel滤波器并不比FFT单元更精确。我在寻找比FFT箱更精确的东西。@hotpaw2:这取决于你所说的“精确”是什么意思。你必须权衡频率分辨率和时间分辨率——你不能两者兼得。无论如何,Goertzel滤波器的输出可以被校正和平滑(低通滤波),这样它就可以在逐个采样的基础上为您提供合理的起始/偏移时间测量,这与FFT不同,FFT具有固定的窗口大小。上升(和下降)不是吗LPF的时间大约与FFT孔径的宽度具有相同的数量级。时间分辨率的增益在哪里?如果你使滤波器的带宽更宽,上升时间就更少。您对滤波器带宽的控制要比FFT块大小的控制多得多,对吗?若你们以直接形式实现滤波器,你们就并没有FFT的一个块大小的延迟。LPF的上升(和下降)时间不会和FFT孔径的宽度有大约相同的数量级吗。时间分辨率的增益在哪里?如果你使滤波器的带宽更宽,上升时间就更少。您对滤波器带宽的控制要比FFT块大小的控制多得多,对吗?若以直接形式实现滤波器,就并没有FFT的块大小延迟。