当声源环境不同时,采取不同的声音处理策略。
总共使用了两种计算声音分贝的方法
- 算法1:绝对值的平均值
- 算法2:平方和的对数
代码
import wave
import numpy as np
import matplotlib.pyplot as plt
# 分析音量、分贝的图形
def analyze_db():
# 开发wav音频文件
wf = wave.open('./record_test.wav', 'r')
# 设置每次读取块的大小
chunk = 1024
# 用来添加音量的数组
value1 = [] # 绝对值的平均值
value2 = [] # 对数
# 对每1024块的声音进行分析
while True:
# 每次读取1024
stream_data = wf.readframes(chunk)
print(stream_data)
# 当数据为空的时候,退出
if stream_data == b'':
break
# 每块对应的声音分贝
data = np.fromstring(stream_data, dtype=np.int16)
# print(data) # [ 11 8 15 ... -39 -5 12] 是这种数据
# 算法1
db1 = np.average(np.abs(data)) * 2
# 算法2
db2 =