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.
| Étape | Détails |
|---|---|
| STFT | Transformée de Fourier à court terme via vDSP |
| Encodeur | 4 couches SepConv2d + SqueezedGRU |
| Décodeur ERB | Masque sigmoïde appliqué aux bandes de fréquence à l'échelle ERB |
| Décodeur DF | Coefficients de filtrage complexes à 5 taps |
| iSTFT | STFT 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
- STFT — Décompose l'audio bruité en représentation temps-fréquence via vDSP
- Caractéristiques ERB — Mappe les bins STFT aux bandes de fréquence à l'échelle ERB
- 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
- Masquage ERB — Applique un masque de gain sigmoïde pour supprimer le bruit dans l'enveloppe spectrale
- Deep filtering — Applique les coefficients complexes à 5 taps pour la récupération des détails spectraux fins
- iSTFT — Reconstruit l'audio propre à partir du spectre amélioré
Variantes du modèle
| Variante | Taille | Précision |
|---|---|---|
| INT8 (par défaut) | ~2,2 Mo | Quantifié 8 bits |
| FP32 | ~4,3 Mo | Pleine 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
| Option | Description |
|---|---|
--output, -o | Chemin du fichier de sortie (par défaut <input>_denoised.wav) |
--model | Variante du modèle : int8 (par défaut) ou fp32 |
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èle | Taille | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML FP16) | ~4,2 Mo | aufklarer/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 :
- Avant la transcription — Débruiter l'audio avant l'ASR pour améliorer le taux d'erreur sur les enregistrements bruités
- Avant l'empreinte de locuteur — Un audio plus propre produit des empreintes de locuteur plus fiables
- Avant la diarisation — La suppression du bruit peut améliorer la précision de la segmentation
# 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.