3

周囲の音を録音し、指定されたデシベルを超えた場合に必要なアクションを実行するアプリケーションを作成しています。

アプリケーションの目的を達成するために、AudioQueueObject.hの次のメソッドを使用しています。

- (void) getAudioLevels: (Float32 *) levels peakLevels: (Float32 *) peakLevels {

UInt32 propertySize = audioFormat.mChannelsPerFrame * sizeof (AudioQueueLevelMeterState);
AudioQueueGetProperty(
self.queueObject,
(AudioQueuePropertyID)kAudioQueueProperty_CurrentLevelMeterDB,
self.audioLevels,
&propertySize);

levels[0] = self.audioLevels[0].mAveragePower;
peakLevels[0] = self.audioLevels[0].mPeakPower;
}

次の一連のクエリがあります

  1. 録音された音は、-60から始まるデシベルの値を示しています。この値は、音が大きくなる瞬間に増加し続けます。このオブジェクトで記録される最大値は0.0000です。これらの値の解釈方法を教えてください。

ドキュメントによると、私たちが得ている値は、アナログに変換する必要があるデジタルデシベルであると書かれています。それを行う方法があるかどうかを提案してください。

前もって感謝します

4

2 に答える 2

11

あなたの混乱の一部はデシベルという用語に関係していると思います.デシベルは、基準に対する値の大きさを表す対数単位です( Decibelを参照)。dB は音圧または騒音レベルを意味するためによく使用されますが、さまざまな種類のデシベルがあります。

kAudioQueueProperty_CurrentLevelMeterDB によって返される値は dBFS (フルスケールのデシベル) です。dBFS はデジタルのみの測定値であり、0 はサンプルに含めることができる最大値を表し (float の場合は 1.0、16 ビット サンプルの場合は 32767 など)、その他の値はすべて負になります。したがって、値が 0.5 の浮動小数点サンプルは、20 * log10 (0.5 / 1.0) = -6.02 であるため、-6 dBFS として登録されます。

あなたがしたいことは、dBFS (デジタル測定) から dBu または dB SPL に変換することです (両方のアナログ測定 - dBu は 0.775 ボルト RMS を基準とし、dB SPL は 20 µPa 音圧を基準とします)。

dB SPL は SI 単位ではないため、音源と耳で測定された基準音圧の比の 20 * log10 を意味します。これらは、ジェット エンジン、削岩機、囁き、銃声などに与えられる通常の値です。

dBFS は、デジタル信号の最大値に対するデジタル信号の値の尺度にすぎないため、目的の変換を正確に実行することはできません。dBu や dB SPL、またはその他の音圧やラウドネスの尺度とは直接関係ありません。

キャリブレーションされたシステムで 2 つの値の関係を判断することは可能ですが、一般的な消費を目的としたアプリケーションの場合、これをどのように攻撃できるかわかりません。考えられるアプローチの 1 つは、さまざまな既知の周波数とサウンド レベルについてマイクの入力レベルを測定し、そのデータを実際に見ているものと相関させることです。

于 2009-08-15T16:10:25.083 に答える
1

デジタル オーディオは、特定の絶対範囲 (CD タイプのオーディオの場合は 32767 ~ -32768、浮動小数点の場合は +1.0 ~ -1.0) のサンプル値で構成されます。Cocoa が浮動小数点オーディオ データを生成すると仮定します。

デシベル値は、音量の相対的な対数尺度です。デシベル値 0 は、音量が可能な限り大きいことを意味します。これは、サンプルの絶対値 +1.0 または -1.0 に相当します。 この以前の質問は、デシベル値をゲインに変換する式を示しています (ゲインは、デシベルとは対照的に、ボリュームの単純な線形乗数です)。式から、-20 dB のデシベル値は .1 のゲインに対応します。これは、サンプルの絶対値が +0.1 または -0.1 になることを意味します。-40 dB は .01 ゲインに相当し、-60 dB は .001 ゲインに相当します。

于 2009-08-15T12:07:17.970 に答える