1

我有一个正在尝试编程的 beagleboard。我PyAlsaAudio用来捕获音频并绘制它(并对其进行 sokme 处理)。

然而,这实际上是我第一次尝试 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 作为周期大小。请帮忙。

4

1 回答 1

0

据此,每个通道(Little Endian 字节顺序)是有符号的 16PCM_FORMAT_S16_LE样本。当您不使用参数时,它默认为,映射到。因此,您的 1000 个 16 位样本仅转换为 250 个 64 位样本。numpy.fromstringdtypefloatfloat64

我认为你应该做的是:

aaa = numpy.fromstring(data, dtype='<i2')

在数据类型中,<说明小端序、i有符号整数类型和216 位或 2 字节长度。

于 2013-01-25T06:57:57.893 回答