我有一个工作音调检测器,它使用FFT来确定特定频率的音调(或音调对)是否存在于音频流中(如果充分高于本底噪声)。我可以使用什么方法更精确地定位该音调的开始时间和持续时间?我正在寻找比FFT帧持续时间(大约50毫秒)更精确的东西。假设音调比FFT帧长得多。
答案 0 :(得分:3)
听起来像DTMF检测。标准技术是Goertzel algorithm。对于每个感兴趣的频率,您需要一个Goertzel检测器,因此您需要知道先验的频率。
答案 1 :(得分:1)
如果提前知道特定频率,您可以设计一个以该频率为中心的带通滤波器,然后在输出端使用能量检测器。您必须考虑通过滤波器的批量延迟,以及可能还有稳态响应的上升和下降时间。
如果您正在使用FFT输出来实际检测音调,并且您有足够的内存来保存最近的过去样本,您可以粗略估计FFT的起始时间,并在几百毫秒内回溯之前,并开始以检测到的频率通过正弦曲线混合样本。然后通过低通滤波器运行混合样品。您的音调检测,混音器和LPF频率分辨率/带宽必须匹配,您需要再次考虑LPF特性。