Amélioration de la parole

Supprimez le bruit de fond des enregistrements vocaux avec DeepFilterNet3. Le modèle s'exécute sur le Neural Engine via CoreML pour une inférence efficace, tandis que tout le traitement du signal (STFT, banc de filtres ERB, deep filtering) s'exécute sur le CPU via Accelerate/vDSP.

Architecture

DeepFilterNet3 utilise une architecture à double décodeur qui sépare l'amélioration de l'enveloppe spectrale de la récupération des détails spectraux fins.

ÉtapeDétails
STFTTransformée de Fourier à court terme via vDSP
Encodeur4 couches SepConv2d + SqueezedGRU
Décodeur ERBMasque sigmoïde appliqué aux bandes de fréquence à l'échelle ERB
Décodeur DFCoefficients de filtrage complexes à 5 taps
iSTFTSTFT inverse pour reconstruire le signal dans le domaine temporel

Le décodeur ERB estime un masque de gain sur l'échelle ERB (Equivalent Rectangular Bandwidth), gérant la mise en forme spectrale large. Le décodeur DF prédit des coefficients de filtrage complexes à 5 taps pour les détails fins, appliquant des filtres appris directement dans le domaine fréquentiel.

Pipeline de traitement

  1. STFT — Décompose l'audio bruité en représentation temps-fréquence via vDSP
  2. Caractéristiques ERB — Mappe les bins STFT aux bandes de fréquence à l'échelle ERB
  3. Réseau de neurones — L'encodeur traite les caractéristiques sur Neural Engine ; les décodeurs ERB et DF prédisent les paramètres d'amélioration
  4. Masquage ERB — Applique un masque de gain sigmoïde pour supprimer le bruit dans l'enveloppe spectrale
  5. Deep filtering — Applique les coefficients complexes à 5 taps pour la récupération des détails spectraux fins
  6. iSTFT — Reconstruit l'audio propre à partir du spectre amélioré

Variantes du modèle

VarianteTaillePrécision
INT8 (par défaut)~2,2 MoQuantifié 8 bits
FP32~4,3 MoPleine précision

Le modèle contient environ 2,1M de paramètres. La variante INT8 est utilisée par défaut et offre une qualité équivalente à la moitié de la taille.

Utilisation en CLI

# Débruiter l'audio (sortie vers _denoised.wav)
.build/release/audio denoise noisy.wav

# Spécifier le fichier de sortie
.build/release/audio denoise noisy.wav -o clean.wav

# Utiliser la variante FP32
.build/release/audio denoise noisy.wav --model fp32

Options

OptionDescription
--output, -oChemin du fichier de sortie (par défaut <input>_denoised.wav)
--modelVariante du modèle : int8 (par défaut) ou fp32
Important

DeepFilterNet3 s'exécute sur le Neural Engine via CoreML, pas sur le GPU via MLX. Cela signifie qu'il fonctionne efficacement même lorsque d'autres modèles basés GPU (ASR, TTS) sont en cours d'exécution. Aucune compilation de metallib n'est requise.

Téléchargements des modèles

ModèleTailleHuggingFace
DeepFilterNet3 (CoreML FP16)~4,2 Moaufklarer/DeepFilterNet3-CoreML

Combinaison avec d'autres modèles

L'amélioration de la parole est particulièrement utile comme étape de prétraitement avant d'autres modèles :

# Débruiter puis transcrire
.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")

Également disponible sur Android et Linux via ONNX Runtime.