음성 향상

DeepFilterNet3를 사용하여 음성 녹음에서 배경 잡음을 제거합니다. 모델은 효율적인 추론을 위해 CoreML을 통해 Neural Engine에서 실행되고, 모든 신호 처리(STFT, ERB 필터뱅크, 딥 필터링)는 Accelerate/vDSP를 통해 CPU에서 실행됩니다.

아키텍처

DeepFilterNet3는 스펙트럼 엔벨로프 향상과 미세한 스펙트럼 디테일 복원을 분리하는 이중 디코더 아키텍처를 사용합니다.

단계세부 내용
STFTvDSP를 통한 short-time Fourier transform
인코더4개의 SepConv2d 레이어 + SqueezedGRU
ERB 디코더ERB 스케일 주파수 대역에 적용되는 sigmoid 마스크
DF 디코더5-탭 복소값 필터링 계수
iSTFT시간 영역 신호를 복원하기 위한 역 STFT

ERB 디코더는 Equivalent Rectangular Bandwidth (ERB) 스케일에서 gain 마스크를 추정하여 넓은 스펙트럼 셰이핑을 처리합니다. DF 디코더는 주파수 영역에서 학습된 필터를 직접 적용하여 미세한 디테일을 위한 5-탭 복소 필터링 계수를 예측합니다.

처리 파이프라인

  1. STFT — vDSP를 사용해 잡음 오디오를 시간-주파수 표현으로 분해
  2. ERB 특징 — STFT 빈을 ERB 스케일 주파수 대역으로 매핑
  3. 신경망 — 인코더가 Neural Engine에서 특징을 처리하고, ERB와 DF 디코더가 향상 파라미터를 예측
  4. ERB 마스킹 — sigmoid gain 마스크를 적용하여 스펙트럼 엔벨로프의 잡음 억제
  5. 딥 필터링 — 미세한 스펙트럼 디테일 복원을 위해 5-탭 복소 계수 적용
  6. iSTFT — 향상된 스펙트럼에서 클린 오디오 복원

모델 변형

변형크기정밀도
INT8 (기본)약 2.2 MB8비트 양자화
FP32약 4.3 MB전체 정밀도

이 모델은 약 2.1M 파라미터를 가집니다. INT8 변형이 기본으로 사용되며 절반 크기로 동등한 품질을 제공합니다.

CLI 사용법

# 오디오 노이즈 제거 (출력은 <filename>_denoised.wav)
.build/release/audio denoise noisy.wav

# 출력 파일 지정
.build/release/audio denoise noisy.wav -o clean.wav

# FP32 모델 변형 사용
.build/release/audio denoise noisy.wav --model fp32

옵션

옵션설명
--output, -o출력 파일 경로 (기본값 <input>_denoised.wav)
--model모델 변형: int8 (기본) 또는 fp32
중요

DeepFilterNet3는 MLX를 통한 GPU가 아니라 CoreML을 통해 Neural Engine에서 실행됩니다. 이는 다른 GPU 기반 모델(ASR, TTS)이 실행 중에도 효율적으로 동작함을 의미합니다. metallib 컴파일이 필요하지 않습니다.

모델 다운로드

모델크기HuggingFace
DeepFilterNet3 (CoreML FP16)약 4.2 MBaufklarer/DeepFilterNet3-CoreML

다른 모델과 결합

음성 향상은 다른 모델 이전의 전처리 단계로 특히 유용합니다:

# 노이즈 제거 후 전사
.build/release/audio denoise noisy.wav -o clean.wav
.build/release/audio transcribe clean.wav

Swift API

import SpeechEnhancement

let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")

ONNX Runtime을 통한 Android 및 Linux에서도 사용할 수 있습니다.