Aprimoramento de fala

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.

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

Variantes do modelo

VarianteTamanhoPrecisao
INT8 (padrao)~2.2 MBQuantizado 8-bit
FP32~4.3 MBPrecisao total

O modelo tem aproximadamente 2.1M parametros. A variante INT8 e usada por padrao e fornece qualidade equivalente com metade do tamanho.

Uso do CLI

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

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

# Use FP32 model variant
.build/release/audio denoise noisy.wav --model fp32

Opcoes

OpcaoDescricao
--output, -oCaminho do arquivo de saida (padrao <input>_denoised.wav)
--modelVariante de modelo: int8 (padrao) ou fp32
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 FP16)~4.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/audio denoise noisy.wav -o clean.wav
.build/release/audio transcribe clean.wav

API Swift

import SpeechEnhancement

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

Tambem disponivel em Android e Linux via ONNX Runtime.