我在Raspberry Pi上使用以下python代码来收集音频信号并输出音量。我无法理解为什么我的输出只是整数。
#!/usr/bin/env python
import alsaaudio as aa
import audioop
# Set up audio
data_in = aa.PCM(aa.PCM_CAPTURE, aa.PCM_NONBLOCK, 'hw:1')
data_in.setchannels(2)
data_in.setrate(44100)
data_in.setformat(aa.PCM_FORMAT_S16_LE)
data_in.setperiodsize(256)
while True:
# Read data from device
l,data = data_in.read()
if l:
# catch frame error
try:
max_vol=audioop.max(data,2)
scaled_vol = max_vol/4680
if scaled_vol==0:
print "vol 0"
else:
print scaled_vol
except audioop.error, e:
if e.message !="not a whole number of frames":
raise e
另外,我不理解这一行的语法:
l,data = data_in.read()
答案 0 :(得分:0)
它可能在一个字节中读取。这一行l,data = data_in.read()
读入一个元组(由l
和data
组成)。对这些变量运行type()
内置函数,看看你有什么用。
否则,请查看位于here的pyalsaaudio
包文档中的 PCM术语和概念 的文档。