0

我正在尝试构建 dB 测量以解锁应用程序中的功能。一旦用户达到 100dB,该功能应该可用。我目前的实现只能测量到 96dB。据我了解,问题与比特率记录有某种关系:16 位只能达到 96 分贝,24 位应该能达到 144 分贝(http://www.head-fi.org/t/415361/24bit-vs-16bit-神话爆炸)。

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 位有符号值,您有20 * log10(2^16) = 96 dB. 换句话说,最响亮的信号比最小的信号响亮 96 dB。对于 24 位数据,范围要大得多:20 * log10(2^24) = 144 dB. 然而满量程信号仍然是相同的。(请注意,更常见的是我们使用满量程作为 的参考0 dB,并将所有其他值表示为负值dB,但参考完全是任意的)。

一个常见的混淆来源是,当人们谈论声音的响度时,他们说的是“dB”,但他们实际上指的是dB SPL,这是定义相对于给定参考值(20 µPa (rms) )。不要将此与dB您在上面计算的值混淆,它们是简单的比率,与响度没有直接关系。

于 2014-03-24T13:37:05.983 回答