본문 바로가기
기술보고서

DeepFilterNet3: 심층 필터링 프레임워크의 개념, 발전 과정 및 임베디드 구현 분석

by 파서스에어로스페이스 2026. 8. 7.

1. 서론: 음성 향상 기술의 패러다임 전환과 딥필터넷의 등장

현대의 지능형 오디오 시스템 및 실시간 통신 환경에서 고품질의 음성 신호를 확보하는 것은 오디오 신호 처리 분야의 가장 핵심적인 과제 중 하나이다. 전통적인 음성 향상(Speech Enhancement) 기법인 스펙트럼 차감법(Spectral Subtraction)이나 위너 필터(Wiener Filter) 등은 고정적인 배경 소음(Stationary Noise)을 모델링하고 제거하는 데는 어느 정도 효과적이었다. 그러나 개가 짖는 소리, 키보드 타건음, 카페의 타격음이나 다화자 환경(Babble Noise)과 같은 비정상 소음(Non-stationary Noise) 환경에서는 잡음의 통계적 특성이 지속적으로 변하기 때문에 고정된 추정치로는 이를 분리해낼 수 없었다1. 이로 인해 필연적으로 '뮤지컬 노이즈(Musical Noise)'라 불리는 금속성의 인공적 왜곡이 발생하여 통화 품질을 심각하게 저하시켰다2.

 

이러한 한계를 극복하기 위해 등장한 심층 신경망(DNN)은 단일 채널 음성 향상 분야에 혁신적인 도약을 가져왔다. 특히 단기 푸리에 변환(Short-Time Fourier Transform, STFT) 도메인에서 복소수 비율 마스크(Complex Ratio Mask, CRM)를 예측하는 기법은 신호의 크기(Magnitude)뿐만 아니라 위상(Phase) 정보까지 함께 복원함으로써 획기적인 음질 향상을 이루어냈다3. 그러나 이와 같은 종단간(End-to-End) 모델이나 거대한 트랜스포머(Transformer) 기반의 아키텍처는 막대한 메모리와 연산량(FLOPs)을 요구하였다. 이는 라즈베리파이(Raspberry Pi)와 같은 에지(Edge) 디바이스나 초저전력 보청기(Hearing Aid), 그리고 찰나의 지연도 허용되지 않는 실시간 WebRTC 통신 환경에 배포하기에는 치명적인 제약으로 작용했다4.

 

이러한 연산량과 성능의 상충 관계(Trade-off)를 극복하기 위해 제안된 프레임워크가 바로 '딥필터넷(DeepFilterNet)'이다. 딥필터넷은 인간의 청각 인지 모델(Psychoacoustics)과 음성 생성 메커니즘을 딥러닝 아키텍처와 결합하여, 모바일 CPU의 단일 스레드에서도 실시간 처리가 가능하면서도 최고 수준의 잡음 제거 성능을 달성하도록 설계되었다6. 본 보고서에서는 DeepFilterNet 프레임워크의 최신 버전인 DeepFilterNet3의 핵심 수학적 개념 및 기술적 아키텍처를 심층 분석하고, 1세대부터 3세대까지의 발전 역사, 실제 산업계 응용 사례를 고찰한다. 더 나아가, 리소스가 제한된 마이크로컨트롤러(MCU) 및 싱글 보드 컴퓨터(SBC) 환경에서 모델을 구동하기 위한 구체적인 구현 튜토리얼을 제공한다.

 

2. DeepFilterNet 프레임워크의 핵심 개념과 기술적 아키텍처

DeepFilterNet은 주파수 도메인에서 다중 프레임(Multi-frame)을 활용하여 복소 필터를 직접 추정하는 '심층 필터링(Deep Filtering)' 기술을 기반으로 한다3. 이 프레임워크의 가장 큰 특징은 신경망이 모든 주파수 대역에 대해 무거운 고해상도 연산을 일괄적으로 수행하는 대신, 음향 심리학적 지식을 활용하여 연산량을 극적으로 감소시킨 2단계(Two-stage) 하이브리드 아키텍처를 채택했다는 점이다7.

 

2.1. 신호 모델 및 STFT 기반 다중 프레임 처리

DeepFilterNet의 모든 신호 처리는 STFT 도메인에서 이루어진다. 시간 도메인의 혼합 신호 \(x(k)=s(k)+z(k)\) (여기서 \(s(k)\)는 깨끗한 타겟 음성, \(z(k)\)는 간섭하는 배경 소음)는 STFT 과정을 거쳐 \(X(t,f)=S(t,f)+Z(t,f)\) 형태의 2차원 시공간 스펙트럼으로 변환된다7.

 

전통적인 신경망 마스킹 기법이 단일 시간 프레임 \(t\)에 대해 요소별(Point-wise) 곱셈을 수행하는 것과 달리, 심층 필터링은 시간 축에서 과거와 미래의 인접한 다중 프레임을 벡터로 묶어 복소수 선형 결합(Linear Combination)을 수행한다. 필터 길이(Tap 수)를 \(N\)으로, 미래 프레임을 참조하는 룩어헤드(Look-ahead)를 \(l\)로 정의할 때, 신경망이 처리하는 다중 프레임 벡터 \(\bar{x}(t)\)는 다음과 같이 구성된다7.

 

\[ \bar{x}(t)  =\left[  X(t+l), X(t-1+l), ..., X(t-N+1+l) \right]^T \]

 

이에 대응하여 신경망이 예측하는 복소 필터 \(\bar{w}_{DF}(t)\)를 켤레 전치(Conjugate Transpose)하여 내적함으로써 최종 향상된 신호 \(Y(t)\)가 추정된다7. 이러한 다중 프레임 접근법은 음성 신호 내에 존재하는 단기 상관관계(Short-time correlations)를 효과적으로 포착하고, STFT 분해능 한계로 인해 발생하는 스펙트럼 노치(Spectral notches) 현상을 완화하는 데 결정적인 기여를 한다6.

 

2.2. 인지적 특성을 반영한 2단계 하이브리드 설계 (Two-Stage Architecture)

DeepFilterNet의 오디오 신호 처리 파이프라인은 입력된 노이즈 혼합 신호를 STFT로 변환한 후 두 갈래로 나뉘어 진행된다. 고주파 대역은 32개의 ERB 밴드 이득을 통해 포락선을 거칠게 복원하는 1단계를 거치며, 4.8kHz 이하의 저주파 핵심 대역은 5-Tap 다중 프레임 복소 필터를 적용하여 주기성을 정밀하게 타겟팅하는 2단계를 거친다. 이후 두 대역의 출력이 결합되어 역 푸리에 변환(ISTFT)을 통해 최종적인 무결점 오디오로 합성된다. 이러한 2단계 분리 구조는 연산량의 비약적인 절감을 가능케 한다.

 

  1. 1단계: ERB 도메인에서의 스펙트럼 포락선 복원 (Envelope Reconstruction) 첫 번째 단계는 인간의 청각 기관이 저주파 영역에서는 높은 주파수 분해능을 갖지만 고주파로 갈수록 분해능이 기하급수적으로 떨어진다는 음향 심리학적 사실에 착안한다5. 48kHz 풀밴드 샘플링 레이트 기준 481개의 주파수 빈(Bin)을 갖는 입력 스펙트럼은 로그 형태의 ERB(Equivalent Rectangular Bandwidth) 스케일로 압축되어 단 32개의 밴드로 매핑된다2. 신경망은 이 32개 대역에 대한 실수형 이득(Real-valued gains)을 예측하여 원본 노이즈 스펙트럼에 요소별로 곱한다. 이 과정은 개별 고조파를 정밀하게 맞추는 것이 아니라, 광대역 소음을 억제하면서 음성의 전체적인 윤곽(포락선, Envelope)을 거칠게 복원하는 역할을 담당한다. 연산 차원이 481에서 32로 크게 줄어들기 때문에 압도적인 연산량 감소 효과를 얻는다2.
  2. 2단계: 심층 필터링을 통한 주기성 향상 (Periodicity Enhancement) 음성의 모음과 같은 유성음(Voiced component)은 강력한 주기성과 고조파(Harmonics) 구조를 가지며, 이는 낮은 신호 대 잡음비(SNR) 환경에서 음성의 명료도를 결정짓는 핵심 요소이다8. 이를 정밀하게 복원하기 위해 2단계에서는 5-Tap (\(N=5\))의 복소 필터를 예측한다2. 가장 핵심적인 최적화 기법은 이 연산 집약적인 복소 필터 연산을 스펙트럼 전체 주파수에 적용하는 것이 아니라, 인간의 음성 주파수 에너지가 집중되어 있고 귀가 가장 민감하게 반응하는 4.8kHz 이하의 저주파 대역 (하위 96개 주파수 빈)에만 제한적으로 적용한다는 점이다7.

 

2.3. 적응형 디코더 게이팅과 지연 시간(Latency) 최적화

DeepFilterNet은 효율성을 극대화하기 위해 인코더 네트워크 내부에서 프레임 단위로 현재 환경의 지역적 SNR(\(\zeta\))을 예측하는 알고리즘을 포함한다. 측정된 \(\zeta\)값이 -10dB 미만인 극단적인 소음 구간에서는 무의미한 연산을 피하기 위해 ERB와 DF 디코더를 모두 비활성화하고 완전한 무음(Silent spectrum)을 반환한다. 반대로 \(\zeta\)값이 20dB를 초과하는 매우 깨끗한 환경에서는 주기성 향상이 불필요하므로 연산량이 높은 2단계 DF 디코더만을 선별적으로 비활성화(Gating)하여 배터리와 CPU 자원을 절약한다7.

 

실시간 통신에서 가장 중요한 지표인 지연 시간(Latency)의 경우, DeepFilterNet3는 철저한 인과성(Causality) 제약을 고려하여 설계되었다. 48kHz 샘플링 환경에서 20ms의 STFT 윈도우(Vorbis 윈도우 펑션 적용), 10ms의 홉(Hop) 사이즈를 사용하며, 향후 데이터를 참조하는 2-프레임 룩어헤드(Look-ahead, \(l=2\))를 설정하여 총 40ms의 알고리즘적 지연 시간을 갖는다7. 이는 시청각 동기화(Audio-video drift)를 방지하고 자연스러운 대화를 유지할 수 있는 국제 통신 표준의 엄격한 임계치 내에 완벽히 부합하는 수치이다12.

 

2.4. 다중 해상도 스펙트럼 손실 및 과도 억제(Over-attenuation) 제어

신경망 훈련 시에는 시간 영역과 주파수 영역의 손실을 복합적으로 고려한 다중 해상도 STFT 손실(Multi-resolution STFT loss)이 적용된다12. 단일 해상도로 훈련된 모델은 특정 주파수 대역의 디테일을 놓치는 경향이 있으므로, STFT 윈도우 크기를 256, 512, 768, 1024 픽셀 등 다양하게 분할 적용하여 스펙트럼 수렴도(Spectral convergence)와 크기 오차(Magnitude loss)를 합산하는 방식을 채택했다5. 나아가 3세대 모델 및 그 파생형 모델들에서는 모델이 극단적인 저주파 소음 환경에서 타겟 음성 자체를 노이즈로 오인하여 깎아먹는 현상을 방지하기 위해 과도 억제 방지 손실(Over-attenuation loss) 성분을 추가로 도입하였다12. 이는 모델이 완벽한 정적(Silence)을 만들기 위해 인간의 미세한 호흡음이나 마찰음을 과도하게 억제하여 발생하는 청각적 피로감을 줄이고, 자연스러운 음성 품질을 보존하는 데 크게 기여한다12.

 

3. DeepFilterNet 프레임워크의 세대별 발전 과정 (V1에서 V3까지)

딥필터넷은 2021년 최초 발표 이후, 단순한 알고리즘 시연을 넘어 실제 임베디드 및 엣지 컴퓨팅의 까다로운 상용 요구사항을 충족하기 위해 아키텍처와 학습 데이터셋 양면에서 눈부신 진화를 거듭해왔다.

 

3.1. DeepFilterNet 1 (2021-2022): 패러다임의 제시

ICASSP 2022에 발표된 첫 번째 버전은 ERB 도메인 포락선 복원과 저주파 심층 필터링(Deep Filtering)을 결합한 2단계 접근법의 실효성을 처음으로 입증했다2. 당시 학계를 주도하던 복소수 비율 마스크(CRM) 기반의 DCCRN이나 FullSubNet과 같은 모델 대비 극히 적은 파라미터만으로도 STFT 단기 윈도우 한계를 극복하고 우수한 PESQ 및 SI-SDR 수치를 기록하며 학계의 주목을 받았다2.

 

3.2. DeepFilterNet 2 (2022): 임베디드 디바이스를 향한 극단적 경량화

버전 2의 주요 목표는 스마트폰, 보청기 등 리소스가 지극히 제한된 에지 디바이스로의 이식이었다2. 초기 버전에서 두 개의 독립적인 디코더(ERB, DF)로 분리되어 중복 연산이 발생하던 인코더를 하나로 통합하였다. 또한, 그룹화된 선형 계층(Grouped linear layers)과 심도별 경로 합성곱(Depthwise pathway convolutions), 그리고 그룹화된 게이트 순환 유닛(GRU)을 사용하여 파라미터 수를 2.31M 개 수준으로 압축했다2. 훈련 과정에서는 에포크 단위가 아닌 반복(Iteration) 단위로 학습률을 갱신하는 코사인 스케줄링(Cosine annealing)과 다양한 환경을 모사하는 데이터 증강 기법이 도입되었다5. 이러한 구조적 결단과 최적화를 통해, 단일 코어 노트북 CPU 상에서 실시간 팩터(Real-Time Factor, RTF) 0.04(즉, 오디오 1초 분량을 처리하는 데 단 0.04초 소요)라는 놀라운 런타임 성능을 달성했으며, 라즈베리파이 4와 같은 소형 SBC에서도 완벽한 실시간 구동이 가능해졌다5.

 

3.3. DeepFilterNet 3 (2023-2026): 심층 시간 의존성 모델링과 다국어 강건성

현재 가장 널리 상용화되어 쓰이는 3세대 모델은 Interspeech 2023에 시연 데모와 함께 등장했다7. DeepFilterNet3는 경량화를 유지하면서도 장기 시간 의존성(Long-range temporal dependency)을 모델링하는 데 집중했다. 특히 DPDFNet(Dual-Path DeepFilterNet)과 같은 병렬 파생 연구를 통해 인코더 병목에 듀얼-패스 RNN(Dual-path RNN) 블록이 통합되어 주파수 대역 간의 교차 특성을 더욱 선명하게 포착할 수 있게 되었다12.

 

데이터셋 구성 측면에서도 거대한 진전이 있었다. 기존의 제한된 데이터셋을 넘어 Microsoft의 DNS4(Deep Noise Suppression) 챌린지 데이터셋을 채용하였으며, 고품질 스피치 코퍼스인 PTDB와 VCTK를 10배 오버샘플링하여 품질을 높였다7. 이에 더해 Multilingual LibriSpeech (MLS)를 통한 4,000시간 이상의 다국어 데이터, MUSAN 및 FSD50K를 통한 현실적인 백그라운드 노이즈(차량, 펍, 사무실 등 150여 개 클래스)를 주입하여 모델의 일반화(Generalization) 능력을 극대화했다13. 그 결과, 화자가 다수 겹치는 배블 노이즈(Babble noise)나 생성형 AI로 합성된 가상 목소리, 도심의 복잡한 비정상 소음이 혼재된 가혹한 조건에서도 목표 음성만을 안정적으로 분리해내는 탁월한 강건성을 확보하게 되었다2.

 

 

4. 정량적 벤치마크 지표 비교 및 분석

DeepFilterNet3는 VoiceBank-DEMAND 데이터셋을 비롯한 보편적인 학술 벤치마크에서 그 우수성을 증명했다. 표 1은 경쟁 모델들과의 성능 및 연산량(RTF, Parameters)을 비교한 결과를 나타낸다7.

 

모델명 (Model) PESQ (음질 지표) STOI (명료도 지표) SI-SDR (dB) 파라미터 (Params) 지연시간 (Latency) 오프라인 RTF (CPU)
DeepFilterNet (V1) 2.81 0.942 16.63 1.78M 40ms 0.190
DeepFilterNet2 3.08 0.940 - 2.31M 40ms 0.040
DeepFilterNet3 3.17 0.944 18.19 2.14M 40ms 0.081
DEMUCS (Streaming) 2.56 - 10.20 33.53M 40ms 0.221
aTENNuate (Base) 3.27 - - 0.84M 46.5ms 0.330

 

이 표에서 확인할 수 있듯, 대형 모델인 DEMUCS가 33M 이상의 거대한 파라미터와 7.72 GFLOPs의 연산량을 소모함에도 PESQ가 2.56 수준에 머무는 반면, DeepFilterNet3는 단 2.1M 파라미터와 0.34 MACs라는 경이로운 가벼움으로 PESQ 3.17을 달성하였다9. 연산 효율성을 대변하는 오프라인 RTF 지표 또한 단일 코어 환경에서 0.08 수준을 마크하여, 실시간 오디오 입력 대비 10배 이상 빠른 속도로 추론을 완료할 수 있음을 입증한다9.

 

5. 모델의 근본적 한계점 및 고려사항 (Limitations & Failure Cases)

우수한 스펙에도 불구하고, 임베디드 엣지 환경에 맞춘 경량화 아키텍처 특성상 몇 가지 구조적 한계와 장애 요인이 존재하며 이를 프로덕션 단계에서 반드시 고려해야 한다.

 

  1. 후기 잔향 제거(Dereverberation) 성능의 한계 공간 음향 반사에 의해 발생하는 후기 잔향(Late reverberation, \(T_{60}>150 ms\))을 효과적으로 모델링하고 억제하기 위해서는 필연적으로 긴 시간 축의 데이터 의존성(Long temporal dependency)을 참조하는 거대한 필터가 필요하다4. 그러나 DeepFilterNet은 40ms라는 극도로 짧은 지연 시간(Low-latency) 목표를 충족하기 위해 참조하는 입력 벡터의 길이를 매우 짧게 제한하였다. 결과적으로 강한 잔향 환경에서는 노이즈 억제력에 비해 리버브 제거 성능이 상대적으로 떨어지는 현상이 관찰된다4.
  2. 짧은 오디오 클립에서의 컨텍스트 부족 현상 모델 내부의 순환 신경망(GRU)은 시간 프레임에 걸쳐 누적된 은닉 상태(Hidden states)를 바탕으로 비정상 소음을 추정한다. 따라서 300~500 밀리초 미만의 매우 짧은 오디오 클립이나 잘려진 명령어(Voice commands)가 입력될 경우, 잡음과 음성을 구별할 충분한 컨텍스트가 확보되지 않아 억제력이 불안정해지고 오디오의 시작 및 종료 지점에 튀는 듯한 아티팩트(Artifact)가 발생한다23. 이는 STFT 특성에 기인한 것으로, 실무 적용 시에는 오디오 양 끝단에 묵음 패딩(Zero padding)을 추가하거나 연속 스트리밍 모드를 유지하여 상태를 보존하는 우회 전략이 필수적이다23.
  3. 과도한 억제(Over-attenuation) 및 비정상 소음 오분류 감쇠 제한(Attenuation limit)을 너무 강하게 설정하여 절대적인 무음 배경(Silent background)을 강제할 경우, 사용자 음성의 마찰음이나 호흡 소리, 또는 박수와 같은 짧은 트랜지언트(Transient) 소음을 기계적인 소음으로 오분류하여 신호 일부를 클리핑해버릴 위험이 있다16. 이를 방지하기 위해 라이브 방송이나 스트리밍 툴에서는 감쇠 레벨을 다소 낮추어 미세한 배경음을 남기는 것이 오히려 자연스러운 음질을 보존하는 최적의 프랙티스로 권장된다16.
  4. 오프라인 렌더러에서의 STFT 버퍼 버그 DaVinci Resolve와 같은 특정 프로페셔널 편집 프로그램에서 오프라인 렌더링(비실시간 최대 속도 렌더링)을 수행할 때, 프로그램이 플러그인을 강제 초기화하거나 동적 버퍼 크기(Dynamic buffer sizes)를 임의로 변경하면 내부 STFT 오버랩 버퍼와 GRU 상태가 제대로 유지되지 않아 완전히 무음(Silence)이 출력되는 버그가 보고된 바 있다24. 이는 엄격한 고정 버퍼 처리를 요구하는 모델 라이브러리와 호스트 DAW 간의 파이프라인 불일치에서 발생한다.

 

6. 산업계 실제 응용 사례 및 생태계 통합 (Real-World Applications)

DeepFilterNet은 연구 목적에 그치지 않고, Apache-2.0과 MIT 이중 라이선스라는 유연한 오픈소스 정책에 힘입어 다양한 상용 및 커뮤니티 기반 생태계에 널리 통합되고 있다25.

 

6.1. WebRTC 및 라이브 통신 파이프라인 통합 (LiveKit / WASM)

화상 회의 및 음성 챗봇을 위한 오픈소스 플랫폼인 LiveKit 진영에서는 livekit-deepfilternet3-noise-filter라는 NPM 패키지를 통해 이 기술을 채택했다25. 이 패키지는 서버 연산 부하를 제로(0)로 만들기 위해 DeepFilterNet3 모델과 Rust 코드를 WebAssembly(WASM)로 크로스 컴파일하여, 클라이언트 브라우저의 AudioWorklet 내부에서 직접 실행되도록 구현되었다26. 특히, 최적화 수준을 끌어올리기 위해 WASM 빌드 플래그에 128비트 벡터 연산을 수행하는 SIMD(+simd128), 대규모 메모리 조작 최적화(+bulk-memory), 비트랩핑 변환(+nontrapping-fptoint) 옵션을 활성화하여 네이티브 환경에 필적하는 극저지연 처리를 웹 생태계에서 구현해냈다25.

 

6.2. 리눅스 시스템 오디오 인터페이스 (PipeWire 및 LADSPA)

리눅스 데스크톱 환경에서는 기존 PulseAudio를 대체하는 차세대 오디오 서버인 PipeWire의 핵심 노이즈 캔슬링 엔진으로 각광받고 있다27. 사용자는 EasyEffects와 같은 GUI 프로세서나 터미널을 통해 LADSPA 표준 플러그인(libdeep_filter_ladspa.so)을 시스템 오디오 파이프라인에 삽입할 수 있다28. 기술적으로는 ~/.config/pipewire/pipewire.conf.d/ 경로에 JSON 기반의 filter-chain 설정 파일을 생성하고 filter.graph 블록 내의 node.name 및 plugin 속성을 DFN LADSPA 바이너리로 지정함으로써, 마이크 하드웨어와 화상회의 소프트웨어(Discord, OBS 등) 사이에 강력한 가상 마이크 노드를 생성한다30.

 

6.3. 방송용 오디오 프로덕션 및 미디어 파이프라인 (FFmpeg / SVT)

스웨덴 공영 방송사인 Sveriges Television (SVT)는 청각 장애인 및 노년층 사용자의 음성 명료도 향상을 위해 DeepFilterNet을 프로덕션 스트리밍 파이프라인에 도입했다32. 이들은 순수 오디오 향상뿐만 아니라, C-API(df_create, df_process)를 통해 FFmpeg 오디오 필터(af_dnenhance.c) 모듈을 직접 개발하였으며, 배경 오디오 품질을 훼손하지 않고 센터 채널의 대화만을 타겟팅하여 향상시키는 CES(Center Enhanced Stereo) 기법을 접목하여 방대한 양의 방송 콘텐츠를 효율적으로 전처리하고 있다32.

 

6.4. Apple Silicon 및 모바일 에지 디바이스 (CoreML)

Apple의 M 시리즈(M1~M4) 칩셋 환경을 겨냥해, macOS 14 및 iOS 17 이상에서 구동 가능한 CoreML INT8 포팅 프로젝트가 Soniqo 등 서드파티를 통해 진행되었다21. PyTorch 모델을 INT8 k-means Palettization(팔레트 양자화) 기법으로 압축하여 원본 2.1M 파라미터 모델의 크기를 단 2.2MB의 DeepFilterNet3.mlmodelc 포맷으로 경량화하였다21. 이 모델은 CPU/GPU가 아닌 Apple Neural Engine(ANE) 전용으로 할당되어, M2 Max 프로세서 기준 0.12라는 압도적인 RTF를 보여주면서도 배터리 소모를 극단적으로 억제하는 상용화 수준의 효율을 달성했다21.

 

7. 라즈베리파이(Raspberry Pi) 및 MCU 구현 튜토리얼 (Rust & ONNX 기반)

IoT 기기, 드론, 초소형 로봇 등 에지(Edge) 인공지능 분야에서 DeepFilterNet3를 ARM 계열의 라즈베리파이 4/5 또는 고성능 마이크로컨트롤러 환경(NPU 탑재 임베디드 보드 등)에 이식하는 것은 매우 실용적이다. Python과 PyTorch에 의존할 경우 무거운 런타임 오버헤드가 발생하므로, 본 장에서는 Rust 프로그래밍 언어와 ONNX Runtime(ort)을 결합하여 가볍고 빠르며 메모리 안전성을 보장하는 실시간 오디오 스트리밍 파이프라인 구축 튜토리얼을 단계별로 제공한다34.

 

7.1. 개발 환경 및 필수 라이브러리 구성

먼저 운영체제(64비트 Debian/Ubuntu 계열 권장)에 Rust 툴체인과 시스템 레벨의 의존성 패키지를 설치해야 한다. 추론 엔진은 순수 Rust 기반의 tract 엔진이나 Microsoft의 onnxruntime 중 하나를 선택할 수 있으나, ARM 아키텍처에서의 멀티스레딩 활용 및 하드웨어 가속(NNAPI 등) 유연성을 고려할 때 onnxruntime 백엔드를 활용하는 shimondoodkin/deepfilter-rt 스트리밍 구현체를 사용하는 것이 유리하다34. 실제 벤치마크에 따르면 ONNX 구현체가 Tract 구현체에 비해 연산 속도가 유의미하게 빠른 경우가 보고되었다34.

 

Bash

# 1. Rust 툴체인 설치
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 2. 필수 시스템 라이브러리 및 C 컴파일러 설치 (ALSA 오디오 처리용)
sudo apt-get update
sudo apt-get install pkg-config libasound2-dev cmake clang


7.2. 모델의 스트리밍 분할 (Split Streaming Optimization)

연속적인 오디오 프레임을 뚝뚝 끊어지는 현상 없이 부드럽게 처리하기 위해서는 RNN(GRU) 계층의 '은닉 상태(Hidden State)'가 매 프레임 간 덮어씌워지지 않고 보존(Persistent)되어야 한다. 이를 위해 전체 모델을 덩어리째 사용하는 대신, 기능별로 ONNX 그래프를 쪼개어 상태 변수를 외부에서 명시적으로 입출력하는 분할 스트리밍(Split Streaming) 방식이 가장 권장된다34.

 

DeepFilterNet 원본 저장소에서 제공하는 Python ONNX Surgery 스크립트를 사용하여 모델을 4조각으로 분리한다.

Bash

# 파이썬 환경 설정
pip install torch onnx onnxruntime

# 인코더 및 디코더 분할 스크립트 실행 (저지연 모델 dfn3_ll 타겟)
python scripts/split_encoder_and_patch_decoders.py models/dfn3 models/dfn3_ll


 

이 수술(Surgery) 과정이 성공적으로 끝나면 추론 엔진에 순차적으로 로드할 4개의 최적화된 파일(enc_conv_streaming.onnx, enc_gru_streaming.onnx, erb_dec_streaming.onnx, df_dec_streaming.onnx)이 생성된다34.

 

7.3. 하드웨어 네이티브 최적화 빌드 플래그 설정

라즈베리파이의 ARM Cortex-A72(Pi 4) 혹은 A76(Pi 5) CPU가 지원하는 NEON 벡터 명령어 세트와 SIMD 가속을 최대한 활용하려면 컴파일러에 명시적으로 하드웨어 타겟팅을 지시해야 한다. 환경 변수로 RUSTFLAGS="-C target-cpu=native" 플래그를 넘겨주는 것이 핵심이다25.

Bash

export RUSTFLAGS="-C target-cpu=native -C opt-level=3 -C lto=thin"

 

7.4. 실시간 오디오 파이프라인 구현 코드 (Rust API)

새로운 Rust 프로젝트를 생성하고 Cargo.toml에 오디오 디바이스 제어를 위한 cpal 패키지와 deepfilter_rt 패키지를 의존성으로 추가한다. 오디오 콜백 함수 내부에서 마이크로부터 읽어 들인 정확히 10ms 단위(48kHz 기준 480 샘플)의 오디오 청크를 DeepFilterProcessor로 넘겨 실시간으로 필터링하는 파이프라인은 다음과 같이 작성된다34.

 

Rust

use deepfilter_rt::{DeepFilterProcessor, HOP_SIZE}; // HOP_SIZE = 480 (10ms @ 48kHz)
use std::path::Path;
// use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; // 실제 마이크 I/O 사용 시 필요

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // 1. 스트리밍 분할 모델 경로 지정 및 프로세서 초기화
    let model_path = Path::new("models/dfn3_ll");
   
    // ONNX Runtime 병렬 스레드를 1~2개로 제한하여 컨텍스트 스위칭 지터(Jitter) 최소화
    let mut processor = DeepFilterProcessor::new(model_path)?;
   
    // 2. 웜업(Warm-up) 수행: 콜드 스타트 지연 방지
    // 내부 GRU 상태 초기화 및 메모리 할당을 사전에 구동하여 첫 프레임 처리 지연을 방지함
    processor.warmup()?;

    println!("Model: {}", processor.variant().name());
    println!("Algorithmic Latency: {}ms", processor.latency_ms()); // 40ms 출력 예상

    // 3. 오디오 I/O 콜백 루프 구성 (가상의 예시)
    // 중요: 하드웨어 마이크 설정 시 샘플링 레이트는 반드시 48000 Hz 로 고정해야 모델과 규격이 맞음
   
    /*
    let stream = device.build_input_data_callback(move |data: &[f32], _: &_| {
        // 입력 데이터의 버퍼 사이즈가 정확히 HOP_SIZE (480) 인지 강제 확인
        if data.len() != HOP_SIZE {
            eprintln!("버퍼 크기 불일치: {}", data.len());
            return;
        }
       
        let mut output_buffer = vec![0.0f32; HOP_SIZE];
       
        // 4. 단일 프레임 동기식 처리 (10ms 입력 -> 10ms 즉시 출력)
        // 내부 처리 흐름: STFT -> ERB 게인 인코딩 -> DF 복소 필터 연산 -> ISTFT 스펙트럼 합성
        if let Err(e) = processor.process_frame(data, &mut output_buffer) {
            eprintln!("Processing error: {}", e);
        }
       
        // 정화된 output_buffer 데이터를 스피커로 전달하거나 네트워크(WebRTC) 소켓으로 전송
    })?;
    stream.play()?;
    */
   
    Ok(())
}


 

이와 같은 Rust-ONNX 파이프라인 구조를 활용하면, 라즈베리파이 환경에서도 파이썬 파이프라인의 고질적인 오버헤드를 우회하여, 프레임당 평균 1.7ms ~ 3.3ms 수준의 연산 속도로 완벽한 실시간 잡음 제거 디바이스를 구축할 수 있다34.

 

8. 결론

DeepFilterNet3는 복잡한 음향 심리학적 원리와 경량 딥러닝 아키텍처를 우아하게 결합하여, 과거 막대한 서버 리소스와 고성능 GPU 팜이 필요했던 실시간 음성 향상 기술을 브라우저, 스마트폰, 그리고 라즈베리파이와 같은 초소형 에지 디바이스의 영역으로 이식하는 데 성공했다. STFT 도메인 위에서 ERB 스케일을 통한 광대역 포락선 제어와, 음성의 뼈대를 이루는 핵심 저주파 대역만을 타겟팅하는 5-Tap 다중 프레임 복소 필터를 분리하여 적용한 2단계 아키텍처는 연산 비용의 극단적 최소화와 왜곡 없는 위상 복원이라는 두 마리 토끼를 모두 잡은 혁신적 설계이다.

 

물론 짧은 지연 시간(40ms)으로 인해 유발되는 극단적인 잔향 환경에서의 한계점과, 짧은 단발성 오디오 클립 처리 시 컨텍스트 부족으로 발생하는 아티팩트 및 과도 억제 현상 등은 산업 적용 시 해결해야 할 과제로 남아있다. 그러나 다중 해상도 STFT 손실과 과도 억제 방지 손실의 도입, 그리고 방대한 다국어/다환경 데이터셋을 통한 일반화 성능 확보는 이 모델이 프로덕션 레벨에서 견고하게 작동할 수 있는 튼튼한 토대가 되었다. 오픈소스 커뮤니티의 전폭적인 지지와 WebAssembly, CoreML, ONNX 생태계를 딛고 선 DeepFilterNet은 향후 차세대 보청기, AR/VR 공간 컴퓨팅 기기, 그리고 저전력 IoT 통신 장비에서 가장 핵심적인 오디오 전처리 모듈로 확고히 자리 잡을 것으로 전망된다.

 

 

참고 자료

  1. Frequency-Aware Multi-Rate Resampling with Multi-Band Deep Supervision for Modular Speech Denoising - MDPI, https://www.mdpi.com/2079-9292/14/22/4523
  2. DeepFilterNet: AI Behind Noise Reducer Explained, https://noisereducerai.com/blogs/deepfilternet/
  3. [2110.05588] DeepFilterNet: A Low Complexity Speech Enhancement Framework for Full-Band Audio based on Deep Filtering - arXiv, https://arxiv.org/abs/2110.05588
  4. Deep-Learning Framework for Efficient Real-Time Speech Enhancement and Dereverberation - MDPI, https://www.mdpi.com/1424-8220/25/3/630
  5. DeepFilterNet2: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band Audio - ResearchGate, https://www.researchgate.net/publication/360538529_DeepFilterNet2_Towards_Real-Time_Speech_Enhancement_on_Embedded_Devices_for_Full-Band_Audio
  6. DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement - SciSpace, https://scispace.com/papers/deepfilternet-perceptually-motivated-real-time-speech-14dhrgcz
  7. [2305.08227] DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement, https://arxiv.org/abs/2305.08227
  8. DeepFilterNet: Perceptually Motivated Real-Time Speech Enhancement - ResearchGate, https://www.researchgate.net/publication/370776058_DeepFilterNet_Perceptually_Motivated_Real-Time_Speech_Enhancement
  9. Performance of speech enhancement models in video conferences: DeepFilterNet3 and RNNoise - ResearchGate, https://www.researchgate.net/publication/392780104_Performance_of_speech_enhancement_models_in_video_conferences_DeepFilterNet3_and_RNNoise
  10. Deep Multi-Frame Filtering for Hearing Aids - ISCA Archive, https://www.isca-archive.org/interspeech_2023/schroter23_interspeech.pdf
  11. Deep-Learning Framework for Efficient Real-Time Speech Enhancement and Dereverberation - PMC, https://pmc.ncbi.nlm.nih.gov/articles/PMC11820353/
  12. DPDFNet: Boosting DeepFilterNet2 via Dual-Path RNN - arXiv, https://arxiv.org/html/2512.16420v2
  13. DPDFNet: Boosting DeepFilterNet2 via Dual-Path RNN - arXiv, https://arxiv.org/html/2512.16420v3
  14. Deep Filter Estimation from Inter-Frame Correlations for Monaural Speech Dereverberation - arXiv, https://arxiv.org/pdf/2603.14986
  15. Quaternion Self-Attention with Shared Scores - arXiv, https://arxiv.org/html/2605.24920v1
  16. DeepFilterNet3: Real-Time AI Noise Suppression Review and Setup Guide [2026], https://aiadoptionagency.com/deepfilternet-3-noise-suppression/
  17. Clarification on Training Configuration for DeepFilterNet3 (dataset.cfg) · Issue #531 · Rikorose/DeepFilterNet - GitHub, https://github.com/Rikorose/DeepFilterNet/issues/531
  18. (PDF) A Framework for Robust Speaker Verification in Highly Noisy Environments Leveraging Both Noisy and Enhanced Audio - ResearchGate, https://www.researchgate.net/publication/394979320_A_Framework_for_Robust_Speaker_Verification_in_Highly_Noisy_Environments_Leveraging_Both_Noisy_and_Enhanced_Audio
  19. (PDF) Study of Lightweight Transformer Architectures for Single-Channel Speech Enhancement - ResearchGate, https://www.researchgate.net/publication/392121916_Study_of_Lightweight_Transformer_Architectures_for_Single-Channel_Speech_Enhancement
  20. Real-Time Streamable Generative Speech Restoration with Flow Matching - arXiv, https://arxiv.org/html/2512.19442v3
  21. aufklarer/DeepFilterNet3-CoreML - Hugging Face, https://huggingface.co/aufklarer/DeepFilterNet3-CoreML
  22. aTENNuate: Optimized Real-time Speech Enhancement with Deep SSMs on Raw Audio - arXiv, https://arxiv.org/pdf/2409.03377
  23. Deepfilternet Parameters, Sample Rate, Latency, Audio Length - Noise Reducer AI, https://noisereducerai.com/blogs/deepfilternet-parameters/
  24. This is a VST3 plugin that uses the DeepFilterNet3 neural network for high-quality noise suppression. - GitHub, https://github.com/Shuichi346/DeepFilterNet3-VST3
  25. deepfilternet3-noise-filter - Yarn Classic, https://classic.yarnpkg.com/en/package/deepfilternet3-noise-filter
  26. phuvinh010701/livekit-deepfilternet3-noise-filter - GitHub, https://github.com/phuvinh010701/livekit-deepfilternet3-noise-filter
  27. Use Your Phone as a Microphone on Linux - Micstream, https://micstream.io/guides/use-phone-as-mic-linux
  28. Adding DeepFilterNet Noise Reduction to Easy Effects on Arch Linux, https://adamgradzki.com/adding-deepfilternet-noise-reduction-to-easy-effects-on-arch-linux.html
  29. Real-time Microphone Noise Cancellation on Linux | by Gamunu Balagalla - Medium, https://medium.com/@gamunu/linux-noise-cancellation-b9f997f6764d
  30. Pipewire Rnnoise module won't work - Help - NixOS Discourse, https://discourse.nixos.org/t/pipewire-rnnoise-module-wont-work/58975
  31. Package request: DeepFilterNet (LADSPA plugin) · Issue #236646 · NixOS/nixpkgs - GitHub, https://github.com/NixOS/nixpkgs/issues/236646
  32. Deep Learning-based Speech Enhancement for Digital Entertainment Content - DiVA Portal, https://www.diva-portal.org/smash/get/diva2:1987333/FULLTEXT01.pdf
  33. svt/ffmpeg-filter-dnenhance: An FFmpeg audio filter for neural dialogue enhancement using DeepFilterNet 3 (via libdf) - GitHub, https://github.com/svt/ffmpeg-filter-dnenhance
  34. shimondoodkin/deepfilter-rt: Real-time DeepFilterNet noise suppression using ONNX Runtime - GitHub, https://github.com/shimondoodkin/deepfilter-rt
  35. dpdfnet8 with 48khz support · Issue #6 · ceva-ip/DPDFNet - GitHub, https://github.com/ceva-ip/DPDFNet/issues/6
  36. Is there a native compile for the df binary? · Issue #190 · Rikorose/DeepFilterNet - GitHub, https://github.com/Rikorose/DeepFilterNet/issues/190