我目前正在开发一个音频处理软件,它必须使用零交叉估计来检测输入信号的频率。当一个完美的正弦波作为输入时,估计频率并不难,但是当谈到钢琴时,声波是不同的,这背后的理论也在改变。
目前,该软件每零检测一次,并保存它与前一次之间的索引位置(以记录经过多少个样本)。
下面是一个阵列,其中包含在每个零点之间采样的130赫兹钢琴C音符在44.1kHz。
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是模式。因此,在处理模式的平均和后,可以很容易地检测到频率。如何检测这些类型的模式,知道模式的原样,以及它的长度是未知的。
发布于 2013-03-08 19:00:41
你应该先试着低传递信号。这将减少信号成分,包括更高的音调,这将导致额外的零交叉。这里的重点是增加基波相对于其他谐波的强度,这些谐波实际上只是产生无关的零交叉。
关于情商的一些提示:
http://blog.bjornroche.com/2012/08/basic-audio-eqs.html
与音高检测特别相关的eq:
http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html
根据您的信号,您可能需要更陡的东西,如更高的级别或不同类型的过滤器。
当然,zeroX基音检测本身是有限的,低通可能是不够的.
更新:澄清了低通的目的是强调基本面,而不是消除噪音。
https://stackoverflow.com/questions/15298435
复制相似问题