Я пытаюсь сделать метр простого тома для iPhone. Я хочу, чтобы объем был отображен в дБ. При использовании этого turorial я только получаю измерения до 78 дБ. Я считал, что это вызвано тем, что dBFS спектр для аудиозаписей на 16 битов составляет только 96 дБ.
Я пытался изменить эту часть кода в функции 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.
Так, как я могу измерить больше децибелов? Весь мой код является практически тем же как в учебном руководстве, которое я отправил выше.
Заранее спасибо, Thomas
16-битный звук имеет только динамический диапазон 96 дБ
, но я подозреваю, что вы можете запутаться между дБ
, что является относительное измерение и дБ SPL
, которое является абсолютным измерением уровня звукового давления . Однако для измерения уровня звукового давления в дБ вам необходимо откалибровать микрофон и аудиооборудование с помощью какого-либо эталона. После калибровки входа ваш динамический диапазон 96 дБ
может быть преобразован в абсолютный диапазон, скажем, от 44 дБ SPL
до 140 дБ SPL
.
См. Также мой ответ на предыдущий аналогичный вопрос о SO: Как я могу рассчитать уровень звука в дБ?
Примечание: определение дБ SPL - это уровень звукового давления относительно 20 мкПа (среднеквадратичное значение).