我是eys的張森。今天谈谈声音的高低。声音高低的不同来自声波的频率不同。频率越高声音越高。具体可以听听下面这几种声音来感受一下:
细心的朋友大概会发现,500hz和550hz之间的不同比较明显,1000hz和1050hz的区别就不那么明显了,而至于2000hz和2050hz,似乎微乎其微了。(生成声音的代码可以从这里在网上用谷歌colab直接执行,感兴趣的朋友可以自己设定别的声音玩一玩)
人对声音频率的分辨力因频率不同而不同,大致与频率的对数成比例。因此在分析声音的时候,尤其是像音乐这种以人的感受为核心的课题里,我们需要新的衡量标准。我们先做一个比较,下面是从一段钢琴曲中抽出的声音,分解成各个频率
很多数值似乎都集中在5000hz以下,挤成一疙瘩,很难看出什么名堂。但是如果我们把x轴取一个对数,就不同了。
这个很明显,500hz附近有一个最大的山头,根据我手上的对应表,它对应B4,估计是“哆来咪发嗦拉西”的“西”。其余还可以看看到很多小山头,明显存在规律。不过,这个图找山头方便,至于那些没有明显的山头的部分的变化,从这个图是看不清的。对此我们可以把y轴给LOG一下(分贝)
这样一来,山头好像没有那么明显了,不过凑合着也能找到,有一些小山头看得清楚了。重要的是,从这个图里我们有新的发现了,声音的整体分布似乎有一些趋势(这个曲线趋势里面有些名堂,在混音的世界里很重要,以后有机会单独谈它)。
梅尔刻度是最常见的一个音频尺度,定义如下
f是频率,m是梅尔刻度(f为0时,m也为0,f为1000时,m为也1000,m与f的对数成比例,捣鼓捣鼓,可能就出来了)。用梅尔刻度,我们可以用它弄个滤波器库。在梅尔刻度轴上取出等间隔的频率带,将这频率带里面的频率加起来。用这个梅尔滤波器弄一下
那些乱七八糟的小变动没有了,大的趋势留下了。然后索性把y轴也给LOG一下
看起来很漂亮。事实上,上面这个图里面反映了声音里面很多重要的信息(人类的感官和它也比较接近)。我们还可以进一步把这个图分解一下,把它分成大的趋势和小的变动,也就是说再把它傅立叶分解一下,取开始的十来个成分(那就是大名鼎鼎的MFCC啦)。于是,一段声音可以用十来个数值有效地表示出来了。