0

アプリ内の機能のロックを解除する dB 測定を構築しようとしています。ユーザーが 100dB に達すると、この機能が利用可能になります。私の現在の実装では、最大 96dB までしか測定できません。私が理解していることから、問題はビットレートの記録に何らかの形で関連しています: 16bit は 96dB しか対応できません。神話爆発)。

dB 測定と計算は正常に機能します。私の唯一の問題は、96dB 以上を測定できないことです。より高いビットレートを達成するための設定に苦労しています。ここで何か間違っていると思います。

レコーダーの現在の初期化は次のようになります。

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                      [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                      [NSNumber numberWithInt: kAudioFormatAppleIMA4],       AVFormatIDKey,
                      [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                      //[NSNumber numberWithInt: 24],                         AVEncoderBitRateKey,
                      [NSNumber numberWithInt:24],AVLinearPCMBitDepthKey,
                      [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
                      [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
                      [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                      nil];

NSError *error;

recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:settings error:&error];

前もって感謝します。

4

1 に答える 1

0

値は比率dBの表現であり、絶対値ではないことを理解することが重要です。この場合、最小値に対する信号の大きさであるため、16 ビットの符号付き値の場合は. つまり、最も大きな信号は、最も小さな信号よりも 96 dB 大きくなります。24 ビット データの場合、範囲ははるかに大きくなります。ただし、フルスケール信号は同じのままです。(より一般的にはの基準としてフルスケールを使用し、他のすべての値を負の値として表現しますが、基準は完全に任意であることに注意してください)。20 * log10(2^16) = 96 dB20 * log10(2^24) = 144 dB0 dBdB

混乱の一般的な原因は、人々がの大きさについて話すとき、「dB」と言いますが、実際に言及しているのはdB SPLであり、これは特定の基準値(20 µPa (rms))に対するラウドネスを定義する方法です。)。これを上で計算している値と混同しないでくださいdB。これらは単純な比率であり、ラウドネスとは直接関係ありません。

于 2014-03-24T13:37:05.983 に答える