Python: получить уровень громкости децибела в режиме реального времени или из файла WAV - PullRequest
0 голосов
/ 23 октября 2018

Для работы над проектом мне нужно измерить уровень громкости либо из записанного аудиофайла, либо в режиме реального времени, используя микрофон.После основного исследования я попытался использовать библиотеку звуковых файлов.Файл был прочитан с использованием звукового файла и с использованием 20*np.log10(np.sqrt(np.mean(np.absolute(a)**2))), я рассчитал значение дБ.Я получаю отрицательное значение для звукового файла.Но нормальный звук может быть в диапазоне 50-70 дБ, и я получаю отрицательное значение.Кто-нибудь может мне помочь разобраться в этом?

1 Ответ

0 голосов
/ 23 октября 2018

Краткий ответ: дБ не совпадает с дБ.Ваши результаты, вероятно, верны.

Длинный ответ: уровни дБ всегда определяют отношение к некоторому контрольному значению. Для аудио / акустики есть много опорных значений , и вам нужно указать, какое из них вы используете для значения в дБ, чтобы иметь смысл.Когда вы говорите,

нормальный звук может находиться в диапазоне 50-70 дБ

, это не совсем точное утверждение, вы, вероятно, имеете в виду

нормальный звук может находиться в диапазоне 50-70 дБ SPL

, где вы задаете значение относительно эталонного уровня звукового давления 20 мкПа .

В цифровых системах звуковые файлы обычно представлены плавающими числами < 1, тогда мы говорим о дБ FS (полная шкала дБ) с эталонным значением 1. По законам математики, значения дБ FSявляются отрицательными.

Также ясно, что вы не можете напрямую связать значения FS в дБ со значениями SPL в дБ: если вы воспроизводите один и тот же аудиофайл (т. е. берете некоторое значение FS в дБ) и воспроизводите его дважды, но повернитеРегулятор громкости вашего динамика, это приведет к двум различным значениям дБ SPL (что вы слышите).

...