代码之家  ›  专栏  ›  技术社区  ›  mahboudz

智能手机上音符的音高识别,pt。2.

  •  1
  • mahboudz  · 技术社区  · 15 年前

    作为我上一次的后续行动 question ,如果我想让我的智能手机应用程序检测到某个音符,我只需要知道传入的声音是否是该音符,并带有一定的模糊性,以允许该音符关闭x美分。

    在回答我最初的问题时,一位受访者表示,如果你知道笔记在一定范围内,自相关可能会很好地工作。我想知道如果你只需要检查某个音符(+/-x美分)的存在与否,那么自相关是否会工作得更好。

    这些方法包括:

    • 离散小波变换
    • 自相关
    • 过零分析
    • 倍频程间隔滤波器
    • 载重吨

    如有任何想法,将不胜感激。

    1 回复  |  直到 8 年前
        1
  •  1
  •   endolith    15 年前

    正如您所描述的,您只需要确定是否存在特定的音调。一个非常简单(快速)的检测器只需记录波形的一个周期的等效值,然后记录另一个周期并将它们关联起来,就像一个过于简单(单滞后)的自相关。如果有一个高匹配,你知道被记录的波形是重复在大约相同的周期,或它的谐波。

    例如,要检测1 kHz,记录1 ms的音频(48 kHz时记录48个样本),然后再记录1 ms,并进行比较(相关=将所有样本相乘并求和)。如果它们排列在一起(相关性高于某个阈值),则您正在收听1 kHz、2 kHz、3 kHz或其他倍数。做几次练习会让你在比赛中更有信心。

    一个真正的自相关会告诉你哪一个谐波,特别是,如果它对你很重要的话。