Kinect Audio PCM Values
Kinect Audio PCM Values
我使用kinect提取音频并对其特征进行分类,但我有一个问题。在http://msdn.microsoft.com/en-us/library/hh855698.aspx上显示音频。打开音频数据流(16位PCM格式,16 kHz采样)并开始捕获从传感器流出的音频数据流。问题是我不知道pcm数据是如何表示的,我不知道该方法是否返回pcm真值。因为使用sdk示例,我得到像200,56,17这样的值,我认为音频值更像是-3*10^-5。有人知道我怎么得到真正的PCM值吗?还是我做错了什么?
谢谢
我不期望任何特定的值。16位PCM表示它是一系列16位整数,因此-3*10-5(-0.00003)是不可表示的。
我猜它是用16位带符号整数(如WAV文件)编码的,其范围为-32768至32767。如果你非常安静,这个值可能会接近于0。如果你设置很多噪点,你也会看到一些更高的值。
查看这张图(来自维基百科关于PCM的文章),它显示了使用4位无符号整数编码为PCM的正弦波,其范围为0到15。
看到4位正弦波是如何在7附近振荡的吗?这是平衡。如果它是一个带符号的4位整数(范围为-8到7),它将具有相同的形状,但它的平衡值将为0 -值将移动-8,因此它将在0附近振荡。
您可以测量从平衡到正弦波的最高点或最低点的距离,以获得其振幅,或者更广泛地说,它的体积(这就是为什么如果您安静,您将在带符号的16位数据中大部分看到接近0的值)。这可能是你能做的最简单的特征检测。你可以在网上找到很多很好的解释,例如http://scienceaid.co.uk/physics/waves/sound.html.
如果你不确定,你可以把它保存到一个文件中,然后用Audacity之类的工具回放。修改一下输入设置,你很快就会知道格式了。
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- C++ - 对 PCM::getInstance() 的未定义引用问题
- 将 Uint8(浮点AUDIO_F32)转换为int16_t(16 位 PCM)
- 捕获音频数据并保存到AudioFlinger中的原始PCM文件
- 在没有 <limits.h> 或 <values.h> 的系统上查找SHRT_MAX
- 如何将 WebM 文件解码为原始 PCM?
- 在哪里可以从Android框架中获取原始的PCM数据
- 如何计算C++中非重复值的数量 std::map<Key,Values>
- 配置 AVCodecContext 结构以从原始 PCM 编码到 u-law
- std::copy with return values - 防止"expression: string iterators incompatible"的更好方法?
- XMVECTOR weird values
- 如何使用GStreamer播放PCM数据数组
- Understanding glClearColor values
- MPG123将mp3解码为C 中的PCM
- 如何使用IMFSinkWriter编写内存PCM数据
- Protobuf default values
- 如何在C++中为PCM缓冲音频添加音效
- 在 C/C+ 中从 16 位线性 PCM 音频转换为 32 位浮点数的最佳方法
- 热在Cygwin上安装Values.H标头(C / C ++)
- Kinect Audio PCM Values