오디오 신호의 볼륨을 결정하고 싶습니다. 진폭 신호의 볼륨을 가장 잘 결정하는 방법은 무엇입니까?
- 계산 루트 평균 제곱 찾을
가 # 1 또는 # 2를 사용하는 이점이 있는가 최대 진폭 :
나는 두 가지 옵션을 발견했다?
다음은 내가 수행하려고 시도한 것입니다. Android에서 마이크의 오디오를 분석하고 싶습니다. 기기가 시끄러운 소리를 감지하기를 바랍니다. 입력은 짧은 []입니다.
오디오 신호의 볼륨을 결정하고 싶습니다. 진폭 신호의 볼륨을 가장 잘 결정하는 방법은 무엇입니까?
가 # 1 또는 # 2를 사용하는 이점이 있는가 최대 진폭 :
나는 두 가지 옵션을 발견했다?
다음은 내가 수행하려고 시도한 것입니다. Android에서 마이크의 오디오를 분석하고 싶습니다. 기기가 시끄러운 소리를 감지하기를 바랍니다. 입력은 짧은 []입니다.
최대 진폭 (2)을 사용하는 경우 볼륨 레벨은 단일 샘플 (사용자가들을 수 없을 수도 있음)에 의해 결정됩니다. Sound Pressure Level이나 Sound Power Level과 같은 사운드의 소리 크기와 관련된 값을 계산할 때는 RMS (1)를 사용해야합니다.
귀가 모든 주파수에 똑같이 민감하지 않으므로 신호에 A-weighting을 사용하면 귀의 인지도가 높아집니다. 신호를 옥타브 밴드로 분할 (필터링)하고 각 밴드의 RMS를 계산하고 A- 가중치를 적용합니다. 당신은 볼륨 레벨을 확인 단지의 dB 값을 계산하려면
(I는 신호가 즉 1 == 최대 수준의 정규화 가정) :
level[n] = - 20 x log(1/signal[n]);
그러나, 오디오 잡음을 검출하는 것은 간단한 작업이 아니다. 가장 일반적이며 간단한 기법은 기본적으로 신호 레벨을 dB와 비교하는 NoiseGate 알고리즘을 사용하는 것입니다. 임계 값 - 신호 레벨이 임계 값보다 높으면 출력이 0입니다. 그러나 실제로는 사용할 수 없다. 부드러운 thresholding을위한 Attack 및 Release 시간이 있어야합니다. 그렇지 않으면 실제 신호 (음악, 음성)에 영향을 미치고 클리핑 (clipping)을 생성합니다.
구글, 그것은 당신에게 NoiseGate 알고리즘 및 노이즈 제거 기술에 대한 자원을 많이 줄 것이다 확인 :
http://en.wikipedia.org/wiki/Noise_gate
http://www.developer.com/java/other/article.php/3599661/Adaptive-Noise-Cancellation-using-Java.htm
오디오 신호의 종류는? 왜 그 볼륨이 필요한가요? (당신을 괴롭히지 않기 위해서, 나는 정말로 모르는 사이에 당신의 질문에 대답하기가 어렵다고 믿는다.) – zrxq
나는 질문을 조정했다. – gregm