Использование Python для измерения громкости звука

Я хочу рассчитать громкость фрагмента аудио с помощью Python — возможно, извлекая пиковую громкость фрагмента аудио или, возможно, используя более точную меру (среднеквадратичное значение?).

Как лучше всего это сделать? Я просмотрел pyaudio, но это не помогло. Я хотел. Что выглядело хорошо, так это ruby-audio, поскольку в него, похоже, встроено sound.abs.max .

Входной звук будет взят из различных локальных MP3-файлов продолжительностью около 30 секунд.


person Sam Starling    schedule 29.05.2011    source источник
comment
PyMedia предоставляет getVolume.   -  person Hank Gay    schedule 30.05.2011


Ответы (1)


Я думаю, что RMS будет наиболее точным показателем. Следует отметить, что мы по-разному воспринимаем громкость на разных частотах, поэтому преобразуйте звук в частотное пространство с помощью fft (numpy.fft должен отлично работать только с 30-секундным звуком). Теперь вычислите из этого спектральную плотность мощности. Взвесьте PSD по частоте, используя некоторую кривую громкости. Особенно частоты ниже 10 Гц, так как там будет много мощности (она будет доминировать при расчете среднеквадратичного значения во временной области), но мы ее не слышим. Теперь интегрируйте PSD и извлеките квадратный корень, и это даст воспринимаемое среднеквадратичное значение.

Вы также можете разбить mp3 на разделы или окна и применить эту технику для придания громкости в определенных разделах.

person Lee McCuller    schedule 29.05.2011
comment
Привет Ли, спасибо за такое подробное описание! Вы прекрасно ответили на мой первый вопрос. - person Sam Starling; 30.05.2011