声学指纹识别背后的原理是什么?

What are the principles behind acoustic fingerprinting?

什么样的 API 或框架用于为音符赋值?就像 Shazzam 这样的应用程序如何从麦克风中获取音符并知道如何处理它? 对我来说,手机麦克风和一些漂亮的逻辑可以与音乐商店的调谐器竞争,真是太神奇了!

编辑 1。

关于该主题的有趣论文。 Shazzam 音乐识别应用软件 取决于 Acoustic fingerprinting and a Fast Fourier Transform的原则

下面是 practice

中一些类似代码的示例

简短的解释。

第一步.使用FFT

分析所有歌曲文件的原始频率

step 2. 将之前的FFT分析结果做成合适的树状数据结构,这样我们就可以按频率搜索歌曲了。

步骤3.使用麦克风录制来自外部环境的歌曲。并用 FFT 对其进行分析。从先前的频率树中搜索匹配频率。

声学指纹算法不会尝试分析音乐。也就是说,它们不会将麦克风的音频转换为音符。他们正在从音频中提取一些任意特征,从音乐理论的角度来看没有多大意义,但它们对于识别音乐仍然有用。

通常,您从频谱图开始。频谱图是对频率随时间变化的分析。这对于几乎所有声学指纹识别算法都是常见的。不同之处在于他们对频谱图的处理方式以及他们从中提取的特征类型。一些算法正在寻找频谱图中的峰值,一些算法将其分成规则的间隔。最终目标通常是生成一堆可以索引并快速搜索的哈希值。

Avery Li-Chun Wang 的原始 Shazam 算法公开可用。您可以找到详细信息 here.