+-------+ +----------+
| | | |
| src | -----> | Resample | -----> dst
| | | |
+-------+ +----------+
위 그림에서 src
는 소스 오디오 데이터를 나타내고, Resample
은 싱크(Sinc) 기반 재샘플링 알고리즘을 적용하는 함수입니다. dst
는 재샘플링 된 대상 오디오 데이터를 나타냅니다.
알고리즘은 먼저 소스 오디오 데이터를 각 채널별로 디인터리빙합니다. 그런 다음, 재샘플링 알고리즘이 각 채널에 대해 적용됩니다. 이후 재샘플링 된 데이터를 단일 버퍼로 인터리브하고 반환합니다.
+----------------------+ +----------------------+ +----------------------+
| | | | | |
| Input buffer | --------> | FIR filter | --------> | Downsampler (decimator)|
| | | | | |
+----------------------+ +----------------------+ +----------------------+
| | | | |
| | | | |
| | | | |
| v | | |
| Summation | | |
| (LPF) | | |
| ^ | | |
| | | | |
| | | | |
| v | | |
| Delay Line (buffer) | | Output buffer |
| | | |
+----------------------+ +----------------------+
위 그림에서 Input buffer
는 각 채널의 디인터리브 된 소스 오디오 데이터를 나타내며, Output buffer
는 재샘플링 된 대상 오디오 데이터를 저장하는 버퍼입니다.
알고리즘은 먼저 소스 오디오 데이터를 필터링하기 위해 FIR 필터를 적용합니다. 이후 다운샘플링을 수행하기 위해 소스 데이터의 샘플률을 낮추는 디케이메이터(decimator)를 사용합니다. 이후 LPF (Low-Pass Filter)를 사용하여 재샘플링 된 데이터를 샘플링 레이트로 낮추는 과정에서 발생하는 안티앨리어싱(anti-aliasing) 필터링을 수행합니다. 마지막으로, 재샘플링 된 데이터를 저장하기 위해 출력 버퍼에 샘플을 기록합니다.
FIR(Filter Impulse Response) 필터는 시스템의 임펄스 응답을 유한한 길이의 샘플로 근사하는 필터입니다. FIR 필터는 유한 임펄스 응답(무한한 시간 범위에서 0 이외의 값이 오직 유한한 수의 시간 단계에 나타나는 응답)을 가지므로 FIR 필터는 안정적이고, 선형이며, 시간 불변성을 가지며, 이상적인 주파수 응답을 가지는 등 여러가지 장점이 있습니다.
FIR 필터는 다음과 같이 동작합니다. 입력 신호에 필터링 작업을 수행하면서 시간 영역에서 필터의 임펄스 응답을 반영합니다. FIR 필터는 입력 신호를 샘플 단위로 처리하며, 필터의 출력은 입력 신호의 가중치 합입니다. 가중치는 필터의 임펄스 응답을 통해 결정됩니다. 필터의 길이는 필터의 주파수 응답 특성과 밀접한 관련이 있으며, 일반적으로 필터의 길이가 길수록 주파수 응답의 정확도가 향상됩니다.
FIR 필터는 다양한 영역에서 사용되며, 음성 처리, 이미지 처리, 신호 처리 등 다양한 분야에서 필터링 작업을 수행하는 데 사용됩니다.