2016-08-12 6 views
2

AVAudioRecorder.peakPowerForChannel (0)에서 -70에서 약 10까지 진폭 값을 얻고 있습니다. 0에서 120까지의 스케일 값을 필요로합니다. 전체 오디오에서 진폭이 가장 높은 값을 얻어야합니다. 는 AVAudioRecorder! 0에서 120까지의 스케일에서 진폭으로부터 데시벨 값을 가져야합니까?

var numver = 20 * log10(audioRecorder.peakPowerForChannel(0))

인터넷

에이 코드 봤어요하지만 내가 긍정적 인 범위에서 진폭의 값을 얻을 수 있습니다 괜찮나 값이 NaN (숫자를) 제공합니다.

답변

2

peakPowerForChannel() 함수는 대개 -160 dB에서 0 dB까지 로그 스케일 된 데시벨 값을 반환합니다.

전원이 0dB의 레벨을 초과하면 0보다 큰 값을 반환 할 수 있습니다.

0에서 120까지의 값에 대해 선형 눈금으로 변환하려면 다음 수식을 사용하십시오.

let db = audioRecorder.peakPowerForChannel(0) 
let result = pow(10.0, db/20.0) * 120.0 

유지할 또는 최대() 또는 분() 함수 (120)을 초과하는 값을 무시할지 여부를 선택할 수있다.