声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4043|回复: 9

[综合] 如何计算采集到的声音数据分贝

[复制链接]
发表于 2009-3-30 14:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如何计算采集到的声音数据分贝
回复
分享到:

使用道具 举报

发表于 2009-3-30 15:12 | 显示全部楼层
要计算采集到的声音数据分贝值,必须对系统进行校准。从声压--电压--AD变换后的数值校准后就能从采集得的数据反算出声压和声压级。
 楼主| 发表于 2009-3-30 18:05 | 显示全部楼层
有没有详细的公式或算法.我对这些刚入门,还是不很了解.

但是对RIFF文件结构有一定了解.格式也知道一些.

知道录下来的文件是声压数据, 但是不知道如何转成电压, 还有换成什么AD之类的.

只知道计算dB的公式是 dB=20 * Log10(X) 但是其中的X是如何取到的不是很清楚.麻烦详细说明一下.
发表于 2009-3-30 20:26 | 显示全部楼层
我在2层说的是绝对声压值,它的校准不是一个计算问题,而是一个实验问题,需要一个标准声源。如果只是求相对声压级,一般都把1表示为0分贝,即是按公式dB=20 * Log10(X)计算。X=abs(fft(x)),x是信号。
 楼主| 发表于 2009-3-31 09:29 | 显示全部楼层
你的意思我明白了,那就是我采集到的只是信号的数据然后进行FFT运算,取绝对值后再进行dB运算,是这样吗?

还有我试了一下,我把一组数据(是个数组长度个数为256个.)进行FFT运算后看数据没有任何变化呀?

FFT是作什么用的?我只有现在的算法,但是不知道是作什么的,怎么作的.

FFT运算完成后计算出的数据很大.................我现手头有一个软件他算出来的是-30多......dB有负值吗?
 楼主| 发表于 2009-3-31 09:34 | 显示全部楼层
我是这样计算的,采集到256个数据后进行FFT变换.

变换完成后还是256个数据.循环计算每一个数据的绝对值dB,也就是
arry(256)

FFT(arry)

for i=0 to 255

tempdb=tempdb + 20 * Log10( abs(arry(i)))

next

tempdb = tempdb / 256

然后tempdb就是这256个数据的平均分贝,不知道这样作对不对?

[ 本帖最后由 sleept 于 2009-3-31 09:38 编辑 ]
发表于 2009-3-31 13:48 | 显示全部楼层
楼主大概是第一个这样做的人吧 哈
发表于 2009-3-31 14:34 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-19 11:20 编辑
原帖由 sleept 于 2009-3-31 09:34 发表
我是这样计算的,采集到256个数据后进行FFT变换.

变换完成后还是256个数据.循环计算每一个数据的绝对值dB,也就是
arry(256)

FFT(arry)

for i=0 to 255

tempdb=tempdb + 20 * Log10( abs(arry(i)))

next

tempdb = tempdb / 256

然后tempdb就是这256个数据的平均分贝,不知道这样作对不对?

不明白楼主在笫5层说的“我把一组数据(是个数组长度个数为256个.)进行FFT运算后看数据没有任何变化呀”,难道FFT后和FFT之前是一样的?
一般在FFT之前是时域数据,FFT之后是频域数据,而且在频域数据中一般只有一半是有效的。上表达的关系不下分明白,在FFT之后把谱线值相加,不知求什么?又分贝值不能这样相加:
tempdb=tempdb + 20 * Log10( abs(arry(i)))
同时dB值会有负值,上一帖子中说到,以1为参考值,代表0dB,小于1的值便是负值。
 楼主| 发表于 2009-4-1 09:29 | 显示全部楼层
那我采集到的数据是可以保存成WAV文件的对吧?只不过是少了WAV文件头信息部份.我可以用API补齐这部份.

假如说现在有这么一个文件,他是16K采样率,16Bit量化率,每秒数据流量是32000那,区块对齐数就是2.

也就是说以每两个字节为一个区块,每一个区块最大是32768,最少为-32768 而0是静音.

那我就一下先取256个区块进行FFT计算. 我这里有一个FFT算法.输入数据类型是 一个数组类型.但是经过FFT计算后

和计算之前两个数组内容是一样的....不知道是为什么....难到是我这里的FFT算法有问题?

我主要的目的就是计算这个WAV文件的平均分贝值,为实现这个功能以按上面那个方法作的.如果不对请问如何作才是

正确的?麻烦你了.
发表于 2009-7-23 11:50 | 显示全部楼层
1.用麦克风采集校准信号(dB 信号),获得电压值-压强(放大仪器的灵敏度),此信号作为基准,采用fft得到基准幅值 vs 频率
2.采集实验信号,得到的压强,fft变换,与基准幅值作比,得到实验信号的dB
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-10 13:52 , Processed in 0.057269 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表