5

iPhone用のシンプルな音量計を作ろうとしています。音量をdBで表示したい。この turorialを使用すると、最大 78 dB の測定しか得られません。これは、16 ビット オーディオ録音の dBFS スペクトルがわずか 96 dB であるためだと読んだことがあります。

init 関数でこのコードを変更してみました:

dataFormat.mSampleRate = 44100.0f;
dataFormat.mFormatID = kAudioFormatLinearPCM;
dataFormat.mFramesPerPacket = 1;
dataFormat.mChannelsPerFrame = 1;
dataFormat.mBytesPerFrame = 2;
dataFormat.mBytesPerPacket = 2;
dataFormat.mBitsPerChannel = 16;
dataFormat.mReserved = 0;

録音のビット値を増やすことを期待して、mBitsPerChannel の値を変更しました。

dataFormat.mBitsPerChannel = 32;

その変数を 32 に設定すると、「mAveragePower」関数は 0 のみを返します。

では、どうすればより多くのデシベルを測定できますか? 私のコードはすべて、上に投稿したチュートリアルと実質的に同じです。

前もって感謝します、トーマス

4

1 に答える 1

5

16 ビット オーディオのダイナミック レンジは 96しかありませんが、相対測定値である と音圧レベルの絶対測定値である のdB間で混乱しているのではないかと思います。ただし、dB SPL を測定するには、マイクとオーディオ ハードウェアを何らかの基準で調整する必要があります。入力を校正したら、96のダイナミック レンジが、たとえば 44 ~ 140の絶対範囲に変換される可能性があります。dBdB SPLdBdB SPLdB SPL

SO に関する以前の同様の質問に対する私の回答も参照してください:オーディオ dB レベルを計算するにはどうすればよいですか?

注: dB SPL の定義は、20 µPa (rms) に対する音圧レベルです。

于 2010-03-30T20:01:26.733 に答える