2009-09-29 124 views
1

作为我以前的question的后续工作,如果我希望我的智能手机应用程序检测某个音符,并且我只需要知道传入的声音是否是该音符,具有一定的模糊性,以允许该票据以×美分为单位。智能手机上音符的音调识别,pt。 2

鉴于这种情况,在速度和准确性方面是否比其他方法优越?也就是说,通过知道你正在寻找的音符是#C3,如何最好地判断该音符是否存在?我假设寻找单个音符比分离出所有波形更容易,然后查看基频的结果。

在回答我原来的问题时,有一位受访者提出,如果您知道笔记在一定范围内,自相关可能会奏效。我想知道,如果您只需检查是否存在某个钞票(+/- x美分),那么自相关效果是否会更好。

这些方法之中:

  • 吻FFT
  • FFTW
  • 离散小波变换
  • 自相关
  • 过零分析
  • 倍频程间隔滤波器
  • DWT

任何想法,将不胜感激。

+0

你能更详细地描述问题吗?当听到特定的声音时,你将会用麦克风听,并激活一些东西?还是你想写一个吉他调音器?还是你想写一个音乐转录器?语调是由人类的声音,乐器,还是你控制的发射器产生的?它是否需要是特定的波形(正弦波,方波)还是具有正确频率的波形?等等 – endolith 2009-10-14 21:26:58

+0

我想用一种(任何我希望的)乐器演奏的音符来控制我的软件,或者甚至可能嗡嗡作响。 – mahboudz 2009-10-14 22:31:25

+0

啊。确定一个特定的音调(而不是它的谐波或分谐波之一)并不是微不足道的。例如,小号的谐波比基波要强。 http://cnx.org/content/m15456/latest/sub_concept-trumpet-spectrum.png但是很多工作已经完成了。我猜,只是搜索“音高估计”。 – endolith 2009-10-15 16:10:01

回答

1

正如你所描述的那样,你只需要确定是否存在特定的音调。一个非常简单的(快速)检测器只会记录波形的一个周期的等效值,然后记录另一个周期并将它们关联起来,就像过度简化的(单滞后)自相关一样。如果匹配程度很高,则您知道正在记录的波形在大约相同的时间段内重复出现,或者是谐波。例如,要检测1 kHz,记录1 ms的音频(48 kHz采样48个采样点),然后记录另一个1 ms,并比较它们(相关=相乘所有采样和总和)。如果他们排队(相关性高于某个阈值),那么您正在聆听1 kHz,2 kHz,3 kHz或其他一些倍数。做几个时期会让你对比赛更有信心。

一个真正的自相关会告诉你哪个谐波,具体来说,如果这对你很重要。

+0

这听起来像是一个快速的方法,但我想测试50个或3个或4个八度以上的音符。实际上,我想要用户设定一些“模糊性”的等级,这样笔记就可以被分出一定数量的分。这是否意味着只做一个FFT并查看结果频率可能会更好,而不是使用自相关。 – mahboudz 2009-10-14 22:38:04

+0

我认为自相关会更好,因为它匹配整个波形。使用FFT,您需要确定哪些最大值与波的基频对应。对于大的自相关(匹配低频),实际上可以通过FFT来加速自相关。 :)但我认为对于少量的样品,“天真”的实施可以很快。 – endolith 2009-10-15 16:05:21

+0

而“模糊性”是内置的。如果你正在寻找100赫兹和波形是98赫兹,它仍然会匹配,但不是那么好。 – endolith 2009-10-15 16:44:59