上来就进入正题。
首先来说说声音的大小的单位dB,dB这个单位其实可以叫没有单位,因为他其实表示的是一种比例关系,给出计算公式:
SPL=20 x log10[ p(e) / p(ref) ]
SPL即是我们平时所说的分贝,p(e)为待测声压,p(ref)为参考声压。也就是说其实我们所说的XXdb都是说的这个声音相对于我们规定的一个声音的大小的比值,并取以10为底的对数再乘以20。之所以采用取对数是因为这个比值可能会非常大。例如正常的人耳能够听到最微弱的声音叫作“听觉阈”,为20微帕斯卡 (μPa) 的压强变化,即20 x 10-6 Pa (百万分之二十 帕斯卡)。而一架太空穿梭机在发出最大马力时能在近距离产生大约 2,000 Pa 或2 x 109μPa的噪音这么大的数值处理起来非常不方便。若采用db的形式,他们差距将只有160db.
所以DB这种单位带来了形式上的简单,但是却同时也在直觉上让我们觉得一个声音从30db测到90db好像很简单,其实仔细算算便能得出,这种差距好像一个两层小楼和珠穆朗玛峰的高矮差距,这2个声音的声压大小相差了1000倍。
明白了上面的道理,再来说说对于声音的大小,在工程上是怎么计算的。
我们知道人耳对于不同频率的声音的感受是不一致的,类似于一个带通滤波器,首先只对20-20000HZ之间的频率有反应,造成同样的声压,频率不同,对人听觉的影响也不同。下图即为人耳对于不同频率的反应程度。注意,单位同样是dB。
图1
此曲线叫做A率曲线,用他测出的分贝值较多dBA,这也是声音用的最多也是最接近人耳的加权方式。
所以综上,要测定一个对于人耳感受有参考意义的声音大小,必须对不同频率的声音进行加权。那么问题来了,怎么得到声音的频率?
关于这个问题,可能很多人都弄不清楚的。一般大家都认为,通过测定麦克风输出信号的有效值,我们就能得到对应的声音大小。但是经过上面的研究我们已经发现,不同声音频率对于我们感受有很大影响,最简单的可以举例超声波和次声波,麦克风可能仍有很大信号,但对于我们人来说,无论多大,可能我们都无法感受到了。若此时显示几十上百db,那对于拿着这个噪声计的人一定是非常莫名其妙的。
又扯了这么多,还是这个问题,如何得到声音的频率?
这设计到大学电信专业的一门课程,名为:数字信号处理,这门课程对于数学的要求如此之高以至于大部分并没有想去看他的欲望。基本只需要记住几个公式就完事了。
但其中有一个我们这需要使用到的数学方法傅里叶变换。
那么什么叫做傅里叶变换?
傅立叶变换在应用中算是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。
他的数学公式是这样的。。好吧,这只是装个B。
作为工程狗基本上不用了解这么详细的数学公式,简单的理解傅里叶变换就是,他可以把一个信号分解为无数个由他的谐波信号相加而成。
即 a=a1+a2+a3+...+an
后面全部是他的谐波信号,及各种频率的波的叠加。
所以当实际的声音信号经过傅里叶变换之后,就可以分解为各种不同频率的声音的叠加,也可以说,真实的声音必然是不同频率的正弦波的叠加。而经过傅里叶变换之后,声音也就由时域转换到了频域。
此时就可以方便的得出各给频率处声音的强度和大小。便能对声音大小进行加权计算了。
由图1可以看出a率加权曲线是连续的,那我们是否需要把每个频率都进行加权?答案是可以,但也没必要。在实际中我们对于频率的选取叫做倍频程。倍频程的中心频率为31.5、63、125、250、500、1K、2K、4K、8K、16KHz,某些要求更精细的条件下可以使用1/3倍频程。
一个声音在倍频程上的分量可能是这样,是不是很熟悉,很多音乐软件都有这个显示,很久很久以前大概在冬季的dvd播放机或者功放也大多有这个显示。
如此一来,通过编程我们实现傅里叶变换,得到频域,取出倍频程上的值,通过加权,最终计算出声音的分贝。