Как определить, насколько громко будет звучать WAV-файл? - PullRequest
12 голосов
/ 12 июня 2009

У меня есть куча разных аудиозаписей в формате WAV (все разные инструменты и высоты), и я хочу "нормализовать" их, чтобы они все звучали примерно одинаково по громкости при воспроизведении.

Я пытался измерить среднюю величину выборки (сумму всех абсолютных значений, деленную на количество выборок), но нормализация с помощью этого измерения не очень хорошо работает. Я думаю, что этот метод не работает, потому что он не учитывает частоту звуков, и я знаю, что высокочастотные записи звучат громче, чем низкочастотные звуки с той же амплитудой.

Кто-нибудь знает хороший метод для измерения громкости звука?

Ответы [ 5 ]

11 голосов
/ 12 июня 2009

Среднеквадратичный квадрат часто используется для оценки громкости звуковых файлов. Это потому, что очень громкий звук может не восприниматься таким образом, если он очень короткий. Также помните, что мощность увеличивается экспоненциально с квадратом амплитуды.

Аудитория Hydrogen Audio знает массу вещей об этом ... посмотрите их бесплатное программное обеспечение Replay Gain Вам, возможно, не нужно вообще заниматься программированием.

РЕДАКТИРОВАТЬ: включены комментарии обратной связи по мощности и амплитуде.

3 голосов
/ 12 июня 2009

Ну, не будучи экспертом в области звука и добавляя к предыдущему комментарию, вы должны выяснить, что вы определяете как «кратчайшее время для пиковой мощности», а затем просто преобразовать волну в необработанную плавающую точку и использовать среднеквадратичное значение над В течение долгого времени и непрерывно принимайте куски этого отрезка времени, найдите МАКС и там вы получите свою максимальную пиковую мощность.

2 голосов
/ 19 июля 2009

Чтобы добавить в ответ PeterAllenWebb:

Перед тем, как рассчитать среднеквадратичное значение, вы должны сначала "центрировать" свою выборку (вспомните 5-минутный .wav, где каждая выборка имеет максимум + амплитуда). Лучший способ сделать это - использовать фильтр верхних частот на дозвуковой частоте.

Это все равно не учитывает частоты, к которым чувствительны люди. Для этого вы можете использовать A-взвешивание. Есть страница, где вы можете рассчитать это онлайн: http://www.diracdelta.co.uk/science/source/a/w/aweighting/source.html

Код, кажется, здесь: http://www.diracdelta.co.uk/science/source/a/w/aweighting/multicalc.js

1 голос
/ 02 марта 2010

Чтобы повторить то, что сказали некоторые другие люди, используйте значение RMS для оценки "громкости" отрывка звука.

Но, если вы имеете дело с импульсивными звуками, такими как выщипывание или удары по барабану, вам нужно сделать скользящее среднеквадратичное значение и выбрать только пиковое среднеквадратичное значение. Измерьте 100 мс звука, сдвиньте окно, повторите измерение и т. Д., А затем нормализуйте в соответствии с наибольшим найденным значением.

Определенно удалите любое значение DC перед выполнением RMS, и A-взвешивание сделает его более похожим на то, как мы слышим. Вот код для A-взвешивания в MATLAB / Octave и Python .

0 голосов
/ 12 июня 2009

Я мог бы быть далеко отсюда, но, если у вас есть wavepad, вы можете загружать несколько файлов и немного возиться с томами, чтобы они все были одинаковыми. Кроме того, если у вас есть определенные разделы файла, которые громче, вы можете выбрать этот раздел и уменьшить громкость для этого одного раздела.

РЕДАКТИРОВАТЬ: И извините, это на самом деле не "метод" для измерения объема, но если вам просто нужно сделать их все равно, это должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...