【问题标题】:Measure dB with AVAudioRecorder is limited to 96dB on iOS在 iOS 上使用 AVAudioRecorder 测量 dB 限制为 96dB
【发布时间】:2014-03-24 13:23:13
【问题描述】:

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

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];

提前谢谢你。

【问题讨论】:

    标签: ios avaudiorecorder bitrate decibel


    【解决方案1】:

    了解dB 值只是比率 的表达式,而不是绝对值,这一点很重要。在这种情况下,它是相对于最小值的信号幅度,因此对于 16 位有符号值,您有 20 * log10(2^16) = 96 dB。换句话说,最响亮的信号比最小的信号响亮 96 dB。对于 24 位数据,范围更大:20 * log10(2^24) = 144 dB。然而,满量程信号仍然是相同的。 (请注意,我们更常使用 full scale 作为 0 dB 的引用,并将所有其他值表示为负 dB 值,但引用完全是任意的。

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

    【讨论】:

    • 谢谢,明白了。正如我提到的,我的公式效果很好,但平均 PowerForChannel 值介于 0 和 -160 之间。我目前的问题是我在 96dB 左右达到 0(最大)值(与其他分贝测量应用程序相比)。您是否设法以某种方式将输入信号更改为 24 位? (或者我不需要?我最初帖子中的设置看起来对数据范围没有任何影响)
    • 我认为您仍然没有明白dB 是一个比率,因此是任意。那些“其他应用程序”没有报告 dB SPL - 它们只是返回一个相对于某个任意引用的 dB 值。您可以添加或减去您喜欢的任何 dB 偏移量以使您的值匹配,并且数字将同样有效。如果您的问题是 range,那么请注意消费设备上超过 96 dB 的任何东西都是一个笑话 - 您也许可以将音频分辨率设置为 24 位,但本底噪声会阻止您获得更大的范围比你看到的 16 位。
    猜你喜欢
    • 2018-10-31
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多