일상&개발 로그

미디어 음량 표준화 - ReplayGain 적용하기 본문

개발/안드로이드 개발

미디어 음량 표준화 - ReplayGain 적용하기

dskim98 2017. 9. 13. 16:00

미디어 음량 표준화 방법을 찾던 중 ReplayGain이라는 것을 발견 했습니다.

실시간 서비스에서 단말자원으로 다시 encoding을 하는 것이 사실상 불가능하기 때문에 볼륨만 사용해서 음량을 조절하는 ReplayGain은 괜찮은 솔루션으로 생각됩니다.


  1. 적용 배경

    1. 여러 미디어를 재생하는 상황에서 각 미디어의 음량이 다르기 때문에 사용자가 수시로 볼륨을 조절해야 하는 불편을 겪게 됨
    2. 음량이 다른 원인: https://www.seeko.co.kr/zboard4/zboard.php?id=faq&no=7975
  2. 용어 정의
    1. LUFS(Loudness Unit relative to Full Scale)
      인간이 소리를 듣는 행위에 대한 특성들을 수치화 하여 나타내는 단위로, 실제 사람이 '어느정도로 크게 느끼는가'를 표현하는 단위계이다. 
      같은 크기 (같은 dBFS값)라 하더라도 저/고음역 주파수 보다 중음역 (1KHz) 대의 소리를 더 크게 인지하게 되며, 같은 소리라 하더라도 소리가 들려오는 위치에 따라 그 크기를 다르게 인지 (Tiger Effect) 하게 된다. 
      이로인해, LUFS 단위계는 dBFS 와는 다르게 채널별 측정이 아닌, 청음위치에 대하여 하나의 값 만을 가지게 되며, dBFS와는 표현되는 값의 의미가 매우 다르다.

    2. ReplayGain
      2001년에 제안된 음량 표준화 방식으로, MP3나 Ogg등의 소리의 인지적 음량을 평준화하기 위한 수단이다. 트랙이나 앨범을 기준으로 작동하며 현재 이를 지원하는 재생기는 꾸준히 늘고 있다.
      ReplayGain 적용된 player - PowerAMP, Neutron Music Player, Vanilla Music, foobar2000 등등.

  3. Concept
    1. ReplayGain은 Media파일 인코딩 시 Metadata Tag에 특정 값을 추가하여 재생 시 MediaPlayer의 볼륨을 조절한다.
    2. ReplayGain에 사용되는 값은 LUFS로 도출 할 수 있다.
    3. 서버에서 받은 LUFS값을 이용해 ReplayGain 값을 구한 뒤 이를 이용하여 MediaPlayer에 weight를 설정한다.

  4. Function
    1. RG = Lr - L (Lr: reference level, L: loudness of the audio file)
    2. weight = 


- References


Comments