首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从有符号的PCM_FORMAT_S16_LE到python中的浮点数

从有符号的PCM_FORMAT_S16_LE到python中的浮点数
EN

Stack Overflow用户
提问于 2013-01-25 01:12:05
回答 1查看 783关注 0票数 1

我有一个beagleboard,我正在编写程序。我使用PyAlsaAudio捕捉音频并绘制它(并对其进行sokme处理)。

然而,这实际上是我第一次进入python和计算机音频。通常,我使用daq系统和matlab,所以我从未处理过二进制(假设)数字。

pyalsa允许我以多种格式获得输出,但是示例都使用PCM_FORMAT_S16_LE,所以我坚持它,除非有人不这么说。

如果从PCM_FORMAT_S16_LE到一个数字数组,我需要学习的是什么。应该很简单,但我还没有找到一个简单的解决办法。

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

编辑:我只想加一句我试过

代码语言:javascript
复制
In [113]: aaa = numpy.fromstring(data)
In [112]: numpy.size(aaa)
Out[112]: 250

但是这个大小是错误的,因为我指定了1000作为句号。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2013-01-25 06:57:57

根据,每个通道都对PCM_FORMAT_S16_LE进行了16位采样签名(小端点字节顺序)。当您使用不带numpy.fromstring参数的dtype时,它默认为float,后者被映射到float64。所以你的1000个16位的样本被转换成只有250个64位的样本。

我认为你应该做的是:

代码语言:javascript
复制
aaa = numpy.fromstring(data, dtype='<i2')

在数据类型中,<表示小枚举,i表示有符号整数类型,2表示16位或2字节长度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14513775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档