gpt4 book ai didi

math - DSP方法来检测可能不是当前声音中最主要的特定频率

转载 作者:行者123 更新时间:2023-12-03 02:14:07 25 4
gpt4 key购买 nike

我正在尝试确定要完成的最佳DSP方法,如下所示:

实时地从一组不同的预定义频率(在1000Hz范围内,不超过40个不同的频率)中检测到某个频率的存在。即使有其他频率(超出此设置或范围)更占主导地位,我也必须能够做到这一点。

据我了解,FFT可能不是最好的方法,因为它告诉您在任何给定时间的最主要的频率(幅度)。这似乎是行不通的,因为如果我试图检测到某个频率为1650Hz(存在),但是还有一个500Hz的频率更强,那么它不会告诉我当前的频率为1650Hz 。

我听说可能Goertzel算法可能更适合我想做的事,即实时检测单个频率或一组频率,即使在声音中的主导频率比试图检测的频率高的声音中被发现。

非常感谢您提供任何指导,如果我对这些假设有误,请纠正我。谢谢!

最佳答案

用模糊和有些不准确的术语来说,FFT的输出是所有[1]频率的幅度和相位。也就是说,您的说法“[[FFT]告诉您在任何给定时间的最主要的频率(幅度)”是不正确的。 FFT通常被用作确定最主要频率的第一步,但事实并非如此。实际上,如果您对最主要的频率感兴趣,则需要在FFT之外进行额外的操作:您需要获取FFT输出的所有频率的幅度,然后求出最大值。相应的频率是主频率。

就您所了解的应用而言,FFT是正确的算法。

Goertzel算法与FFT密切相关。如果您只对一小部分频率的幅度和/或相位感兴趣,则可以对FFT进行一些优化。根据所讨论的频率数,它可能是您应用程序的正确选择,但仅是一种优化-除性能外,它无法解决FFT无法解决的任何问题。因为关于FFT的文章更多,所以我建议您从那里开始,并且仅在FFT证明不够快并且可以确定Goertzel会更快的情况下使用Goertzel算法。

[1]出于实际目的,此陈述最不准确的地方是将频率分组在“箱”中。分析的分辨率有限,这取决于多种因素。

关于math - DSP方法来检测可能不是当前声音中最主要的特定频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21434900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com