除了FFT以外,是否还有其他方法可以实现Guitar Tuner?

时间:2018-10-23 15:54:40

标签: audio fft frequency audio-processing tuner

我想做精确的吉他调音器,通常这是许多人通过计算FFT并获得峰值来完成的。但这是低电设备,原因有几个:

  • 离散精度,无法为低音吉他调音提供足够的分辨率。
  • 尝试增加缓冲区大小(和/或采样率)时,计算时间长且复杂度高。引入了可见的延迟(滞后)。
  • 集中所有FFT精度的大部分频率范围未被使用。高于1-2 khz的所有内容均不适用于调整乐器。

对于具有单频正弦曲线形状的信号,应该采用更简单的方法。给定足够小的缓冲区(例如以960kHz的采样率进行256个采样)-如何测量基本(低)频率?

简单地说:如何找到频率F,以使“ 频率F的正弦信号”和“ 实际记录的信号”会给出最小错误,而不是F以外的任何频率? (因此,我们可以明确地得出结论,频率F的正弦曲线是录制的声音缓冲区的最佳近似值)。

PS。任何东西,但不使用FFT!

1 个答案:

答案 0 :(得分:2)

这是基于零交叉的简单方法。它依赖于能够将仪器信号映射到简单的正弦曲线。当信噪比很高时,这可能会很好,但不是很可靠的方法。

  • 要调谐的基音频率周围的带通滤波器。例如,吉他上低E弦的频率为82.41 Hz。
  • 考虑最后N个样本的窗口。将其设置为ex 100ms,以每秒更新10次音调估计。
  • 通过阈值T执行过零检测。例如,可以将T设置为信号峰值的10%。计算每个零交叉之间的周期,并将它们收集在一个数组中。
  • 采用时间段的中位数来获取音高估算值

您还可以计算周期的分位数,以估计该方法的可靠性。如果他们给出的数字与中位数相差很大,则该方法效果不佳。

可以通过在零交叉点上计算自相关来扩展该方法,如 https://www.cycfi.com/2018/03/fast-and-efficient-pitch-detection-bitstream-autocorrelation/