Aprimoramento de fala — DeepFilterNet3

Remova ruido de fundo de gravacoes de fala usando o DeepFilterNet3. O modelo roda no Neural Engine via CoreML para inferencia eficiente, enquanto todo o processamento de sinais (STFT, banco de filtros ERB, deep filtering) roda na CPU via Accelerate/vDSP.

Paridade com o DF3 oficial

Todo o caminho DSP segue o libdf: escala de análise 1/960, alpha de normalização 0.99, taps do filtro profundo com preenchimento de zeros e ordem correta das matrizes NumPy C/Fortran. Em um subconjunto fixo de 20 clipes do VoiceBank-DEMAND, o Swift obteve PESQ 3,097, STOI 0,964 e SI-SDR 19,12 dB, contra 3,029, 0,962 e 18,31 dB do DF3 oficial em Python.

Amostra antes/depois

Um clipe de fala com ruído processado com DeepFilterNet3 para ouvir o denoiser CoreML antes de executá-lo localmente.

Entrada com ruídoMP3, 48 kHz
Saída DeepFilterNet3MP3, 48 kHz

Arquitetura

DeepFilterNet3 usa uma arquitetura de decodificador duplo que separa o aprimoramento do envelope espectral da recuperacao de detalhe espectral fino.

EstagioDetalhes
STFTShort-time Fourier transform via vDSP
Codificador4 camadas SepConv2d + SqueezedGRU
Decodificador ERBMascara sigmoid aplicada a bandas de frequencia em escala ERB
Decodificador DFCoeficientes de filtragem complexos de 5 taps
iSTFTSTFT inversa para reconstruir o sinal no dominio do tempo

O decodificador ERB estima uma mascara de ganho na escala Equivalent Rectangular Bandwidth (ERB), lidando com modelagem espectral ampla. O decodificador DF preve coeficientes de filtragem complexos de 5 taps para detalhes finos, aplicando filtros aprendidos diretamente no dominio da frequencia.

Pipeline de processamento

  1. STFT — Decompoe o audio ruidoso em representacao tempo-frequencia usando vDSP
  2. Features ERB — Mapeia bins STFT para bandas de frequencia em escala ERB
  3. Rede neural — O codificador processa features no Neural Engine; os decodificadores ERB e DF prevem parametros de aprimoramento
  4. Mascaramento ERB — Aplica mascara de ganho sigmoid para suprimir ruido no envelope espectral
  5. Deep Filtering — Aplica coeficientes complexos de 5 taps para recuperacao de detalhe espectral fino
  6. iSTFT — Reconstroi audio limpo a partir do espectro aprimorado

Modelo

VarianteTamanhoPrecisao
Padrão~2.2 MBPesos paletizados de 8 bits, cálculo FP16

Uso do CLI

# Denoise audio (output to _denoised.wav)
.build/release/speech denoise noisy.wav

# Specify output file
.build/release/speech denoise noisy.wav -o clean.wav

# Use another compatible HuggingFace repository
.build/release/speech denoise noisy.wav --model owner/DeepFilterNet3-CoreML

Opcoes

OpcaoDescricao
--output, -oCaminho do arquivo de saida (padrao <input>_denoised.wav)
--modelID de repositório de modelo HuggingFace compatível (padrão: aufklarer/DeepFilterNet3-CoreML)
Importante

DeepFilterNet3 roda no Neural Engine via CoreML, nao na GPU via MLX. Isso significa que funciona eficientemente mesmo enquanto outros modelos baseados em GPU (ASR, TTS) estao rodando. Nao e necessaria compilacao de metallib.

Downloads de modelos

ModeloTamanhoHuggingFace
DeepFilterNet3 (CoreML, paletizado em 8 bits)~2.2 MBaufklarer/DeepFilterNet3-CoreML

Combinando com outros modelos

O aprimoramento de fala e particularmente util como etapa de pre-processamento antes de outros modelos:

# Denoise then transcribe
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav

API Swift

import SpeechEnhancement

let model = try await SpeechEnhancer.fromPretrained()
let cleanAudio = try model.enhance(audio: noisySamples, sampleRate: 48000)

Também disponível no Android e no Linux e Windows via Speech Core (ONNX Runtime).