Mejora de voz — DeepFilterNet3

Elimina el ruido de fondo en grabaciones de voz usando DeepFilterNet3. El modelo se ejecuta en el Neural Engine vía CoreML para una inferencia eficiente, mientras que todo el procesamiento de señal (STFT, filterbank ERB, deep filtering) se ejecuta en la CPU vía Accelerate/vDSP.

Paridad con DF3 oficial

Todo el procesamiento DSP sigue libdf: escala de análisis 1/960, alpha de normalización 0.99, taps del filtro profundo con relleno de ceros y orden correcto de matrices NumPy C/Fortran. En un subconjunto fijo de 20 clips de VoiceBank-DEMAND, Swift obtuvo PESQ 3.097, STOI 0.964 y SI-SDR 19.12 dB, frente a 3.029, 0.962 y 18.31 dB del DF3 oficial en Python.

Muestra antes/después

Un clip con ruido procesado con DeepFilterNet3 para oír el denoiser CoreML antes de ejecutarlo localmente.

Entrada con ruidoMP3, 48 kHz
Salida de DeepFilterNet3MP3, 48 kHz

Arquitectura

DeepFilterNet3 usa una arquitectura de doble decodificador que separa la mejora de la envolvente espectral de la recuperación de detalle espectral fino.

EtapaDetalles
STFTShort-time Fourier transform vía vDSP
Encoder4 capas SepConv2d + SqueezedGRU
ERB DecoderMáscara sigmoide aplicada a bandas de frecuencia en escala ERB
DF DecoderCoeficientes de filtrado complejos de 5 taps
iSTFTSTFT inversa para reconstruir la señal en el dominio del tiempo

El ERB Decoder estima una máscara de ganancia en la escala Equivalent Rectangular Bandwidth (ERB), gestionando la conformación espectral amplia. El DF Decoder predice coeficientes de filtrado complejos de 5 taps para el detalle fino, aplicando filtros aprendidos directamente en el dominio de la frecuencia.

Pipeline de procesamiento

  1. STFT — Descompone el audio ruidoso en una representación tiempo-frecuencia usando vDSP
  2. Características ERB — Mapea los bins de STFT a bandas de frecuencia en escala ERB
  3. Red neuronal — El encoder procesa las características en el Neural Engine; los decoders ERB y DF predicen los parámetros de mejora
  4. Enmascarado ERB — Aplica la máscara de ganancia sigmoide para suprimir el ruido en la envolvente espectral
  5. Deep filtering — Aplica los coeficientes complejos de 5 taps para la recuperación del detalle espectral fino
  6. iSTFT — Reconstruye el audio limpio a partir del espectro mejorado

Modelo

VarianteTamañoPrecisión
Por defecto~2,2 MBPesos paletizados de 8 bits, cálculo FP16

Uso desde la 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

Opciones

OpciónDescripción
--output, -oRuta del archivo de salida (por defecto <input>_denoised.wav)
--modelID de un repositorio de modelo HuggingFace compatible (por defecto: aufklarer/DeepFilterNet3-CoreML)
Importante

DeepFilterNet3 se ejecuta en el Neural Engine vía CoreML, no en la GPU vía MLX. Esto significa que funciona eficientemente incluso mientras otros modelos basados en GPU (ASR, TTS) están en ejecución. No se requiere compilación de metallib.

Descargas de modelos

ModeloTamañoHuggingFace
DeepFilterNet3 (CoreML, paletizado de 8 bits)~2,2 MBaufklarer/DeepFilterNet3-CoreML

Combinación con otros modelos

La mejora de voz es particularmente útil como paso de preprocesamiento antes de otros 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)

También disponible en Android y en Linux y Windows mediante Speech Core (ONNX Runtime).