2012-11-29 2 views
4

У меня есть фрагмент кода, который дает мне getMaxAmplitude() аудио с микрофона. он работает, но значение, безусловно, странно. Мне нужно преобразовать его в децибел. как я могу? Я нашел эту формулу: double db = 20 * Math.log10 (recorder.getMaxAmplitude()/2700.0); но я не знаю, правильно ли это. спасибо.Android: как преобразовать getMaxAmplitude в db?

+0

SOLVED: double db = 20 * Math.log (recorder.getMaxAmplitude()/2700.0); – Zak

+2

что такое 2700.0? –

ответ

0

Формула верна, но 2700.0 я не знаю, потому что: Предположим, что эта ситуация: У нас есть звук с 16-ю глубиной. Это означает, что мы будем иметь доступные нам значения амплитуды 2^16 («от двух до 16-й мощности») или 65 536 шагов. Поскольку количество шагов делится между положительными и отрицательными значениями (наши гребни и впадины из предыдущего), это означает, что он разделен на 32 767 положительных (плюс ноль) и 32 768 отрицательных значений. Тогда:

db = 20 * log10(peaks/ 32767); 

«2700.0» rappresents максимального значения амплитуды сигналов, но я не знаю, на которым битный. С уважением.

 Смежные вопросы

  • Нет связанных вопросов^_^