Mejora de voz

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.

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

Variantes del modelo

VarianteTamañoPrecisión
INT8 (por defecto)~2,2 MBCuantizada a 8 bits
FP32~4,3 MBPrecisión completa

El modelo tiene aproximadamente 2,1M parámetros. La variante INT8 se usa por defecto y proporciona calidad equivalente con la mitad del tamaño.

Uso desde la CLI

# Eliminar ruido del audio (salida a _denoised.wav)
.build/release/audio denoise noisy.wav

# Especificar archivo de salida
.build/release/audio denoise noisy.wav -o clean.wav

# Usar variante FP32 del modelo
.build/release/audio denoise noisy.wav --model fp32

Opciones

OpciónDescripción
--output, -oRuta del archivo de salida (por defecto <input>_denoised.wav)
--modelVariante del modelo: int8 (por defecto) o fp32
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 FP16)~4,2 MBaufklarer/DeepFilterNet3-CoreML

Combinación con otros modelos

La mejora de voz es particularmente útil como paso de preprocesamiento antes de otros modelos:

# Eliminar ruido y luego transcribir
.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")

También disponible en Android y Linux vía ONNX Runtime.