我目前正在开发一种音频处理软件,该软件必须通过使用过零估计来检测输入信号的频率。当输入一个完美的正弦波时,估计频率并不难,但是当谈到钢琴时,声波是不同的,其背后的理论也发生了变化。
目前,软件检测到每个零并保存它与前一个之间的索引位置(以记录经过了多少样本)。
以下是一个数组,其中包含以 44.1kHz 采样的 130 Hz 钢琴 C 音符的每个零之间的样本。
44 11 36 65 56 12 37 66 52 13 38 67 51 11 39 68 50 11 47 60 49 11 48 61 47 14 47 66 43 13
任务是确定未知长度的未知模式。但是,这些模式可能有误差范围。例如,
44, 11, 36, 65
56, 12, 37, 66
52, 13, 38, 67
是模式。因此,在处理模式的均值和之后,可以很容易地检测到频率。 我怎样才能检测到这些类型的模式,知道模式,原样,它的长度是未知的。