聲壓、聲強、響度概念和python表示
發(fā)布日期:2022/10/18 18:21:08 瀏覽量:
## 聲壓
聲壓是定量描述聲波的最基本的物理量,它是由于聲擾動產(chǎn)生的逾量壓強,是空間位置和時間的函數(shù)。由于聲壓的測量比較易于實現(xiàn),而且通過聲壓的測量也可以間接求得質(zhì)點振速等其他聲學(xué)參量,因此,聲壓已成為人們最為普遍采用的定量描述聲披性質(zhì)的物理量。
### 有效聲壓
通常講的盧壓指的是有效聲壓,即在一定時間間隔內(nèi)將瞬時聲壓對時間求方均根值所得。設(shè)語音長度度為$T$, 離散點數(shù)為$N$, 則有效聲壓的計算公式為
$$P_e=\sqrt{\frac{1}{T}\sum\limits_{n=1}^Nx^2\Delta t}=\sqrt{\frac{1}{N\Delta t}\sum\limits_{n=1}^Nx^2\Delta t}=\sqrt{\frac{1}{N}\sum\limits_{n=1}^Nx^2}$$
其中$x$表示采樣點。只要保證所取的點數(shù)$N$足夠大,即可保證計算的準(zhǔn)確性。用于計算聲壓級值的語音幀長一般為20ms、50ms、100ms、200ms以及500ms。計算的結(jié)果是一個序列。
~~~py
class soundBase:
def __init__(self, path):
self.path = path
def audioread(self, formater=’sample’):
"""
讀取語音文件
2020-2-26 Jie Y. Init
:param formater: 獲取數(shù)據(jù)的格式,為sample時,數(shù)據(jù)為float32的,[-1,1],同matlab同名函數(shù). 否則為文件本身的數(shù)據(jù)格式
:return: 語音數(shù)據(jù)data, 采樣率fs
"""
fs, data = wavfile.read(self.path)
if formater == ’sample’:
data, _ = librosa.load(self.path, sr=fs)
return data, fs
def SPL(self, data, fs, frameLen=100, isplot=True):
"""
計算聲壓曲線
2020-2-26 Jie Y. Init
:param data: 語音信號數(shù)據(jù)
:param fs: 采樣率
:param frameLen: 計算聲壓的時間長度(ms單位)
:param isplot: 是否繪圖,默認(rèn)是
:return: 返回聲壓列表spls
"""
def spl_cal(s, fs, frameLen):
"""
根據(jù)數(shù)學(xué)公式計算單個聲壓值
$y=\sqrt(\sum_{i=1}^Nx^2(i))$
2020-2-26 Jie Y. Init
:param s: 輸入數(shù)據(jù)
:param fs: 采樣率
:param frameLen: 計算聲壓的時間長度(ms單位)
:return: 單個聲壓數(shù)值
"""
l = len(s)
M = frameLen * fs / 1000
if not l == M:
exit(’輸入信號長度與所定義幀長不等!’)
# 計算有效聲壓
pp = 0
for i in range(int(M)):
pp += (s[i] * s[i])
pa = np.sqrt(pp / M)
p0 = 2e-5
spl = 20 * np.log10(pa / p0)
return spl
length = len(data)
M = fs * frameLen // 1000
m = length % M
if not m < M // 2:
# 最后一幀長度不小于M的一半
data = np.hstack((data, np.zeros(M - m)))
else:
# 最后一幀長度小于M的一半
data = data[:M * (length // M)]
spls = np.zeros(len(data) // M)
for i in range(length // M - 1):
s = data[i * M:(i + 1) * M]
spls[i] = spl_cal(s, fs, frameLen)
if isplot:
plt.subplot(211)
plt.plot(data)
plt.subplot(212)
plt.step([i for i in range(len(spls))], spls)
plt.show()
return spls
sb = soundBase(’C2_3_y.wav’)
data, fs = sb.audioread()
sb.SPL(data, fs)
~~~
### 聲壓級
聲音的有效聲壓與基準(zhǔn)聲壓之比,取以10為底的對數(shù),再乘以20,即為聲壓級,通常以符號$L_p$表示,單位為dB。
$$L_p=20\lg\frac{P_e}{p_{ref}}(dB)$$
其中,$P_e$為待測聲壓的有效值,$P_{ref}$為參考聲壓,在空氣中一般取$2\times 10^{-5}Pa$。
## 聲強
在物理學(xué)巾,聲波在單位時間內(nèi)作用在與其傳遞方向垂直的單位面積上的能量稱為聲強。日常生活中能聽到的聲音其強度范圍很大,最大和最小之間可達(dá)$10^{12}$倍。
### 聲強級
用聲強的物理學(xué)單位表示聲音強弱很不方便。當(dāng)人耳聽到兩個強度不同的聲音時,感覺的大小大致上與兩個盧強比值的對數(shù)成比例。因此,用對數(shù)尺度來表示聲音強度的等級,其單位為分貝(dB) 。
$$L_I=10\lg (I/I_0)(dB)$$
在聲學(xué)中,$I_0=1\times 10^{-12}W/m^2$。
### 聲壓與聲強的關(guān)系
對于球面波和平面波,聲壓與聲強的關(guān)系是:
$$I=P^2/(\rho·c)$$
其中,$\rho$為空氣密度,$c$為聲速,在標(biāo)準(zhǔn)大氣壓和20攝氏度的環(huán)境下,$\rho·c=408 Pa·s/m$,這個數(shù)值叫國際單位值,也叫瑞麗,稱為空氣對聲波的特性阻抗。
## 響度
響度描述的是聲音的響亮程度,表示人耳對聲音的主觀感受,其計量單位是宋。定義為聲壓級為40dB的1 kHz純音的響度為1 Son (宋) 。人耳對聲音的感覺,不僅和聲壓有關(guān),還和頻率有關(guān)。聲壓級相同,頻率不同的聲音,聽起來響亮程度也不同。如空壓機(jī)與電鋸,同是100dB聲壓級的噪聲,昕起來電鋸聲要響得多。按人耳對聲音的感覺特性,依據(jù)盧壓和頻率定出人對聲音的主觀音響感覺量,稱為響度級,單位為方,符號phon。根據(jù)國際協(xié)議規(guī)定,OdB聲級的1000 Hz純音的晌度級定義為0 phon。其他頻率聲音的聲級與響度級的對應(yīng)關(guān)系,要從等響度曲線才能查出。
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生