无论是使用pyaudio还是读取声音文件。读出的内容其实都是字节码。这些内容并非加密,因此很容易转化成数值进行处理。
当然python中有一些专门工具用于声音分析,不过如果只是单纯的想看一下数值大小,总是杀鸡用牛刀的感觉。
事实上python的标准库struct就包含字节转换工具,可以轻松完成这项工作。
import pyaudio
import struct as st
CHUNK = 1000
FORMAT = pyaudio.paInt16 #一帧占两字节
CHANNELS = 1
RATE = 1000
RECORD_SECONDS =2
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
#input_device_index = 0, #选择声音设备
frames_per_buffer=CHUNK)
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames+=data
patch = st.unpack('<2000h', bytes(frames)) #核心,解析声音强度
print(patch)
stream.stop_stream()
stream.close()
p.terminate()