KAIST 문화기술대학원의 GCT634 수업 자료로 공부한 내용입니다. 수업을 직접 들은 것은 아니라 혼자 자료로만 공부한거라 틀린 부분이 있을 수 있음!
Types of Music Data
- 오디오: mp3, wav
- 악보 (symbolic): 미디, typesetting 스크립트 언어 (MusicXML 등)
- image: 스캔된 악보, 앨범 커버, 공연 영상
- text: 메타데이터, 태그, 가사, 리뷰
- user data: 청취 이력, 평가
Types of Audio Data Representation
- 파형(디지털 오디오 샘플): 샘플링, 양자화
- 스펙토그램: short-time FT
- mel-spectogram: human pitch perception. 음성 데이터 분석에 주로 쓰임
- constant-Q transform: 음계(반음계)로 변환. data series를 frequency domain으로 transform함
Digital Audio Chain
mic -> lowpass filter -> sampling -> quantisatoin -> D2A conversion -> lowpass filter -> amp -> speaker
Sampling and Quantisation
- 순간적인 값을 주기적으로 선택해 연속된 time signal을 이산 time signal으로 변환
- 숫자들의 seq으로 표현
- sampling 주기(Ts): 몇 초에 한 번 샘플링하는지
- sampling rate: fs = 1/Ts
- notation: x(t) -> x(nTs)
읽어볼 것
- Sound Data Representation
- time/freq domain, 샘플링, 양자화에 대한 기본 개념이 쉽게 설명돼 있음
Sampling Theorem
- sampling rate(1초에 얼마나 sampling할 것인지)를 얼마로 설정할 것인가?
- 너무 높으면 데이터 사이즈가 커짐
- 너무 작으면 원래 신호를 reconstruct 할 수 없다
- sampling theorem
- 원래 신호를 재구성하려면 sampling rate가 신호의 최대 주파수의 두 배 이상이어야 함
- fs > 2*fm
- sampling rate의 절반은 nyquist freq라 부름
- fs < 2 * fm인 경우 fold된다
Sampling Rate
- 신호 또는 청력 제한의 대역폭에 의해 결정됨
- 음악(CD): 44.1 kHz(소비자), 48/96/192 kHz(전문)
- speech communication: 8 kHz
Sampling Rate Conversion (Resampling)
- upsampling과 downsampling
- upsampling: sampling freq를 증가히켜 더 높은 freq에서 아날로그로 변환
- downsampling: sampling freq를 감소시킴
- 데이터 사이즈를 줄이기 위해 44.1kHz의 CD 음악이 22.05kHz 이하로 종종 downsampling 됨
- signal interpolation(사이를 채워줌)으로 계산됨
- downsampling 전에 low pass filter를 통과시켜 aliasing noise 방지
- windowed sinc function
Quantisation
- real-value 신호의 진폭을 이산화함
- 진폭을 가장 가까운 step으로 반올림
- step은 비트 수에 의해 결정됨
- N 비트로는 -2^(N-1) ~ 2^(N-1)-1의 데이터를 표현할 수 있다
- 신호의 dynamic range에 의해 결정됨
- LSB에 1비트 추가하면 음량이 6dB 증가
- CD: 16비트 -> 96dB
- speech communication: 8비트 -> 48dB
Loading Audio Files
- sampling rate와 bit depth 체크
- Audacity
- 필요하면 resampling(주로 downsampling)을 함
- Librosa는 오디오 파일을 로드할 때 resampling 제공
Waveform
- 파형은 오디오를 자연스럽게 표현하지만 내용 분석에 제한이 있다
- 주로 시간 에너지를 보여줌
- 매 순간의 음악을 측정해 그 수치를 저장한 형태. 음악을 분석하기에 적합하지 않다
- 우리의 음의 높이와 세기를 듣는 것이지 순간의 음압을 듣는게 아님
- FT와 같은 변환 기법을 사용해 time 축의 데이터를 freq 축의 데이터로 바꿔줘야 할 필요가 있음
- 이때 constant Q 변환을 사용하는데, 이 변환은 freq 축이 log 단위로 변환되고, 각 주파수에 따라 해상도가 다양하게 처리되기 때문에 (저주파는 저해상도, 고주파는 고해상도) 음악을 처리하는데 FT보다 유리함
Spectrogram
- short-time FT를 사용해 2D 영상 표현
- x축: 시간, y축: 주파수, 색상: 크기 반응
- 일반적으로 dB척도(로그척도) 사용
- 들리는 것과 보이는 것을 일치시키기 쉬움
Computing Spectrogram
- 각 segment(frame)에 대해
= window(frame)를 잡아
- DFT(FFT) 계산
- 극좌표로 변환
- magnitude, phase
- magnitude 압축
- 20logXmag: decibel
- shifting by a hop size
- spectrogram param
- window size (FFT size)
- hop size
- window size
Discrete Fourier Transform (DFT)
- x(n)의 frequency(sinusoidal) 성분 찾기
- DFT로 A(k)와 Φ(k)를 찾음
- x(n) = sigma(k=0, N-1, A(k)cos(2πkn/N + Φ(k)))
- A(k): amplitude(magnitude)
- Φ(k): pahse
- N: DFT의 사이즈
- k: 주파수 bin 지수 (0 ~ N-1)
- sinusoid의 orghogonality 사용 (프린트 수식 참고)
- 두 sinusoid 간의 내적곱(상관관계):
- 동일한 주파수이면 (부호는 달라도 됨) != 0
- 아니면 0 (직교함)
- inner product with the input and sinusoids (프린트 수식 참고)
- magnitude and phase (프린트 수식 참고)
- the definition of DFT can be simplified using complex sinusoids
- 행렬곱으로 볼 수 있음
- 실제로는 직접 곱하는 것보다 FFT를 대신 사용함
- 반복적으로 행렬을 작은 행렬로 나눔
O(N^2)에서 O(N^log2N)
으로 시간복잡도 감소
- DFT를 음악 사운드에 적용
- pitch가 있는 musical tone은 주기적인 waveform을 가짐
- DFT는 harmonic spectrum(harmonic overtone)을 보여줌
- pitch 정보도 추출 ㄱㄴ
- 일반적으로 magnitude가 waveform보다 더 sparse함
Effect of Window Type
- Window type: 신호를 일정 길이만큼 잘라 관찰하자는 것
- 매 시간마다 주파수의 성분이 달라지는 신호(예를 들어 음악)이 있기 떄문이다. 만약 전체 음악 신호에 대해 전 구간에서 FT를 취하면 전체 시간 구간에서 포함도니 주파수 성분들이 모두 들어오므로, 이 시점에서 나온 음이 몇 Hz인지 등 특정 시간에서의 주파수 성분에 대해 알고싶다면 그 부분을 windowing한다.
- types of window functions
- main lobe와 side lobe 간의 tradeoff
- lobe: 안테나에서 방사되는 전파 에너지가 최댓값을 나타내는 방향의 돌출부
- main lobe: 방사 에너지가 최댓값
- side lobe: main lobe 이외의 방사군
- 음악 분석에서는 Hann window가 가장 널리 사용됨
- main lobe와 side lobe 간의 tradeoff
- time과 frequency resolution 간의 tradeoff
- time resolution: sampling 간격(ㅿt)을 의미함
- frequency resolution: 원하는 곳을 freq domain에서 관찰할 때 얼마나 촘촘한 간격으로 해당 주파수 대역 값을 관찰할 수 있는지. 두 측정 결과 간의 주파수 간격을 나타냄
- short window: 낮은 freq 분해능, 높은 time 분해능
- sampling rate가 높음
- long window: 높은 freq 분해능, 낮은 time 분해능
- freq domain에서 촘촘하게 관찰할 수 있음
Human Ears
- 인간의 귀는 스펙트럼 분석기인가?
- 고막에서 청각신경으로 가는 복잡한 경로
- 내이에 있는 달팽이관은 bandpass-filter bank임
- 입력 freq에 따라 다른 위치에서 막이 공명하고, ㄹfreq는 membrane을 따라 log scale로 증가
Human Pitch Perception
- Pitch resolution
- 주파수가 올라갈수록 just noticeable difference(JND)가 증가함 = Mel scale
- pitch에서 발견한 음을 인지하는 기준을 반영한 scale 함수
- 톤의 피치 비율을 기준으로 인체 피치 분해능 근사
- 음성 및 음악 분석에 가장 널리 사용
- 로그 주파수 스케일
- m = 2595log(1+f/700)
Computing Mel-Spectogram
- linear freq를 mel scale으로 매핑
- mel-scale filter bank 사용
- 해당 대역폭 skirt를 사용해 center frequency에서 linear interpolation
- 고주파수 범위 확대, 저주파수 범위 상대적으로 축소, 주파수 bin 수 감소
- mel-scale filter bank 사용
Musical scale
- 음악 튜닝 시스템
- 평균률(equal temperament): 1:2^(1/12)의 비율로 반음
- 음표(m)와 주파수(f)에 대하여
- m = 12log(2, f/440)+69
- f = 440 * 2^((m-69)/2)
Review
- 음악을 위한 로그스케일이 필요하다는 것을 알았음
- 시간-주파수 표현을 사용하여 파형에서 직접 로그-주파수 스케일 스펙트럼 프로그램을 얻을 수 있을까?
Constant-Q Transform
- 로그 간격 주파수의 sinusoidal kernel 집합을 사용하는 time-freq 표현
- freq축이 log 단위로 변환되고 각 주파수에 따라 resolution이 다르게 처리됨
- Q(=주파수/대역폭)를 일정하게 유지하기 위해 주파수가 커질수록 sinusoidal kernal의 길이가 짧아진다 (대역폭은 넓어짐)
Constant-Q IIR Filter Bank
- IIR Filter(Infinite Impulse Response): 입력 신호의 값과 output 신호의 값이 재귀적으로 적용됨. 아날로그로 변환 쉬움
- 음악적으로 설계된 constant-Q transform
- 88개의 IIR bandpass filter
- 중심 주파수는 각 피아노 음의 피치에 대응
- 대역폭은 +/- 25센트의 정수로 설정되며 중심은 +/- 25센트임 (100cents = 1 semi-tone)