从有符号PCM格式到python中的浮点数

从有符号PCM格式到python中的浮点数,python,numpy,Python,Numpy,我有一个beagleboard我正试着编程。 我正在使用PyAlsaAudio来捕获音频,并对其进行绘图和sokme处理 然而,这实际上是我第一次将forray应用到python和计算机音频中。通常我使用daq系统和matlab,所以我从来没有处理过二进制数据,我假设是数字 pyalsa允许我获得多种格式的输出,但示例都使用PCM格式,所以除非有人另有说明,否则我坚持使用它 我需要学习的是如何从PCM格式转换为数字数组。应该很简单,但我还没有找到一个简单的解决办法 谢谢你的阅读和帮助。 穆斯塔法

我有一个beagleboard我正试着编程。 我正在使用PyAlsaAudio来捕获音频,并对其进行绘图和sokme处理

然而,这实际上是我第一次将forray应用到python和计算机音频中。通常我使用daq系统和matlab,所以我从来没有处理过二进制数据,我假设是数字

pyalsa允许我获得多种格式的输出,但示例都使用PCM格式,所以除非有人另有说明,否则我坚持使用它

我需要学习的是如何从PCM格式转换为数字数组。应该很简单,但我还没有找到一个简单的解决办法

谢谢你的阅读和帮助。 穆斯塔法

编辑:1 我只是想补充一下我试过了

In [113]: aaa = numpy.fromstring(data)
In [112]: numpy.size(aaa)
Out[112]: 250
但是大小是错误的,因为我指定了1000作为周期大小。 请提供帮助。

根据,PCM\u格式为每个通道的带符号16位样本小端字节顺序。如果在不使用dtype参数的情况下使用numpy.fromstrings,则默认为float,它映射为float64。因此,您的1000个16位样本被转换为仅250个64位样本

我认为你应该做的是:

aaa = numpy.fromstring(data, dtype='<i2')
在数据类型中,