5

メソッドの返される単位が何であるかを誰かが知っていますか?

 MediaRecorder.getMaxAmplitude();

Android MediaRecorder APIのドキュメントには、このメソッドが最後の呼び出し以降にサンプリングされたポイントの最大絶対振幅を返すことのみが示されていますが、単位は指定されていません。パスカル、ミリパスカル、その他ですか?

4

3 に答える 3

6

私自身といくつかの大学が詳細な調査を行った結果、この結論に達しました。この質問に対する回答は、私の知る限り完全ではありませんでした。そのため、この質問に対する独自の回答を書いています。

MediaRecorder.getMaxAmplitude() 関数は、符号なし 16 ビット整数値 (0 ~ 32767) を返します。これらの値は、通常の CD 品質のサンプル値と同様に、-32768 … +32767 で abs() を使用して計算される可能性があります。負の振幅はミラーリングされるだけなので、振幅は常に正です。

値は、具体的な較正された物理的特性とは関係ありません。したがって、値は 0 ~ 100% (そのマイクの最大電圧範囲) の電気出力を 16 ビットでデジタル化したものにすぎません。

マイクロホンは、音圧 (パスカル) を直線的に電圧に変換します。したがって、API によって報告される値は音圧と相関しますが、使用されるデバイスごとに異なり、ブランド、モデル、および特定のデバイス (回路、アンプなど) に大きく依存します。電話のマイクを信頼できる音圧計に調整します。

于 2012-06-08T19:14:03.823 に答える
3

値のMediaRecorder.getMaxAmplitude()範囲は 0 ~ 32,767 です

(注: 32,767 は符号付き整数の最大値です)

単位は標準ではありません。

私のアプリでは、通常、18000 を超える値を「うるさい」として扱います。これは、最大値の約 50% です。

于 2012-05-23T10:35:38.950 に答える
0

測定単位は、デバイスまたはマイクごとに異なります。知りたい場合は、キャリブレーションされたソースまたは測定機器に対して特定の各マイクロフォン モデルをテストする必要があります。

于 2012-05-22T14:58:19.540 に答える