1

我使用 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 值?还是我做错了什么?

谢谢

4

1 回答 1

1

我不会期望任何特定的值。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之类的内容进行播放。摆弄输入设置,您很快就会弄清楚格式。

于 2013-06-15T03:25:56.580 回答