RMS로 트랙의 음량 높이기


15

버퍼에 저장 한 오디오 트랙의 음량을 계산하려고합니다. 버퍼에는 신호의 PCM 데이터가 포함되어 있으며 Root Mean Squared를 사용하여 얼마나 큰 소리를 얻고 싶습니다. 주파수 도메인으로 전환하지 않고 시간 도메인 에서이 작업을 수행 할 수 있다고 가정합니다. 이 작업을위한 의사 코드는 무엇입니까?

간단히 1 초 동안 (audio [0]-audio [44099], audio [44099]-audio [88199] 등) 샘플링하고 해당 값의 RMS를 계산할까요? 예를 들어, 내가 이것을 할 것입니다 :

RMS=audio[0]2+audio[1]2+audio[2]2.....audio[44099]244100

초마다?


1
위의 표현에 빠진 괄호가 있습니다-직접 추가하되 편집은 적어도 6 자 이상이어야합니다 ...
Paul R

3
@PaulR- <!-- html comment -->드문 경우이지만 완벽하지 않은 게시물에 작지만 매우 중요한 오류가있는 경우 문자 제한 문제를 해결하기 위해를 추가 할 수 있습니다 . 이 요구는 매우 드물게 발생합니다. 일반적으로 개선 할 문자가 6 자 이상입니다. 예를 들어, 괄호 가 빠지면 ​​TeX 에서 \sqrt{}and \frac{}{}구문 을 사용하는 것이 좋습니다 .
Kevin Vermeer

1
@Kevin : 팁 주셔서 감사합니다-나중에 HTML 주석 제안을 사용합니다.
Paul R

@PaulR-이전에 논의되었습니다 : 제한은 의도적이며 불완전하거나 무의미한 편집 ( 여기서는 방어 참조 ) 을 방지하기 위해 고안 되었지만 상대방은 있습니다 ( 여기에서 논의 참조 ).
Kevin Vermeer 12

4
RMS만으로는 소리가 크지 않습니다. 동일한 RMS 값의 3kHz보다 낮은 음량으로 매우 낮거나 높은 주파수. A- 가중치 필터는보다 정확한 추정값을 제공합니다. gist.github.com/148112
endolith

답변:


12

또 다른 것은 RMS 값이인지 음량과 잘 관련이 없다는 것입니다. 대신 레벨 또는 볼륨이라고 부르는 것이 좋습니다. 다른 주파수와 비교하여 귀가 특정 주파수에 얼마나 민감한 지 정량화하는 동등한 음량 윤곽선이 있습니다. Wikipedia article을 참조하십시오 . 이 커브는 레벨에 따라 다릅니다. 예를 들어,이 이미지에서 볼 수 있듯이 귀는 100Hz 톤에 비해 1kHz 톤에 매우 민감합니다 (가로축은 Hz 단위의 주파수).

동일한 음량 윤곽

상대적으로 간단한 작업 중 하나는 PCM 데이터를 거꾸로 한 등가 곡선으로 필터링하는 것입니다. 또는 표준 A 가중치를 적용 할 수 있습니다 . Wikipedia Weighting Filter article을 참조하십시오 . 그런 다음 동일한 라우드니스 가중치 필터 출력의 RMS 값을 계산할 수 있습니다.


질문자 코드에서 이것으로가는 방법이 확실하지 않습니다. 질문의 예는 오디오 샘플의 제곱을 합산하는 것입니다. 대답은 주파수에 필터를 적용하는 것에 관한 것이므로 "반전 된 동일한 음량 곡선으로 PCM 데이터를 필터링"하는 것만으로는 충분하지 않습니다. 먼저 각 주파수에 대한 값을 가져와야 곡선을 올바르게 적용하는 방법을 알 수 있습니까? 그러나 그것은 큰 걸음입니다.
gman

@gman 아이디어는 필터로 오디오를 전처리 한 다음 질문과 같은 결과를 사용하는 것입니다 (RMS 계산). 무슨 말인지 100 % 확실하지 않습니다. 필터링 또는 필터 디자인을 수행하는 방법을 잘 모르십니까?
niaren
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.