import wave
import numpy as np
from math import log,exp
def median(data):
data.sort()
half = len(data) // 2
return (data[half] + data[~half])/2
wf =wave.open('130010011180025047_130010011103010143_20230630092328.wav',"rb")
wf =wave.open('130010011180025047_130010011103010143_20230630085348.wav',"rb")
# wf =wave.open('130010011180025047_130010011103010143_20230630091657.wav',"rb")
nframes = wf.getnframes()
wavedata = wf.readframes(nframes)
wavewidth = wf.getsampwidth()
wavechannel= wf.getnchannels()
framerate = wf.getframerate()
wavedata = np.fromstring(wavedata,dtype=np.short)
wavedata = wavedata.T
wavedata = abs(wavedata)
sum_data = sum(wavedata)
avg_data = sum_data/len(wavedata)
# print('sum_data = ',sum_data,' avg_data = ',avg_data,max(wavedata))
fenbei1 = 20*log(max(wavedata),10)
fenbei2 = 20*log(median(wavedata),10)
fenbei3 = 20*log(avg_data,10)
print('fenbei1 = ',fenbei1)
print('fenbei2 = ',fenbei2)
print('fenbei3 = ',fenbei3)
python计算wav分贝值
最新推荐文章于 2024-08-22 09:11:56 发布