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.
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.
Arquitectura
DeepFilterNet3 usa una arquitectura de doble decodificador que separa la mejora de la envolvente espectral de la recuperación de detalle espectral fino.
| Etapa | Detalles |
|---|---|
| STFT | Short-time Fourier transform vía vDSP |
| Encoder | 4 capas SepConv2d + SqueezedGRU |
| ERB Decoder | Máscara sigmoide aplicada a bandas de frecuencia en escala ERB |
| DF Decoder | Coeficientes de filtrado complejos de 5 taps |
| iSTFT | STFT 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
- STFT — Descompone el audio ruidoso en una representación tiempo-frecuencia usando vDSP
- Características ERB — Mapea los bins de STFT a bandas de frecuencia en escala ERB
- Red neuronal — El encoder procesa las características en el Neural Engine; los decoders ERB y DF predicen los parámetros de mejora
- Enmascarado ERB — Aplica la máscara de ganancia sigmoide para suprimir el ruido en la envolvente espectral
- Deep filtering — Aplica los coeficientes complejos de 5 taps para la recuperación del detalle espectral fino
- iSTFT — Reconstruye el audio limpio a partir del espectro mejorado
Modelo
| Variante | Tamaño | Precisión |
|---|---|---|
| Por defecto | ~2,2 MB | Pesos 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ón | Descripción |
|---|---|
--output, -o | Ruta del archivo de salida (por defecto <input>_denoised.wav) |
--model | ID de un repositorio de modelo HuggingFace compatible (por defecto: aufklarer/DeepFilterNet3-CoreML) |
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
| Modelo | Tamaño | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML, paletizado de 8 bits) | ~2,2 MB | aufklarer/DeepFilterNet3-CoreML |
Combinación con otros modelos
La mejora de voz es particularmente útil como paso de preprocesamiento antes de otros modelos:
- Antes de la transcripción — Elimina ruido del audio antes de ejecutar ASR para mejorar la tasa de error de palabras en grabaciones con ruido
- Antes del embedding de hablante — Un audio más limpio produce embeddings de hablante más fiables
- Antes de la diarización — La eliminación de ruido puede mejorar la precisión de la segmentación
# 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).