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) は表現できません。

-32768 から 32767 の範囲の 16 ビット符号付き整数 (WAV ファイルなど) でエンコードされていると思います。非常に静かな場合、値はおそらく 0 に近くなります。ノイズが多い場合より高い値も表示されます。

0 から 15 の範囲を持つ 4 ビットの符号なし整数を使用して PCM としてエンコードされた正弦波を示すこの図(PCM に関するウィキペディアの記事から) を確認してください。

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 に答える