2012-05-05 5 views
1

나는 wav 파일을 가지고 있으며, 내가 필요한 것은 놀랄만 한 사운드 강도가 재생 될 때 기능을 수행하는 것입니다.시간에 따라 내 WAV 파일의 음향 진폭을 얻는 방법은 무엇입니까?

예 : 사운드 레벨 10 (예상 됨)이 재생 중일 때 나는 사운드의 강도 레벨이 10에서 증가 할 때마다 놀라운 사운드가 있음을 알리기 위해 이벤트가 트리거되어야합니다. .

나는 그것을 시도하고 우리가 wav 파일의 바이트를 읽고 44 번째 바이트 이후에 데이터 청크를 읽으면 우리는 사용자 데이터 (사운드 데이터)를 얻는다. 하지만이 데이터를 분석 할 때 사운드가없는 동일한 데이터가 있기 때문에 혼란스러워했습니다.

나는 내 질문이 아주 분명하기를 바랍니다. 제안 사항/아이디어 및 참고 자료가 필요합니다.

답변

3

FFT가 필요하지 않습니다. 단기 RMS 전력을 계산할 수 있으며,이 값이 미리 결정된 임계 값을 초과하면 "큰 소리"를냅니다. x는 샘플 값이고 N은 RMS 전력을 계산하고자하는 동안 샘플의 수입니다

power_RMS = sqrt(sum(x^2)/N) 

- 나는 기간을 이용하여 제안은 44.1 kHz의 샘플에서 N = 441 개 샘플을 제공하는 10 밀리 말 율.

+0

이 줄을 자세히 설명해 주시겠습니까? "44.1 kHz 샘플 속도에서 10 ms = 441 샘플을 말하는 것이 좋습니다." – azeem

+0

간단 - 파형의 N 개 샘플 블록마다 power_RMS를 계산하면됩니다. 441kHz 샘플링 속도를 사용하는 경우 N = 441을 사용하도록 제안했지만 특정 응용 프로그램에 따라 블록 크기를 실험 해 볼 수 있습니다. –

+0

내가 이것을 시도하자. – azeem

관련 문제