声压级 matlab,语音信号处理教程(二)声音的声压级和响度

本节内容我们来看下如何用Matlab和Python计算声音的声压级和响度。

声压级

1. 声压级定义

首先来看声压级,这个就是指的我们平时所说的声音有多少分贝。声压定义为声波在某一点产生的逾量瞬时压强的均方根值。由于声压容易被人耳感知,也易于测量,因此,通常使用声压作为描述声波大小的物理量。

声压级以符号SPL(sound pressure level)表示,其定义为将待测声压有效值p(e)与参考声压p(ref)的比值取常用对数,再乘以20,即:

d65c7e3ed7887ca9d8bbbcb0325c08f2.png

在空气中参考声压p(ref)一般取为2e-5帕,这个数值是正常人耳对800赫声音刚刚能觉察其存在的声压值,也就是800赫声音的可听阈声压。一般讲,低于这一声压值,人耳就再也不能觉察出这个声音的存在了。显然该可听阈声压的声压级即为零分贝。

指的是声压有效值,就是一段声音信号的均方根(RMS)。设语音长度为T, 离散点数为N, 则有效声压的计算公式为:

55f3e289f65838fca492f141e06391e9.png

常见的声音分贝值:

声音种类

声压级(分贝)

烈性炸药爆炸声

170

火箭、导弹发射场

150

飞机发动机

120

发电机工作

100

卡车

90

正常谈话

50

轻声耳语

30

农村静夜

10

Matlab代码

由前面的定义可很容易写出SPL的代码,需要注意的是,程序中的输入信号是数字信号,与实际的模拟信号大小成倍数关系。

function spl = SPLCal(x)

len = length(x);

%%

% 有效声压计算,即求RMS

pa = sqrt(sum(x.^2)/len);

%% 声压级计算

% 声压级值spl=20*log10(pa/p0),单位为dB

p0 = 2e-5;

spl = 20*log10(pa/p0);

end

完整代码如下:

clear all;clc;close all;

%%

<
  • 7
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB是一种非常强大的声音信号分析与处理工具。基于MATLAB,我们可以利用其丰富的信号处理函数和工具箱来实现声音信号的分析和处理。 首先,声音信号的强度可以通过MATLAB中的音频采样数据来计算得出。我们可以使用MATLAB提供的函数,如audioread()来读取声音信号的音频数据,并利用这些数据来计算声音信号的能量或强度。 其次,声音信号的响度可以通过MATLAB中的音频信号处理工具箱来计算得出。具体来说,我们可以使用MATLAB中的声音测量函数,如loudness()来计算声音信号的平均响度。 除了基本的声音信号分析,MATLAB还提供了丰富的声音信号处理功能。例如,我们可以利用MATLAB中的滤波器设计函数和滤波器库来进行声音信号的滤波处理。还可以利用MATLAB中的时频分析工具来进行声音信号的时频分析,比如短时傅里叶变换(STFT)和连续小波变换(CWT)等。 此外,MATLAB还提供了各种音频信号处理算法的实现,比如噪音消除、语音增强、音频编解码等。我们可以利用这些算法和函数来对声音信号进行处理和增强,以满足特定应用的需求。 综上所述,基于MATLAB可以实现声音信号的分析与处理。通过利用MATLAB丰富的信号处理函数和工具箱,我们可以计算声音信号的强度和响度,并进行各种声音信号处理操作,从而满足不同应用场景的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值