pyaudio高級玩法2:音頻的字節(jié)碼轉(zhuǎn)換為數(shù)值
無論是使用pyaudio還是讀取聲音文件,讀出的內(nèi)容其實(shí)都是字節(jié)碼。這些內(nèi)容并非加密,因此很容易轉(zhuǎn)化成數(shù)值進(jìn)行處理。當(dāng)然python中有一些專門工具用于聲音分析,不過如果只是單純的想看一下數(shù)值大小,總是殺雞用牛刀的感覺。
事實(shí)上python的標(biāo)準(zhǔn)庫就包含字節(jié)轉(zhuǎn)換工具,可以輕松完成這項(xiàng)工作。

import?pyaudio
import?struct?as?st
CHUNK?=?1000
FORMAT?=?pyaudio.paInt16?#一幀占兩字節(jié)
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,?#選擇聲音設(shè)備
????????????????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))?#解析聲音強(qiáng)度
print(patch)
stream.stop_stream()
stream.close()
p.terminate()