作为我之前的question的后续内容,如果我希望我的智能手机应用程序检测到某个音符,我只需要知道传入的声音是否是该音符,具有一定的音符模糊的数量,允许笔记按x美分计算。
鉴于此,对于速度和准确度,是否有比其他方法更好的方法?也就是说,通过知道您正在寻找的音符是#C3,如何最好地判断该音符是否存在?我假设寻找单个音符比分离所有波形更容易,然后查看基频的结果。
在对原始问题的回答中,一位受访者表示如果你知道笔记在一定范围内,自相关可能会很好。我想知道如果你只需检查是否存在某个音符(+/- x分),自相关是否会更好。
这些方法是:
任何想法都会受到赞赏。
答案 0 :(得分:1)
正如您所描述的那样,您只需确定是否存在特定音高。一个非常简单(快速)的探测器只记录波形的一个周期的等效值,然后记录另一个周期并将它们关联起来,就像过度简化(单延迟)自相关一样。如果存在高匹配,则表示正在记录的波形在同一时段或其谐波处重复。
例如,要检测1 kHz,记录1 ms的音频(48个样本,48 kHz),然后记录另一个1 ms,并进行比较(相关=乘以所有样本和总和)。如果它们排成一行(相关性高于某个阈值),那么您正在收听1 kHz,2 kHz,3 kHz或其他倍数。做几个赛段会让你对这场比赛更有信心。
真正的自相关会告诉你哪种谐波,特别是,这对你来说是否重要。