Я хочу рассчитать громкость звука с помощью Python - возможно, извлекая максимальный объем фрагмента аудио или, возможно, используя более точную меру (RMS?).
Какой лучший способ сделать это? Я посмотрел на pyaudio, но это, похоже, не делало то, что я хотел. То, что выглядело хорошо, было ruby-audio, поскольку в нем, по-видимому, встроен sound.abs.max
.
Входной аудиосигнал будет поступать из разных локальных файлов MP3, продолжительность которых составляет около 30 с.
Я думаю, что RMS будет самой точной мерой. Следует отметить, что мы воспринимаем громкость по-разному на разных частотах, поэтому преобразуем аудио в частотное пространство с помощью fft (numpy.fft должен отлично работать только на 30-х аудио). Теперь вычислим спектральную плотность мощности из этого. Вес PSD по частоте, используя некоторую кривую громкости. Особенно частоты ниже 10 Гц, так как там будет много мощности (он будет доминировать в расчете RMS в домене time-), но мы не можем его слышать. Теперь интегрируйте PSD и возьмите квадратный корень, и это даст пропущенное RMS.
Вы также можете разбить mp3 на разделы или окна и применить эту технику, чтобы дать тома в определенных разделах.
getVolume
.