오디오 신호의 이해 - time domain features

응큼한포도·2024년 4월 21일
0
post-thumbnail

Amplitude envelop

프레임의 샘플 중에 가장 aplitude가 높은 값을 말한다.

좌변은 프레임t에서 가장 높은 값을 의미한다. 우변은 프레임의 첫 번째 샘플부터 마지막 샘플까지 샘플의 aplitude중에서 최대값을 찾는 식이다.

예제로 위의 파형에서 프레임을 나눴을 때 가장 높은 amplitdue의 값이 저렇게 초록색으로 계산된 걸 알 수 있다.

Amplitude envelop을 이용해서 소리가 얼마나 큰 지 대충 추정할 수 있고 음악장르 또한 추측할 수 있다.

Root-mean-square energy

Root-mean-square는 물리나 수학에서 고전적으로 사용되는 테크닉이다. 이 Root-mean-square의 뜻은 일단 모든 값들에 제곱을 해서 평균을 내고 거기에 루트를 씌워준다는 말이다.

왜 평균을 바로 안 구하고 제곱해서 평균낸 뒤 루트를 씌워주냐?

오디오 신호의 진폭에서 음압의 값이 음수가 되는 경우가 있다. 파형이 반전된 경우 음수가 되는 데 우리가 평균을 구하는 이유는 음의 대표적인 값으로 평균을 해서 파동을 대충 알기 쉽게하기 위해서이다. 근데 음수와 양수가 섞였다고 해봐

그냥 평균은 음수와 양수를 더해야 하는 데 아다리가 잘 맞아서 평균이 0이나 그 근처값이 될 수 있다. 실제 파동은 음압이 존재하는 데 그 대푯값이 0이다?
대푯값만 보면 파동이 없는 걸로 해석되는 거 아니냐?

Root-mean-square에서 제곱을 왜 해주냐 음수를 없애서 더하기 때문에 대표값이 0이 되는 걸 방지해주기 때문이다. 그리고 제곱의 평균에 루트를 씌워줘서 그나마 평균의 의미와 비슷하게 값을 내준것이고

식은 위와 같은데 처음 샘플부터 마지막 샘플까지 음압을 제곱한뒤 평균 내주고 거기에 루트 씌워주면 된다.

Zero crossing rate


이름 그대로 신호가 0값을 얼마나 지났는지 빈도를 체크하는 거다.


식은 위와 같은데 sgn()함수는 샘플 값의 부호만 따진거다. 그래서 저건 뭐냐? 샘플이 부호가 다를 때만 절대값이 2가 된다. 부호가 같으면 0이 되고
그럼 저 식은 뭐겠냐 신호의 부호가 다를 때만 1로 둬서 신호가 다른 전체값을 찾는 과정이다.

이거 왜 구하냐?

음원중에 중요한 특징이 주파수이다. 주파수는 1초에 얼마나 진동하는 지 알아야하는데 우리가 이상적으로 알고 있는 파동이야 바로 구할 수 있지만 소리가 어떻게 이상적이겠냐. 그리고 실제 파동을 아는게 아니라 샘플링으로 쪼개서 얻은 데이터로 파동을 추측하는 거라 실제 파동은 절대 모른다.

그럼 기계가 대충 주파수를 추정할 수 있는 방법이 뭐겠냐. 특정 시간대에 부호가 얼마나 바뀌는 지 측정해서 주파수를 대충 추정할 수 있겠지? 그게 Zero crossing rate이걸 구하는 이유여.

출처

https://www.youtube.com/watch?v=SRrQ_v-OOSg&list=PL-wATfeyAMNqIee7cH3q1bh4QJFAaeNv0&index=7

profile
미친 취준생

0개의 댓글