Python on Raspberry Pi:结果仅为整数
Python on Raspberry Pi: results are only integers
我在 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()
很可能是按字节读取。这一行 l,data = data_in.read()
读入一个元组(由 l
和 data
组成)。 运行 这些变量的 type()
内置函数,看看您需要使用什么。
否则,请查看 PCM 术语和概念 的文档,该文档位于 pyalsaaudio
软件包的文档中,位于here.
我在 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()
很可能是按字节读取。这一行 l,data = data_in.read()
读入一个元组(由 l
和 data
组成)。 运行 这些变量的 type()
内置函数,看看您需要使用什么。
否则,请查看 PCM 术语和概念 的文档,该文档位于 pyalsaaudio
软件包的文档中,位于here.