测量声音分贝

我们经常用手机来录音、拍摄,这些功能都用到了手机自带的microphone(MIC)。也有人想到了用手机的MIC来检测环境噪声的大小,这个小功能可以使手机更加智能化,比如调整振铃等,其拓展应用非常广。

目前已经有许多软件已经实现了这个功能,比如PocketRTA。PocketRTA有两个版本,分别适用于Windows NT 和 Windows Mobile(WM)。大家可以Google一下,下载适用,放在手机上当做噪声检测仪也是很有趣的。目前还没看见PocketRTA的源码。

经过一段时间的摸索研究,实现了测量环境噪声DB值功能的软件,一些经验在此和大家分享一下。网上这方面的信息很零碎,我综合原理和实际开发,把整个流程完整叙述一下。在此就不贴代码,相信知识比代码更能让人受益。

实现语言: C++

开发平台: VS 2005

手机OS: Windows Mobile 5.0

流程图

大致流程分为4步:

step1 : 获取声音数据。声音是以波的形式传播的,在传播路径上遇到障碍物时,会在这些障碍物表面上产生压力,这就是声压。MIC可以检测到声压,声压的大小反应为MIC输出电平的大小。MIC的输出电平进入到声卡后,声卡进行采样和量化,这是传统的模数转换(ADC)过程。声卡采样和量化后的值,就是波形数据。波形数据反映声音强度在时域上的变化。这些波形数据可以采用一定的格式在电脑上储存,如.wav文件,也可以输出到扬声器播放。

有关如何获取声音数据,可以参考本人先前的文章:WAVE文件录放音Windows API。

通常声卡的采样率为11.025kHz,16bit量化。即每秒采样11,025次,每次采样值量化为65536阶,量化值用0~65535表示。波形数据为时域离散信号。

step2:FFT / DFT 。 声音是由若干(或无限多个)频率分量组成的。为了检测和描述声音的特性,人们使用频谱。噪声检测也需要在频域处理数据,要把时域信号转换为频域信号。

step1得到的WAVE时域离散信号经过DFT可以变成频域离散信号。FFT是离散傅里叶变换DFT在工程上的优化算法。有关FFT的代码在网上很多。

step3:划分倍频程,并把信号从绝对量值转换为相对量值(DB)。

a。先说dB(decibel)的含义。dB是一个相对值,声学上来讲,声压的分贝值的基准是20微帕斯卡。假设一个声音的测得的声压是P帕斯卡,那么声音的分贝值计算公式为:

SPL:Sound Press Level 声压级。

通常物理上20微帕斯卡通过MIC和声卡量化后为1。所以公式简化为:

此处P也为量化后相对20微帕斯卡的值

b。然后说dB相加,比如有两个声音,分别为70dB和60dB,它们叠加是多少dB? 70.4dB。因为两个声音的叠加是能量的叠加。

c。再说倍频程。我们最终要计算的声音分贝值是由各个频率分量的声音分量组成的。我们用倍频程或1/3倍频程把声音划分为许多频带。倍频程的中心频率为31.5、63、125、250、500、1K、2K、4K、8K、16KHz十个频率,后一个频率均为前一个频率的两倍,因此被称为倍频程,而且后一个频率的频率带宽也是前一个频率的两倍。在有些更为精细的要求下,将频率更细地划分,形成1/3倍频程,也就是把每个倍频程再划分成三个频带。

d。计算每个倍频程的声压级。FFT后的信号在频域上是离散的,相邻点的频率间隔为 SampleRate / FFTPoint ,即采样率除以FFT的点数。计算倍频程的声压级的方法是先计算频带内频点的平均能量, 然后再取对数。计算公式为:

Pi为倍频程中某个频点的值

e。下图为1/3倍频程的计算结果。

step4:A率加权后计算dBA。

a。A率曲线。由于人耳对不同频率的声音敏感程度不同,表现为相同dB值的声音,2kHz 比 100Hz听起来更响一些。为了使测量得到的值更符合人的主管感觉,在此引入A率加权。下图是A率曲线:

a率曲线曲线函数为:

可见,a率加权减弱了声音低频分量对最终测量结果的贡献。

b。加权方法。假设step3后,中心频率为125Hz的1/3倍频程的声压级为40dB, 125Hz的A率加权值为-16.18,加权后的声压级为 40-16.18 = 23.82dBA。A率加权后单位为dBA。

c。全部频率范围内的dBA叠加。

若采用的是1/3倍频程,经过b步骤后,得到30个频带的dBA值,表示为qi,i = 1,2,...,30。 全部频率范围内的dBA叠加公式为:

这就是最终结果。

两个声音的频率比(或者音调比)的以2为底的对数称为频程,数学表达式为n=log2(f2/f1),式中f1为基准频率, f2为求倍频程数的信号频率, n为倍频程数.可以是整数或分数.例如n=1,1/3,则分别称为”倍频程”和”三分之一倍频程”.

如果频率F1是100HZ的话,它的倍频程就是200HZ.

它的2分之1倍频程频率就是141HZ,就是100HZ乘个系数,这个系数是2的(1/2)幂,就是2的开平方根. 它的3分之1倍频程频率就是100HZ乘一个新的系数,这个系数是2的(1/3)幂,就是2的开三次方的根. 其值是多少呢?算一下,是1.2599.

我们经常用手机来录音、拍摄,这些功能都用到了手机自带的microphone(MIC)。也有人想到了用手机的MIC来检测环境噪声的大小,这个小功能可以使手机更加智能化,比如调整振铃等,其拓展应用非常广。

目前已经有许多软件已经实现了这个功能,比如PocketRTA。PocketRTA有两个版本,分别适用于Windows NT 和 Windows Mobile(WM)。大家可以Google一下,下载适用,放在手机上当做噪声检测仪也是很有趣的。目前还没看见PocketRTA的源码。

经过一段时间的摸索研究,实现了测量环境噪声DB值功能的软件,一些经验在此和大家分享一下。网上这方面的信息很零碎,我综合原理和实际开发,把整个流程完整叙述一下。在此就不贴代码,相信知识比代码更能让人受益。

实现语言: C++

开发平台: VS 2005

手机OS: Windows Mobile 5.0

流程图

大致流程分为4步:

step1 : 获取声音数据。声音是以波的形式传播的,在传播路径上遇到障碍物时,会在这些障碍物表面上产生压力,这就是声压。MIC可以检测到声压,声压的大小反应为MIC输出电平的大小。MIC的输出电平进入到声卡后,声卡进行采样和量化,这是传统的模数转换(ADC)过程。声卡采样和量化后的值,就是波形数据。波形数据反映声音强度在时域上的变化。这些波形数据可以采用一定的格式在电脑上储存,如.wav文件,也可以输出到扬声器播放。

有关如何获取声音数据,可以参考本人先前的文章:WAVE文件录放音Windows API。

通常声卡的采样率为11.025kHz,16bit量化。即每秒采样11,025次,每次采样值量化为65536阶,量化值用0~65535表示。波形数据为时域离散信号。

step2:FFT / DFT 。 声音是由若干(或无限多个)频率分量组成的。为了检测和描述声音的特性,人们使用频谱。噪声检测也需要在频域处理数据,要把时域信号转换为频域信号。

step1得到的WAVE时域离散信号经过DFT可以变成频域离散信号。FFT是离散傅里叶变换DFT在工程上的优化算法。有关FFT的代码在网上很多。

step3:划分倍频程,并把信号从绝对量值转换为相对量值(DB)。

a。先说dB(decibel)的含义。dB是一个相对值,声学上来讲,声压的分贝值的基准是20微帕斯卡。假设一个声音的测得的声压是P帕斯卡,那么声音的分贝值计算公式为:

SPL:Sound Press Level 声压级。

通常物理上20微帕斯卡通过MIC和声卡量化后为1。所以公式简化为:

此处P也为量化后相对20微帕斯卡的值

b。然后说dB相加,比如有两个声音,分别为70dB和60dB,它们叠加是多少dB? 70.4dB。因为两个声音的叠加是能量的叠加。

c。再说倍频程。我们最终要计算的声音分贝值是由各个频率分量的声音分量组成的。我们用倍频程或1/3倍频程把声音划分为许多频带。倍频程的中心频率为31.5、63、125、250、500、1K、2K、4K、8K、16KHz十个频率,后一个频率均为前一个频率的两倍,因此被称为倍频程,而且后一个频率的频率带宽也是前一个频率的两倍。在有些更为精细的要求下,将频率更细地划分,形成1/3倍频程,也就是把每个倍频程再划分成三个频带。

d。计算每个倍频程的声压级。FFT后的信号在频域上是离散的,相邻点的频率间隔为 SampleRate / FFTPoint ,即采样率除以FFT的点数。计算倍频程的声压级的方法是先计算频带内频点的平均能量, 然后再取对数。计算公式为:

Pi为倍频程中某个频点的值

e。下图为1/3倍频程的计算结果。

step4:A率加权后计算dBA。

a。A率曲线。由于人耳对不同频率的声音敏感程度不同,表现为相同dB值的声音,2kHz 比 100Hz听起来更响一些。为了使测量得到的值更符合人的主管感觉,在此引入A率加权。下图是A率曲线:

a率曲线曲线函数为:

可见,a率加权减弱了声音低频分量对最终测量结果的贡献。

b。加权方法。假设step3后,中心频率为125Hz的1/3倍频程的声压级为40dB, 125Hz的A率加权值为-16.18,加权后的声压级为 40-16.18 = 23.82dBA。A率加权后单位为dBA。

c。全部频率范围内的dBA叠加。

若采用的是1/3倍频程,经过b步骤后,得到30个频带的dBA值,表示为qi,i = 1,2,...,30。 全部频率范围内的dBA叠加公式为:

这就是最终结果。

两个声音的频率比(或者音调比)的以2为底的对数称为频程,数学表达式为n=log2(f2/f1),式中f1为基准频率, f2为求倍频程数的信号频率, n为倍频程数.可以是整数或分数.例如n=1,1/3,则分别称为”倍频程”和”三分之一倍频程”.

如果频率F1是100HZ的话,它的倍频程就是200HZ.

它的2分之1倍频程频率就是141HZ,就是100HZ乘个系数,这个系数是2的(1/2)幂,就是2的开平方根. 它的3分之1倍频程频率就是100HZ乘一个新的系数,这个系数是2的(1/3)幂,就是2的开三次方的根. 其值是多少呢?算一下,是1.2599.


相关文章

  • 声音与分贝
  • 我们知道,声音是一种振动波.声音通过空气传播.被我们听到,本质上就是空气分子的振动传到了耳朵里,引发鼓膜的振动.所以,声音的大小,其实反映的是这种振动的强度.由于空气振动会引起大气压强的变化,所以确切地说,我们应该用压强变化的程度来描述一个 ...查看


  • 铁路车站环境噪声控制
  • 铁路车站环境噪声控制 孙卓 (乌鲁木齐站安全科,新疆 乌鲁木齐铁路局 830006) 摘要:噪声污染越来越被公众所重视,铁路车站是一个十分复杂的噪声源.控制好车站噪声源及其传播途径,对提高车站运输组织,改善工作环境,强化服务水平具有十分重要 ...查看


  • 关于分贝的知识
  • 关于分贝的知识 分贝表示一种单位,即两种电或声功率之比或两种电压或电流值或类似声量之比:分贝还是一种测量声音相对响度的单位. 分贝(decibel )dB 分贝是以美国发明家亚历山大·格雷厄姆·贝尔命名的,他因发明电话而闻名于世.因为贝尔的 ...查看


  • 空气动力性噪声
  • 由于机械零件和周围及封闭媒质(空气)交互作用而辐射出噪声的声源称为空气动力性噪声源. 1.喷射噪声:气流从管口以高速(介于声速与亚声速之间)喷射出来,由此而产生的噪声称为喷射噪声,也称为喷注噪声或射流噪声. 2.涡流噪声:气流流经障碍物时, ...查看


  • 创造一个安静优美的校园环境
  • "创造一个安静优美的校园环境" 北京市第八中学 张涛 一.活动概述: 该活动适合在初中一.二年级中开展.主要是对学生活动的校园环境,中的噪声污染.绿化美化等方面展开调查,发现问题.提出问题,找到解决的方法与措施.通过该活 ...查看


  • 声学名词解释
  • B 波长 声波振动一次所传播的距离,用声波的速度除以声波的频率就可以计算出该频率声波的波长,声波的波长范围为17米至1.7厘米,在室内声学中,波长的计算对于声场的分析有着十分重要的意义,要充分重视波长的作用.例如只有障碍物在尺寸大于一个声波 ...查看


  • 工业企业噪声卫生标准2
  • 工业企业噪声卫生标准(试行草案) [分类号]4071067901 [标题]工业企业噪声卫生标准(试行草案) [时效性]有效 [颁布单位]卫生部/国家劳动总局 [颁布日期]790831 [实施日期]790831 [失效日期] [内容分类]卫生 ...查看


  • 环境噪声污染的危害和特征
  • 环境噪声污染的危害和特征 这是一类引起人烦躁.或音量过强而危害人体健康的声音. 噪声通常是指那些难听的,令人厌烦的声音.噪音的波形是杂乱无章的. 从环境保护的角度看,凡是影响人们正常学习,工作和休息的声音凡是人们在某些场合"不需要 ...查看


  • 极限法测定几种频率的听觉阈限实验
  • 极限法测定几种频率的听觉阈限实验 12级心理系师范班 [1**********] 李敏 摘 要 本实验采用极限法测定几种频率的听觉阈限,极限法是测定阈限的直接方法,它能形象地表明阈限这一概念.也就是说,在记录纸上可以直接看出这一类与那一类( ...查看


热门内容