샘플링 이론에 대한 개념을 알아보고 torch 라이브러리를 사용해서 다운샘플링 했을 때 aliasing이 어떻게 관찰되는지 코드를 통해 살펴봅시다.
샘플링 하는 이유
현실세계에서 대부분의 신호는 연속적입니다. 하지만, 컴퓨터와 같은 디지털 시스템에서는 연속적인 신호를 처리하기 어렵기 때문에 신호를 디지털 형태로 변환해주는 작업이 필요합니다. 이를 위해, 신호를 일정한 간격으로 샘플링하면 이산적인 표현을 얻을 수 있습니다.
샘플링 이론과 Aliasing
나이퀴스트 샘플링 정리에 따르면, 연속 시간 신호를 복원하기 위해서는 샘플링 주파수가 신호의 최대 주파수의 두 배보다 커야 합니다. 이 조건을 만족하지 않는 경우, 샘플링 과정에서 정보의 왜곡 / 손실을 초래하는 aliasing이 발생합니다. aliasing은 샘플링 주파수가 낮아서 고주파 신호 일부가 낮은 주파수로 왜곡되는 현상을 말합니다. 예를 들자면, 음성 신호의 경우, 최대 주파수가 8kHz이므로 16kHz로 샘플링해줘야 aliasing이 발생하지 않을 것입니다.
샘플링 이론 (Sampling Theorem) 알아보기
나이퀴스트 샘플링 이론에 대해 알아보고 연속 시간 신호를 샘플링하여 이산 시간 신호로 만드는 과정을 살펴봅시다. Notation Periodic Sampling 연속 시간 신호의 이산 시간 표현을 얻을 때 쓰는 일반
sunny-archive.tistory.com
다운샘플링 (Downsampling)
sampling rate을 변환하는 이유가 뭔지 생각해보고 샘플링 속도를 줄이는 방법인 downsampling에 대해 알아봅시다. Sampling rate 변환 연속 시간 신호의 새로운 이산 시간 표현을 얻기 위해 이산 시간 신호
sunny-archive.tistory.com
Code
import math
import torch
import torchaudio
t = torch.arange(0, 16000*4, 1)
y = torch.cos(2*math.pi/5*t)
z = torch.cos(2*math.pi*1/3*t)
# wav 파일 저장
torchaudio.save("y.wav", y, 16000)
torchaudio.save("y2.wav", y[:,::2], 8000)
torchaudio.save("z.wav", z, 16000)
torchaudio.save("z2.wav", z[:,::2], 8000)
Spectrogram
첫 번째로,




다음은


이 신호를

결과부터 보자면, 4kHz (

다운샘플링 시, 나이퀴스트 샘플링 조건을 만족하지 못하면 이와 같이 고주파가 넘어와 저주파 대역에 나타나는 aliasing 현상이 발생하게 됩니다.
'연구 노트 > 디지털신호처리' 카테고리의 다른 글
선형 컨볼루션 (Linear convolution)과 원형 컨볼루션 (Circular convolution) (1) | 2024.06.07 |
---|---|
DFS (Discrete Fourier Series) 바로 알기 (0) | 2024.06.01 |
고윳값 (eigenvalue), 고유 함수 (eigenfunction) 개념으로 LTI 시스템 해석하기 (0) | 2024.04.18 |
LTI 시스템의 주파수 응답과 phase distortion, group delay (1) | 2024.04.13 |
업샘플링 (Upsampling) (1) | 2024.04.10 |