Sprachverbesserung
Entferne Hintergrundgeräusche aus Sprachaufnahmen mit DeepFilterNet3. Das Modell läuft für effiziente Inferenz auf der Neural Engine über CoreML, während die gesamte Signalverarbeitung (STFT, ERB-Filterbank, Deep Filtering) auf der CPU über Accelerate/vDSP läuft.
Architektur
DeepFilterNet3 verwendet eine Dual-Decoder-Architektur, die spektrale Hüllenverbesserung von der Wiederherstellung feiner spektraler Details trennt.
| Stufe | Details |
|---|---|
| STFT | Kurzzeit-Fourier-Transformation über vDSP |
| Encoder | 4 SepConv2d-Schichten + SqueezedGRU |
| ERB-Decoder | Sigmoid-Maske, angewendet auf ERB-Skalen-Frequenzbänder |
| DF-Decoder | 5-Tap-komplexwertige Filterkoeffizienten |
| iSTFT | Inverse STFT zur Rekonstruktion des Zeitbereich-Signals |
Der ERB-Decoder schätzt eine Verstärkungsmaske auf der Equivalent-Rectangular-Bandwidth-Skala (ERB) und übernimmt die grobe spektrale Formung. Der DF-Decoder sagt 5-Tap-komplexwertige Filterkoeffizienten für feine Details voraus und wendet gelernte Filter direkt im Frequenzbereich an.
Verarbeitungs-Pipeline
- STFT — Zerlegt das verrauschte Audio über vDSP in eine Zeit-Frequenz-Darstellung
- ERB-Features — Bildet STFT-Bins auf ERB-Skalen-Frequenzbänder ab
- Neuronales Netzwerk — Der Encoder verarbeitet die Features auf der Neural Engine; ERB- und DF-Decoder sagen Verbesserungsparameter voraus
- ERB-Masking — Wendet die Sigmoid-Verstärkungsmaske zur Rauschunterdrückung in der spektralen Hülle an
- Deep Filtering — Wendet 5-Tap-komplexwertige Koeffizienten zur Wiederherstellung feiner spektraler Details an
- iSTFT — Rekonstruiert sauberes Audio aus dem verbesserten Spektrum
Modellvarianten
| Variante | Größe | Präzision |
|---|---|---|
| INT8 (Standard) | ~2,2 MB | 8-Bit-quantisiert |
| FP32 | ~4,3 MB | Volle Präzision |
Das Modell hat etwa 2,1M Parameter. Die INT8-Variante wird standardmäßig verwendet und bietet gleichwertige Qualität bei halber Größe.
CLI-Verwendung
# Audio entrauschen (Ausgabe nach _denoised.wav)
.build/release/audio denoise noisy.wav
# Ausgabedatei angeben
.build/release/audio denoise noisy.wav -o clean.wav
# FP32-Modellvariante verwenden
.build/release/audio denoise noisy.wav --model fp32
Optionen
| Option | Beschreibung |
|---|---|
--output, -o | Pfad der Ausgabedatei (standardmäßig <input>_denoised.wav) |
--model | Modellvariante: int8 (Standard) oder fp32 |
DeepFilterNet3 läuft auf der Neural Engine über CoreML, nicht auf der GPU über MLX. Das bedeutet, es funktioniert effizient, auch während andere GPU-basierte Modelle (ASR, TTS) laufen. Keine metallib-Kompilierung erforderlich.
Modell-Downloads
| Modell | Größe | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML FP16) | ~4,2 MB | aufklarer/DeepFilterNet3-CoreML |
Kombination mit anderen Modellen
Sprachverbesserung ist besonders nützlich als Vorverarbeitungsschritt vor anderen Modellen:
- Vor der Transkription — Audio vor dem ASR-Lauf entrauschen, um die Wortfehlerrate bei verrauschten Aufnahmen zu verbessern
- Vor Sprechereinbettungen — Saubereres Audio erzeugt zuverlässigere Sprechereinbettungen
- Vor der Diarisierung — Rauschentfernung kann die Segmentierungsgenauigkeit verbessern
# Entrauschen, dann transkribieren
.build/release/audio denoise noisy.wav -o clean.wav
.build/release/audio transcribe clean.wav
Swift-API
import SpeechEnhancement
let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")
Auch verfügbar auf Android & Linux über ONNX Runtime.