meassure 음압 레벨의 안드로이드 앱을 개발하고 싶습니다만 시간 가중치를 구현하는 방법을 잘 모르겠습니다. 내 알고리즘으로 작동하는 순간 은 다음과 같습니다 오디오의SPL 미터에서 시간 가중치를 구현하는 방법은 무엇입니까?
- 기록이 20ms (8000Hz @ 160 개 샘플)
- 계산 RMS
- 계산 SPL
- 업데이트 값을 표시하고 다시
여기 알고리즘의 주요 부분을 볼 수 있습니다 :
// The Google ASR input requirements state that audio input sensitivity
// should be set such that 90 dB SPL at 1000 Hz yields RMS of 2500 for
// 16-bit samples, i.e. 20 * log_10(2500/mGain) = 90.
double Gain = 2500.0/Math.pow(10.0, 90.0/20.0);
// This method is called every 20ms:
@Override
public void processAudioFrame(short[] audioFrame) {
// Compute the RMS value.
double rms = 0;
for (int i = 0; i < audioFrame.length; i++) {
rms += audioFrame[i]*audioFrame[i];
}
rms = Math.sqrt(rms/audioFrame.length);
final double rmsdB = 20.0 * Math.log10(rms/Gain) + refSPL;
// refSPL is obtained by calibration with a professional spl meter
}
나는 소리 수준 측정기의 등급이 빠름, 느림 또는 충동 시간에 가중 될 수 있음을 알고 있습니다. 하지만 어떻게 알고리즘 알고리즘에서이 시간 가중치를 구현할 것인지 잘 모르겠습니다.
Q : 시간 가중치는 측정 된 dB 값을 업데이트 한 후에 의미합니까?
Q : 빠른 가중 결과를 얻으려면 업데이트 간격을 125ms로 변경해야합니까, 아니면 완전히 잘못 되었습니까? 대부분의 악기로 지원
사운드 레벨 미터가 처음 만들어진