Loudness
loudness는 사람이 인지하는 소리 크기를 반영하여 나타낸다.
Root Mean Square (RMS), LUFS (Loudness Units Full Scale)가 대표적으로 있다.
그 중에서 사람의 frequency 별로 다른 resolution으로 인지하는, 심리 음향적 입장을 제대로 반영한 LUFS를 통해 signal level을 어떻게 조정하는지 살펴보자.
기존에 LUFS로의 signal level을 어떻게 조정하는지에 대해서 글을 쓴 적이 있다.
pyloudnorm의 integrated_loudness는 dB LUFS 값을 내보낸다.
https://2bman.tistory.com/14https://2bman.tistory.com/14
본 글에서는 "어떻게" 조정하는 지에 대해서 그 과정을 내 나름대로 서술해보려고 한다.
어떤 signal sequence가 있다고 할 때 현재의 level을 $$ sequence = \frac{mag_{trg}}{mag_{cur}} $$ \( mag_{cur} \)라고, target으로 하는 signal 크기를 \( mag_{trg} \)라고 하자.
그러면 signal level을 조정할 때 아래를 통해 조정하면 되겠다.
$$ sequence = \frac{mag_{trg}}{mag_{cur}} * sequence $$
이 LUFS 값은 dB와 같이 log scale이기 때문에
\( L_{trg} = 20 \log_{10}{mag_{trg}} \)
\( L_{cur} = 20 \log_{10}{mag_{cur}} \)
로 볼 수 있고 target과 현재의 loudness LUFS인 L의 차이를 구해보면 다음과 같다.
\( L_{trg} - L_{cur} = 20 \log_{10}{\dfrac{mag_{trg}}{mag_{cur}}} \)
이를 magnitude 기준으로 식을 바꾸면 아래와 같다.
$$ \dfrac{mag_{trg}}{mag_{cur}} = 10^{\dfrac{L_{trg} - L_{cur}}{20}} $$
이렇게 되면 기존 signal sequence에 곱할 상수값을 log scale 상에서 선형 scale로 바꾸어 기존 가지고 있던 level 대비
target level을 얼만치 곱해주어야 하는지에 대한 weighting factor이 계산된다.
$$ sequence = \frac{mag_{trg}}{mag_{cur}} * sequence $$
'통계적 신호처리' 카테고리의 다른 글
Circular convolution 계산법과 언제 linear convolution과 같아지나 살피기 (0) | 2023.05.24 |
---|---|
음원 분리를 위한 mixture 생성 시 고려할 점 (1) | 2023.05.20 |
내적, cosine similarity, projection 정사영 한번에 짚기 (1) | 2023.05.17 |
Block convolution인 Overlap add과 Overlap save (0) | 2023.04.29 |
Random process와 signal (0) | 2023.04.08 |