sleept 发表于 2009-3-30 14:48

如何计算采集到的声音数据分贝

如何计算采集到的声音数据分贝

songzy41 发表于 2009-3-30 15:12

要计算采集到的声音数据分贝值,必须对系统进行校准。从声压--电压--AD变换后的数值校准后就能从采集得的数据反算出声压和声压级。

sleept 发表于 2009-3-30 18:05

有没有详细的公式或算法.我对这些刚入门,还是不很了解.

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

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

只知道计算dB的公式是 dB=20 * Log10(X) 但是其中的X是如何取到的不是很清楚.麻烦详细说明一下.

songzy41 发表于 2009-3-30 20:26

我在2层说的是绝对声压值,它的校准不是一个计算问题,而是一个实验问题,需要一个标准声源。如果只是求相对声压级,一般都把1表示为0分贝,即是按公式dB=20 * Log10(X)计算。X=abs(fft(x)),x是信号。

sleept 发表于 2009-3-31 09:29

你的意思我明白了,那就是我采集到的只是信号的数据然后进行FFT运算,取绝对值后再进行dB运算,是这样吗?

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

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

FFT运算完成后计算出的数据很大.................我现手头有一个软件他算出来的是-30多......dB有负值吗?

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个数据的平均分贝,不知道这样作对不对?

[ 本帖最后由 sleept 于 2009-3-31 09:38 编辑 ]

HzRad 发表于 2009-3-31 13:48

楼主大概是第一个这样做的人吧 哈

songzy41 发表于 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的值便是负值。

sleept 发表于 2009-4-1 09:29

那我采集到的数据是可以保存成WAV文件的对吧?只不过是少了WAV文件头信息部份.我可以用API补齐这部份.

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

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

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

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

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

正确的?麻烦你了.

antonylau 发表于 2009-7-23 11:50

1.用麦克风采集校准信号(dB 信号),获得电压值-压强(放大仪器的灵敏度),此信号作为基准,采用fft得到基准幅值 vs 频率
2.采集实验信号,得到的压强,fft变换,与基准幅值作比,得到实验信号的dB
页: [1]
查看完整版本: 如何计算采集到的声音数据分贝