我有一个beagleboard,我正在编写程序。我使用PyAlsaAudio捕捉音频并绘制它(并对其进行sokme处理)。
然而,这实际上是我第一次进入python和计算机音频。通常,我使用daq系统和matlab,所以我从未处理过二进制(假设)数字。
pyalsa允许我以多种格式获得输出,但是示例都使用PCM_FORMAT_S16_LE,所以我坚持它,除非有人不这么说。
如果从PCM_FORMAT_S16_LE到一个数字数组,我需要学习的是什么。应该很简单,但我还没有找到一个简单的解决办法。
谢谢你的阅读和帮助。穆斯塔法
编辑:我只想加一句我试过
In [113]: aaa = numpy.fromstring(data)
In [112]: numpy.size(aaa)
Out[112]: 250但是这个大小是错误的,因为我指定了1000作为句号。请帮帮忙。
发布于 2013-01-25 06:57:57
根据这,每个通道都对PCM_FORMAT_S16_LE进行了16位采样签名(小端点字节顺序)。当您使用不带numpy.fromstring参数的dtype时,它默认为float,后者被映射到float64。所以你的1000个16位的样本被转换成只有250个64位的样本。
我认为你应该做的是:
aaa = numpy.fromstring(data, dtype='<i2')在数据类型中,<表示小枚举,i表示有符号整数类型,2表示16位或2字节长度。
https://stackoverflow.com/questions/14513775
复制相似问题