2010-03-26 3 views
1

C++ 애플리케이션에 여러 개의 PCM 오디오 (G.711)가 있습니다. 나는이 각각의 청크에서 다른 오디오 볼륨을 시각화하고 싶습니다.PCM 샘플의 볼륨 시각화

첫 번째 시도는 각 청크에 대한 샘플 값의 평균을 계산하여이를 볼륨 표시기로 사용했지만이 방법은 효과가 없습니다. 나는 오디오가있는 덩어리에 대해 침묵하고 다른 값을 가진 덩어리에 대해 0을 얻지 만, 값은 단지 슬림하고 실제 볼륨과 닮지 않는 것처럼 보입니다.

볼륨을 계산하는 더 나은 알고리즘은 무엇입니까?

G.711 오디오가 로그 PCM이라고 들었습니다. 어떻게해야합니까?

답변

3

참고 G.711 PCM 오디오를 직접 사용하지는 않았지만 값을 처리하기 전에 인코딩 된 진폭에서 실제 진폭으로 올바른 변환을 수행한다고 가정합니다.

사운드 파형이 0을 기준으로 진동 할 때 대부분의 샘플의 평균값은 대략 0 일 것으로 예상됩니다.

조잡한 부피 계산은 rms (제곱 평균 제곱근), 즉 샘플의 제곱의 롤링 평균을 취하여 그 평균의 제곱근을 취한다. 이것은 약간의 소리가있을 때 선량을 줄 것입니다; 양은 파형에 표시된 전력과 관련됩니다.

사람의 체감에 더 잘 맞는 것이 있다면 Replay Gain에서 사용되는 기술을 조사하는 것이 좋습니다.

2

야심적이라면 ITU 웹 사이트의 download G.711을 사용하고 다음 몇 주 (또는 그 이상)를 구현할 수 있습니다.

게으른 (또는 더 합리적인) 사용자라면 download G.191 대신 G.711 인코딩 된 데이터를 압축하고 압축을 풀 수있는 소스 코드가 포함될 수 있습니다.

일단 해독하면 볼륨을 시각화하면 전체가 개 더 쉬워집니다.