У меня есть фрагмент кода, который дает мне getMaxAmplitude() аудио с микрофона. он работает, но значение, безусловно, странно. Мне нужно преобразовать его в децибел. как я могу? Я нашел эту формулу: double db = 20 * Math.log10 (recorder.getMaxAmplitude()/2700.0); но я не знаю, правильно ли это. спасибо.Android: как преобразовать getMaxAmplitude в db?
4
A
ответ
0
Формула верна, но 2700.0 я не знаю, потому что: Предположим, что эта ситуация: У нас есть звук с 16-ю глубиной. Это означает, что мы будем иметь доступные нам значения амплитуды 2^16 («от двух до 16-й мощности») или 65 536 шагов. Поскольку количество шагов делится между положительными и отрицательными значениями (наши гребни и впадины из предыдущего), это означает, что он разделен на 32 767 положительных (плюс ноль) и 32 768 отрицательных значений. Тогда:
db = 20 * log10(peaks/ 32767);
«2700.0» rappresents максимального значения амплитуды сигналов, но я не знаю, на которым битный. С уважением.
SOLVED: double db = 20 * Math.log (recorder.getMaxAmplitude()/2700.0); – Zak
что такое 2700.0? –