Kinect音频PCM值

时间:2013-06-14 16:20:01

标签: c# c++ audio kinect wav

我使用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 个答案:

答案 0 :(得分: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附近振荡。 / p>

您可以测量从平衡到正弦波的最高点或最低点的距离,以获得其幅度,或者广义上,它的音量(这就是为什么如果你很安静,你将主要在签名的16位数据中查看接近0的值)。这可能是您可以执行的最简单的功能检测。您可以在网上找到大量有关此问题的好解释,例如http://scienceaid.co.uk/physics/waves/sound.html

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