Как получить уровень дБ (или любой другой уровень громкости) с микрофона в Java? - PullRequest
2 голосов
/ 27 апреля 2011

Мне очень жаль, если я спрашиваю что-то уже спросили, но я посмотрел везде, и ничего не пришло.

Я пытаюсь на лету прочитать текущую громкость звука вкомната, использующая звук Java API.я заметил, что элементы управления, которые я получаю от своего микрофона, микшер не помогает с этим, и из того, что я видел, люди предлагают прочитать небольшой кусок звука из TargetDataLine и проверить громкость с помощью алгоритма Root Mean Square.

актуальный вопрос :) проблема в том, что всякий раз, когда я запускаю среднеквадратичное значение для выборки (для этого я использую PCM_SIGNED, 44100 Гц, 16 бит), я получаю значения в диапазоне 20-30, когда естьбез фонового шума и до 60, когда я говорю / орать / говорить.(Я попытался прочитать строку из буфера размером 100-44100 с меньшими размерами буфера, среднеквадратичное значение ниже - но в целом - тишина составляет около 10, а громкий шум - около 30.)

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

tl; dr может кто-нибудь (пожалуйста) подсказать мне способ узнать объем из чтения байтового массива (PCM)ПОДПИСАНО 44100 Гц 16 бит)

Заранее благодарю за ответы!

1 Ответ

2 голосов
/ 27 апреля 2011

См. этот ответ для RMS.

...