使用传声器计算SPL

本文介绍了如何使用标准声压计和传声器进行声级测量,通过验证设备精度,利用Audacity进行频谱分析,并使用Python实现SPL计算,包括校准过程和实际操作步骤。
摘要由CSDN通过智能技术生成


前言

如何将传声器测量的数值转换成与声压计相同的数值?首先传声器又俗称麦克风,功能是将声能转化成机械能,然后再将机械能转换成电能。然后声卡再将模拟信号装换成数值信号,balabala~~~
无论他如何转换都是线性的,所以我们只需要使用校准音源校准我们的计算的数值,然后再做一个加权。
怕有些童鞋不知道SPL计算公式,还是写一下公式吧。

  • SPL=20* l o g 10 ( p 0 p r e f ) \text{SPL=20*}log_{10}({\text{\(\frac {p_0} {p_{ref}}\)}}) SPL=20*log10(prefp0)

一、使用到的工具

  • 标准声源,一般是1000Hz 94dB和1000Hz 114dB
  • 标准声压计
  • 传声器和功放

    请添加图片描述

二、测量标准声源。

1、验证标准声压计与标准声源。

其实这一步可以去掉,主要是我想验证一下两个标准器件。

  • 94dB
    请添加图片描述
  • 114dB
    请添加图片描述

2、使用传声器录制标准音源。

这里使用的软件是Audacity;注意将电脑里面的音量设置里面的mic录制音量,与增益适当减小,还有功放里的增益。使传声器录制114dB时录制的波形超出了记录范围。如我录制的就刚刚好。

请添加图片描述

三、频谱分析

使用Audacity自带频谱分析工具;选择一段音频片段,然后点击工具栏的 分析/频谱分析进行频谱分析。

  • 94dB
    请添加图片描述

    峰值1000Hz 处的SPL为-20.2dB

  • 114dB
    请添加图片描述

    峰值1000Hz 处的SPL为-0.6dB

    可以看到两个相差的绝对值为20dB左右。所以如果要得到测量的 94/114 只需要在计算的基础上加上一个补偿值。

四、python实现

import librosa as lb
from librosa import display
import soundfile as sf
import numpy as np
import matplotlib.pyplot as plt

path = "音频路径"

data, rate = sf.read(path)

#进行短时傅里叶变换
freqs, times, mags = lb.reassigned_spectrogram(y=data, sr=rate)

mags_db = lb.amplitude_to_db(mags, ref=1.0)

# 输出第11个片段的声压值, 61.5是计算的补偿值,这个值是用94/114减去你计算的值
print(np.round(np.max(mags_db[:, 10]), 1) + 61.5) 

fig, ax = plt.subplots()

img = display.specshow(mags_db, x_axis="s", y_axis="log", sr=rate, ax=ax)

fig.colorbar(img, ax=ax, format="%+2.f dB")

plt.show()

  • 33
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值