Kinect 音频 PCM 值

Posted

技术标签:

【中文标题】Kinect 音频 PCM 值【英文标题】:Kinect Audio PCM Values 【发布时间】:2013-06-14 16:20:01 【问题描述】:

我正在使用 kinect 提取音频并对其特征进行分类,但我有一个问题。在http://msdn.microsoft.com/en-us/library/hh855698.aspx 上,它说 audio.start 方法打开一个音频数据流(16 位 PCM 格式,以 16 kHz 采样)并开始捕获从传感器流出的音频数据。问题是我不知道 pcm 数据是如何表示的,也不知道该方法是否返回 pcm 真值。因为使用 sdk 示例,我得到了 200、56、17 之类的值,我认为音频值更像 -3*10^-5 。 那么有谁知道我如何获得真正的 PCM 值?还是我做错了什么?

谢谢

【问题讨论】:

【参考方案1】:

我不希望有任何特定的值。 16 位 PCM 表示它是一系列 16 位整数,因此 -3*10-5 (-0.00003) 无法表示。

我猜它是用 16 位有符号整数(如 WAV 文件)编码的,其范围为 -32768 到 32767。如果你非常安静,值可能会接近 0。如果你制作一个很多噪音,你也会看到一些更高的值。

查看this diagram(来自***的article on PCM),它显示了一个使用 4 位无符号整数编码为 PCM 的正弦波,其范围为 0 到 15。

看看那个 4 位正弦波是如何在 7 附近振荡的?这就是平衡。如果它是一个有符号的 4 位整数(范围为 -8 到 7),它将具有相同的形状,但其平衡将为 0 - 值将移动 -8,因此它将在 0 附近振荡。

您可以测量从平衡点到正弦波最高点或最低点的距离,以获得它的幅度,或者更广泛地说,它是音量(这就是为什么如果你很安静,你通常会在有符号的 16 位数据中查看接近 0 的值)。这可能是您可以做的最简单的特征检测。你可以在网上找到很多关于这个的很好的解释,例如http://scienceaid.co.uk/physics/waves/sound.html

如果您不确定,您可以将其保存到文件中并使用Audacity 之类的内容进行播放。摆弄输入设置,您很快就会弄清楚格式。

【讨论】:

以上是关于Kinect 音频 PCM 值的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 libfreenect 访问 kinect 音频设备

如何使用Kinect Sensor

在语音识别中使用 Kinect Skeleton ID

如何将 Kinect 2.0 的深度数据转换为距离值?

Kinect For Windows V2开发日志二:Kinect V2的基本参数

OpenCV OpenNI 校准 kinect