Raw / MFCC 벡터

원시 오디오

16kHz 샘플링을 쓰면 1초를 16000벡터로 바꿀수 있고 이를 16000개 샘플이라 부르기도 하고 이것이 원시 오디오값임
(여기서 16000벡터는 진동세기이고, 중복정보가 많은 것)

MFCC

.wav를 **짧은 프레임(보통 25ms 단위)**으로 나눔 → 각 프레임마다 FFT → Mel filterbank → 로그 → DCT 수행.
  • FFT → 주파수 영역 변환
  • Mel filterbank 적용 (사람 귀 주파수 스케일 반영)
  • 로그 (에너지 스케일링)
  • DCT ( decorrelation )
  • 13 MFCC 계수 추출 + Δ + ΔΔ = 39차원 벡터

MFCC 의미

  • 그냥 waveform 값에는 주파수/포만음 정보가 그대로 섞여 있지만,
  • MFCC는 **사람의 청각적 단위(phoneme-like features)**와 어느 정도 상관성을 갖습니다.
    • 저주파 영역에서는 해상도를 높이고, 고주파는 압축 → 사람이 구분하는 방식과 유사
    • 시간축 도함수(Δ, ΔΔ) → 발음이 바뀌는 동적 정보 반영
  • 그래서 MFCC는 단순 파형보다 음소 단위에 가까운, 압축되고 안정적인 representation이라고 할 수 있습니다.

25ms 프레임을 사용한다는것은, 신호를 구간단위로 묶는다는 것인데 1개의 묶음을 25ms=0.025초로 간주
그러면 초당 1초/25ms=40개의 구간이 생겨.
즉 override가 없으면 초당 40개의 프레임이 생기는거야.
16000/40=400이므로 한개의 프레임당 400개의 값(샘플)을 가진 벡터가 되는거지

하지만 실제로는 override가 일어나지.
- 오디오가 일부 중복되어야 손실이 적어짐
즉 조금씩 샘플을 중복하면서 프레임을 형성하게돼.
0.001*16000=16이므로 1ms당 16개의 샘플을 가지는데
shift 길이를 10ms로하면 shift가 160개의 샘플을 의미하게 되고
실제 프레임수는 (16000-400)/160+1=99 가 되는거지

따라서 결과적으로 초당 100개의 프레임을 가지고, 프레임당 400차원의 벡터값을 말하게 되는 것

댓글