我有一个beagleboard我正在尝试编程。
我正在使用PyAlsaAudio
捕获音频并绘制它(并对其进行sokme处理)。
pyalsa允许我以多种格式获取输出,但示例都使用PCM_FORMAT_S16_LE
所以我坚持使用它,除非有人另有说法。
如果从PCM_FORMAT_S16_LE
转到数字数组,我需要学习什么。应该很简单,但我还没有找到一个简单的解决方案。
感谢阅读和帮助。 穆斯塔法
编辑:1 只想添加我试过的
In [113]: aaa = numpy.fromstring(data)
In [112]: numpy.size(aaa)
Out[112]: 250
但尺寸错误,因为我已将1000指定为期间大小。 请帮忙。
答案 0 :(得分:0)
根据this,PCM_FORMAT_S16_LE
是每个通道的有符号16位采样(Little Endian字节顺序)。如果您使用numpy.fromstring
而不使用dtype
参数,则默认为float
,映射到float64
。因此,您的1000个16位样本只能转换为250个64位样本。
我认为你应该做的是:
aaa = numpy.fromstring(data, dtype='<i2')
在数据类型中,<
表示小字节序,i
有符号整数类型,2
16位或2字节长度。