我有一个beagleboard我正试着编程。
我使用PyAlsaAudio
来捕获音频并绘制它(并对其进行sokme处理)。在
然而,这实际上是我第一次将forray应用到python和计算机音频中。通常我使用daq系统和matlab,所以我从来没有处理过二进制数(我假设)。在
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作为句点大小。 请帮忙。在
根据this,
PCM_FORMAT_S16_LE
是每个信道的有符号16位样本(小端字节顺序)。当使用不带dtype
参数的numpy.fromstring
时,它默认为float
,它被映射到float64
。因此,你的1000个16位样本转换成了250个64位样本。在我认为你应该做的是:
在数据类型中,
<
表示小端号,i
表示有符号整数类型,2
表示16位或2个字节的长度。在相关问题 更多 >
编程相关推荐