我在Android应用商店中寻找吉他调音器。我发现一个调谐器应用程序声称它比其他应用程序更快。它声称可以在不使用DFT的情况下找到频率(我希望我仍然有此规范的URL)。

我从未听说过。您可以在不使用DFT或FFT算法的情况下获取音频信号并计算频率吗?

#1 楼

FFT实际上并不是制作调谐器的好方法。 FFT本质上具有有限的频率分辨率,要在不使时间窗口过长的情况下检测非常小的频率变化并不容易,这会使它变得笨拙且缓慢。

更好的解决方案可以基于锁相环,延迟锁环,自动相关,过零检测和跟踪,最大或最小检测和跟踪以及这些方法的智能组合。 >
预处理总是有帮助的。

评论


$ \ begingroup $
FFT是否可以检测到微小的频率变化并不是其长度的固有特征,而是取决于信噪比。给定足够低的噪声和干扰,FFT结果的内插可以轻松产生子bin单频分辨率。
$ \ endgroup $
– hotpaw2
2012年2月2日,19:35



$ \ begingroup $
有人可以帮助我吗?-stackoverflow.com/questions/42359344 / ...
$ \ endgroup $
–tryKuldeepTanwar
17-2-22在4:29

#2 楼

FFT报告频谱频率的一个或多个峰值(由FFT仓大小量化),与音高不同。

一些最简单的吉他调音器仅使用低通或带通滤波并测量了过零之间的时间。倒数给出频率估计。

自相关是另一种常见的音高估计方法;滑动相关性或其他自相似性度量有很多变化,例如滑动ASDF(平方差),AMDF(均值差),非线性模式匹配器,仅对有限范围的滞后进行自适应检查,滞后插值,加窗和自适应窗口选择,各种加权或使用决策理论从多个潜在的滞后历史序列中进行选择等。大多数自相似性度量的一个问题是选择适当的八度,因为一个八度可能显示几乎相同的相似性。 />
其他可能性包括使用PLL,滤波后的正交解调器,滤波后的希尔伯特变换等。

但是请注意,某些DSP滤波和解调方法在计算上几乎等同于对1进制运算。带窗口的DFT,它可能适合也可能不适合您的问题。

#3 楼

音高检测可以多种多样且好奇的方式完成。一种方法是使用自相关。本文提供了如何使用它的示例。通过使用1位相关器,可以使自相关变得非常简单(由于某种原因,找不到相关的相关论文)。因此,从理论上讲,音调可以比FFT更快地检测出来,但是我怀疑如果没有真正聪明的预处理,音调会更精确。

评论


$ \ begingroup $
我认为链接已断开?...
$ \ endgroup $
–太空
2012年2月2日在18:31

$ \ begingroup $
不,所有作品。我刚刚检查了一下。
$ \ endgroup $
– Phonon
2012年2月2日在22:30

#4 楼

还请看一下相对较新的算法定义的希尔伯特-黄变换(HHT)。它可以处理可能与您的应用有关的非平稳非线性信号。

评论


$ \ begingroup $
当我发现它时,它是一个绝好的宝石,尽管它没有给您傅立叶分解,而是为瞬时频率分解。
$ \ endgroup $
–太空
2012年4月13日在22:26

$ \ begingroup $
大多数现实生活中的信号在某种程度上都是不稳定的,即它们的幅度和频率略有变化。 HHT对这些变化不太敏感,因此会以更自然的方式分解此类信号,其中各部分与潜在的物理现象更密切相关。
$ \ endgroup $
–诺德洛
13年3月11日在21:29

#5 楼

如果您确切知道要在DFT / FFT中寻找哪个频率仓,则可以使用Goertzel算法仅获取该频率仓的值。

http://en.wikipedia.org/wiki/Goertzel_algorithm

评论


$ \ begingroup $
但是,这并不是为了找到频率。
$ \ endgroup $
– Endolith
2012年2月4日在16:02

#6 楼

我一个月前有一把吉他,并开始编写基于PLL的调谐器。 >

#7 楼

实际上,您可以使用伪频谱来计算信号的频率,该伪频谱查看其自相关矩阵的特征向量。它基本上将信号分解为噪声和信号子空间。从那里,您可以找到其频谱。 (您也可以限制它,并给它提供检查频率的范围)。它也很抗噪音。当然,这是一种参数化方法,而不是像DFT这样的非参数化方法。

评论


$ \ begingroup $
显然这是使用FFT吗? mathworks.com/help/toolbox/signal/ref/peig.html
$ \ endgroup $
– Endolith
2012年4月15日23:31

$ \ begingroup $
@endolith您可以在不涉及任何FFT的情况下进行计算。从相关矩阵中,您可以获得特征向量,然后是噪声子空间。然后,您可以构建自己的频率矢量进行投影,因此无需使用FFT。
$ \ endgroup $
–太空
2012年4月16日在2:30

#8 楼

这一切都取决于要在哪个平台上进行处理,如果需要简单的电路,我建议使用增益爆破信号并将其转换为方波,然后使用计时器使用微控制器测量周期。 br />但是,如果您想使用信号处理,请查看MUSIC方法:

http://en.wikipedia.org/wiki/Multiple_signal_classification

希望帮助

#9 楼

本文中列出了许多不使用DFT / FFT的音高估计方法,其中包括MUSIC方法在内的一些音高估计方法在本文中列出: >本文的仿真结果表明,当基频非常低时,精确的NLS方法优于其他方法。