2012-11-29 22 views
4

나는 마이크에서 오디오의 getMaxAmplitude()를주는 코드를 가지고있다. 작동하지만 값은 분명 이상합니다. 데시벨로 변환해야합니다. 어떻게 할 수 있습니까? 다음 수식을 발견했습니다. double db = 20 * Math.log10 (recorder.getMaxAmplitude()/2700.0); 하지만 그것이 정확한지 나는 모른다. 덕분에 .Android : getMaxAmplitude를 db로 변환하는 방법?

+0

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

+2

무엇이 2700.0입니까? –

답변

0

수식은 정확하지만 2700.0은 다음과 같은 이유로 알 수 없습니다. 다음 상황을 가정하십시오. 우리는 16 비트 깊이의 사운드를 가지고 있습니다. 이것은 우리가 사용할 수있는 2^16 ("2에서 16 승") 다른 진폭 값, 즉 65,536 단계를 갖게됨을 의미합니다. 계단의 수는 양수와 음수로 나누어 져 있기 때문에 32,767 개의 양수 (플러스 0)와 32,768 개의 음수 값으로 나뉩니다. 그러면 :

db = 20 * log10(peaks/ 32767); 

신호의 "2700.0"rappresents 최대 진폭 값,하지만 느릅 비트 깊이 알지 못한다. 감사합니다.